Comprendre les flux de travail

Effectué

Les flux de travail sont des processus automatisés que vous définissez pour générer, tester, empaqueter, mettre en production ou déployer votre projet. Ils se composent d’un ou plusieurs travaux qui s’exécutent en réponse à des événements spécifiques dans votre référentiel.

Structure de flux de travail

Chaque flux de travail inclut ces composants clés :

Déclencheurs (événements)

Définissez quand votre flux de travail doit s’exécuter : sur push, pull request, sur une base planifiée ou déclenchement manuel.

Jobs

Ensemble d’étapes qui s’exécutent sur le même exécuteur. Les travaux s’exécutent en parallèle par défaut, mais peuvent être configurés pour s’exécuter de manière séquentielle.

Étapes

Tâches individuelles au sein d’un travail qui peuvent exécuter des commandes, configurer des tâches ou utiliser des actions.

Exécuteurs

Environnement de calcul dans lequel vos travaux s’exécutent , hébergés par GitHub ou auto-hébergés.

Emplacement et nommage du flux de travail

Les flux de travail sont stockés sous forme de fichiers YAML dans le .github/workflows répertoire de votre référentiel. Le nom de fichier devient l’identificateur de flux de travail dans l’interface utilisateur GitHub.

Exemple de flux de travail moderne

Voici un exemple complet utilisant les meilleures pratiques actuelles :

# .github/workflows/ci.yml
name: CI Pipeline

on:
  push:
    branches: [main, develop]
  pull_request:
    branches: [main]
  schedule:
    - cron: "0 2 * * 0" # Weekly dependency check

env:
  NODE_VERSION: "20"

jobs:
  test:
    name: Test and Lint
    runs-on: ubuntu-latest

    steps:
      - name: Checkout repository
        uses: actions/checkout@v4

      - name: Setup Node.js
        uses: actions/setup-node@v4
        with:
          node-version: ${{ env.NODE_VERSION }}
          cache: "npm"

      - name: Install dependencies
        run: npm ci

      - name: Run linting
        run: npm run lint

      - name: Run tests with coverage
        run: npm run test:coverage

      - name: Upload coverage reports
        uses: codecov/codecov-action@v3
        with:
          token: ${{ secrets.CODECOV_TOKEN }}

  build:
    name: Build Application
    runs-on: ubuntu-latest
    needs: test

    steps:
      - name: Checkout repository
        uses: actions/checkout@v4

      - name: Setup Node.js
        uses: actions/setup-node@v4
        with:
          node-version: ${{ env.NODE_VERSION }}
          cache: "npm"

      - name: Install dependencies
        run: npm ci

      - name: Build application
        run: npm run build

      - name: Upload build artifacts
        uses: actions/upload-artifact@v4
        with:
          name: build-files
          path: dist/

Améliorations clés des flux de travail modernes

Cet exemple illustre les meilleures pratiques actuelles :

  • Dernières versions des actions : utilisation @v4 de versions d’actions populaires
  • Mise en cache des dépendances : accélère l’exécution du flux de travail
  • Variables d’environnement : gestion centralisée de la configuration
  • Dépendances de travail : le travail build s’exécute uniquement après test avoir réussi
  • Gestion des artefacts : stockage et partage appropriés des sorties de build
  • Sécurité : utilisation de secrets pour des données sensibles telles que des jetons

Ressources supplémentaires

Explorez ces ressources pour améliorer vos connaissances de flux de travail :