Explorer le flux d’actions

Effectué

Comprendre comment les flux de travail GitHub Actions s’exécutent de début à fin vous aide à concevoir des pipelines d’automatisation efficaces et à résoudre efficacement les problèmes.

Diagramme de flux GitHub Actions montrant les événements qui déclenchent des flux de travail qui contiennent des travaux à l’aide d’actions.

Flux d’exécution GitHub Actions

Détection et déclenchement d’événements

GitHub surveille en permanence votre dépôt pour des événements spécifiques qui peuvent lancer des flux de travail :

Événements de dépôt :

  • Envois (push) de code vers des branches
  • Création, mise à jour ou fusion de pull requests
  • Problème de création ou de modification
  • Publication de mise en production

Événements planifiés :

  • Planifications temporelles basées sur Cron
  • Tâches de maintenance périodiques

Événements externes :

  • Déclencheurs de flux de travail manuels via l’interface utilisateur ou l’API GitHub
  • Appels de webhook depuis des systèmes externes
  • Événements de répartition du référentiel à partir d’intégrations tierces

Orchestration de flux de travail

Une fois déclenché, GitHub Actions traite votre flux de travail :

Analyse de flux de travail :

  • Lit le fichier de flux de travail YAML à partir de .github/workflows/
  • Valide la syntaxe et la configuration
  • Détermine les dépendances de travail et l’ordre d’exécution

Allocation de l’exécuteur :

  • Affecte les exécuteurs appropriés (hébergés par GitHub ou auto-hébergés)
  • Provisionne des environnements virtuels propres pour chaque travail
  • Configurer les systèmes d’exploitation et les logiciels requis

Exécution et coordination des travaux

Exécution parallèle (valeur par défaut) :

jobs:
  lint: # Runs simultaneously
  test: # Runs simultaneously
  security-scan: # Runs simultaneously

Exécution séquentielle (avec dépendances) :

jobs:
  build:
    runs-on: ubuntu-latest

  test:
    needs: build # Waits for build to complete
    runs-on: ubuntu-latest

  deploy:
    needs: [build, test] # Waits for both jobs
    runs-on: ubuntu-latest

Exécution d’actions dans les tâches

Chaque travail exécute ses étapes de manière séquentielle :

  1. Préparation de l’environnement : configuration et extraction de l’exécuteur
  2. Résolution d’action : Télécharger et mettre en cache les actions requises
  3. Exécution de l’étape : Exécuter des commandes et des actions dans l’ordre
  4. Gestion des artefacts : Enregistrer et partager des fichiers entre les travaux
  5. Nettoyage : supprimer l’environnement et libérer des ressources

Résultats et commentaires

Une fois l’opération terminée, GitHub Actions fournit des commentaires complets :

Rapports d’état :

  • Indicateurs de réussite/échec d’étape individuelle
  • Métriques de statut et de durée au niveau du poste
  • État et résumé globaux du flux de travail

Intégration des notifications :

  • Notifications par e-mail pour les échecs de flux de travail
  • Intégration de Slack, Teams ou webhook personnalisé
  • Vérifications d’état sur les demandes de tirage

Stratégies d’optimisation de flux

Conception efficace des travaux

jobs:
  # Fast feedback loop - run linting first
  lint:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Lint code
        run: npm run lint

  # Resource-intensive jobs run in parallel
  test:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        node-version: [18, 20, 22]

  # Deploy only after all checks pass
  deploy:
    needs: [lint, test]
    if: github.ref == 'refs/heads/main'
    runs-on: ubuntu-latest

Exécution conditionnelle

Contrôler le comportement du flux de travail en fonction du contexte :

jobs:
  build:
    runs-on: ubuntu-latest

  deploy-staging:
    needs: build
    if: github.ref == 'refs/heads/develop'
    runs-on: ubuntu-latest

  deploy-production:
    needs: build
    if: github.ref == 'refs/heads/main' && github.event_name == 'push'
    runs-on: ubuntu-latest

Cette conception de flux garantit que les flux de travail sont efficaces, prévisibles et fournissent des commentaires clairs tout au long du processus d’automatisation.