BaliseTonSite

GitHub Actions : les bases

Le moteur de ta chaîne de montage. Comprends les workflows, jobs et steps.

Structure d'un workflow

Un workflow est un fichier YAML dans le dossier .github/workflows/. Il décrit quand exécuter et quoi exécuter.

Bashbash
# .github/workflows/ci.yml
name: CI                          # Nom du workflow (affiché dans GitHub)

on:                               # QUAND déclencher
  push:
    branches: [main]              # A chaque push sur main
  pull_request:
    branches: [main]              # A chaque PR vers main

jobs:                             # QUOI exécuter
  build:                          # Nom du job
    runs-on: ubuntu-latest        # Machine virtuelle

    steps:                        # Étapes séquentielles
      - uses: actions/checkout@v4 # 1. Récupérer le code
      - uses: actions/setup-node@v4
        with:
          node-version: 20        # 2. Installer Node.js
      - run: npm ci               # 3. Installer les dépendances
      - run: npm run lint         # 4. Linter
      - run: npm run build        # 5. Build

Les concepts clés

Workflow

Le fichier YAML complet. Un repo peut avoir plusieurs workflows (un pour la CI, un pour le déploiement, un pour les releases...).

Trigger (on:)

L'événement qui déclenche le workflow. Les plus courants :

Bashbash
# Triggers les plus utilisés :
on:
  push:                    # A chaque push
    branches: [main, dev]  # Sur ces branches uniquement

  pull_request:            # A chaque PR
    branches: [main]

  workflow_dispatch:       # Déclenchement manuel (bouton dans GitHub)

  schedule:                # Planifié (cron)
    - cron: '0 0 * * 1'   # Chaque lundi à minuit

Job

Un ensemble d'étapes qui s'exécutent sur une même machine virtuelle. Les jobs sont parallèles par défaut.

Bashbash
jobs:
  lint:                    # Job 1 : lint
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - run: npm ci
      - run: npm run lint

  build:                   # Job 2 : build (parallèle au lint)
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - run: npm ci
      - run: npm run build

  deploy:                  # Job 3 : déployer APRES lint et build
    needs: [lint, build]   # Attend que les 2 jobs précédents passent
    runs-on: ubuntu-latest
    steps:
      - run: echo "Déploiement..."

Step

Une commande ou une action réutilisable. Les steps s'exécutent séquentiellement dans un job.

Bashbash
steps:
  # Step avec une action GitHub (uses:)
  - uses: actions/checkout@v4     # Action pré-faite par GitHub
    with:
      fetch-depth: 0              # Paramètre de l'action

  # Step avec une commande (run:)
  - name: Installer les dépendances  # Nom affiché dans les logs
    run: npm ci

  # Step multi-lignes
  - name: Build et vérification
    run: |
      npm run build
      echo "Build terminé avec succès"

Le cache pour accélérer

Bashbash
# Mettre en cache node_modules pour gagner du temps
steps:
  - uses: actions/checkout@v4
  - uses: actions/setup-node@v4
    with:
      node-version: 20
      cache: 'npm'           # Cache automatique de npm
  - run: npm ci              # Utilise le cache si disponible

Voir les résultats

Après un push, va dans l'onglet Actions de ton repo GitHub. Tu y vois chaque exécution avec les logs détaillés de chaque step.

Bashbash
# Statuts possibles :
# Vert (success) : tout est passé
# Rouge (failure) : un step a échoué
# Jaune (in progress) : en cours d'exécution
# Gris (cancelled) : annulé manuellement

# Chaque PR affiche le statut de la CI :
# "All checks have passed" ou "Some checks were not successful"

Ce que tu as débloqué

  • Structure d'un fichier workflow YAML
  • Triggers : push, pull_request, workflow_dispatch
  • Jobs parallèles et séquentiels (needs:)
  • Steps : actions (uses:) et commandes (run:)
  • Le cache npm pour accélérer la CI

Verifie tes acquis

5 questions pour valider ce chapitre

1. Où sont stockés les workflows GitHub Actions ?

Valide et sauvegarde ce chapitre

Ne perds pas le fil de ton apprentissage. Chaque QCM terminé sauvegarde ton score. Crée ton profil gratuitement pour débloquer toutes les évaluations du site et retrouver tes résultats plus tard.

Commencer l'aventure
Déjà membre ?Connecte-toi