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.
# .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. BuildLes 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 :
# 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 à minuitJob
Un ensemble d'étapes qui s'exécutent sur une même machine virtuelle. Les jobs sont parallèles par défaut.
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.
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
# 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 disponibleVoir 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.
# 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