Ton premier workflow
Où placer un fichier workflow ?
GitHub Actions lit automatiquement les fichiers de workflow qui se trouvent dans un dossier précis de ton dépôt :
.github/workflows/. Tout fichier .yml ou .yaml dans ce dossier est un workflow potentiel.
Le dossier .github/ est un dossier spécial reconnu par GitHub. Il peut contenir des templates d'issues, des règles de contribution, et bien sûr, tes workflows. Crée-le à la racine de ton dépôt s'il n'existe pas.
La structure minimale de ton dépôt ressemble à ceci :
mon-projet/
├── .github/
│ └── workflows/
│ └── mon-workflow.yml ← ton fichier workflow
├── src/
└── package.json
Anatomie d'un fichier workflow YAML
Un workflow est un fichier YAML structuré en plusieurs clés obligatoires. Voici les blocs essentiels, annotés ligne par ligne :
# Nom affiché dans l'onglet "Actions" de GitHub
name: Mon premier workflow
# Événements qui déclenchent ce workflow
on:
push: # se déclenche à chaque push
branches:
- main # uniquement sur la branche main
pull_request: # et sur les pull requests
# Liste des jobs à exécuter
jobs:
mon-job: # identifiant du job (choisi par toi)
runs-on: ubuntu-latest # type de runner (machine virtuelle)
# Étapes exécutées dans l'ordre
steps:
- name: Étape 1 # nom affiché dans les logs
run: echo "Bonjour !" # commande shell à exécuter
Chaque bloc a un rôle précis :
name— le titre du workflow, visible dans l'interface GitHub.on— les événements déclencheurs (push, PR, cron, manuel…).jobs— un ou plusieurs jobs qui s'exécutent en parallèle ou en séquence.runs-on— le type de machine virtuelle fournie par GitHub (runner).steps— la liste ordonnée des actions à effectuer dans ce job.
Ton premier workflow "Hello World"
Voici le workflow le plus simple possible. Il affiche un message dans les logs à chaque push sur main.
C'est le point de départ idéal pour vérifier que tout fonctionne.
name: Hello World
on:
push:
branches:
- main
jobs:
dire-bonjour:
runs-on: ubuntu-latest
steps:
- name: Afficher un message
run: echo "Bonjour depuis GitHub Actions !"
- name: Afficher la date
run: date
- name: Lister les fichiers
run: ls -la
Pour tester ce workflow : crée le fichier dans ton dépôt, pousse un commit sur main, puis ouvre l'onglet Actions sur GitHub. Tu verras ton workflow s'exécuter en temps réel.
Les déclencheurs courants (on)
La clé on accepte une grande variété d'événements. Voici les plus utilisés au quotidien :
on:
# Déclenché à chaque push sur les branches listées
push:
branches:
- main
- develop
# Déclenché quand une pull request est ouverte ou mise à jour
pull_request:
branches:
- main
# Déclenché manuellement depuis l'interface GitHub
workflow_dispatch:
# Déclenché selon un planning (syntaxe cron)
schedule:
- cron: "0 8 * * 1-5" # tous les jours de semaine à 8h UTC
Le déclencheur workflow_dispatch est particulièrement utile en développement : il ajoute un bouton
"Run workflow" dans l'onglet Actions de GitHub, ce qui te permet de lancer le workflow à la demande
sans avoir à pousser un commit.
La syntaxe cron de schedule utilise le fuseau UTC. Pense à ajuster si tu veux une heure française (UTC+1 en hiver, UTC+2 en été).
Workflow CI pour un projet Node.js
En pratique, le workflow CI le plus courant enchaîne trois actions : récupérer le code, configurer l'environnement,
puis exécuter les tests. GitHub met à disposition des actions officielles (préfixées uses:)
pour simplifier ces étapes.
name: CI Node.js
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
tests:
runs-on: ubuntu-latest
steps:
# 1. Récupère le code du dépôt dans le runner
- name: Checkout du code
uses: actions/checkout@v4
# 2. Installe Node.js dans la version souhaitée
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: "20"
cache: "npm" # met en cache node_modules
# 3. Installe les dépendances
- name: Installer les dépendances
run: npm ci # npm ci est plus strict que npm install
# 4. Lance les tests
- name: Lancer les tests
run: npm test
Deux mots-clés nouveaux apparaissent ici :
uses— invoque une action GitHub réutilisable (hébergée sur GitHub). La syntaxe estpropriétaire/action@version.with— passe des paramètres à l'action (équivalent d'arguments de fonction).
actions/checkout@v4 et actions/setup-node@v4 sont des actions officielles maintenues par GitHub. Tu les trouveras dans presque tous les workflows Node.js. Utilise toujours une version explicite (@v4) pour éviter les surprises si l'action évolue.
Visualiser les résultats dans l'onglet "Actions"
Une fois ton workflow poussé sur GitHub, tout se passe dans l'onglet Actions de ton dépôt. Voici ce que tu vas y trouver :
- Liste des exécutions — chaque push ou PR déclenche une nouvelle ligne avec son statut (vert ✓, rouge ✗, jaune en cours).
- Détail d'un run — clique sur une exécution pour voir tous les jobs qu'elle contient.
- Logs d'un job — clique sur un job pour voir chaque step et ses logs en temps réel.
- Re-lancer un job — en cas d'échec, un bouton "Re-run jobs" relance uniquement les étapes en erreur.
Un cercle vert à côté d'un commit dans la liste des commits indique que tous les workflows sont passés. Un cercle rouge signale un échec. Tu peux cliquer dessus pour accéder directement aux logs sans passer par l'onglet Actions.
- Les workflows se placent dans
.github/workflows/à la racine du dépôt. - Les quatre clés de base :
name,on,jobs,steps. runs-on: ubuntu-latestutilise une machine virtuelle Linux fournie par GitHub.run:exécute une commande shell —uses:invoque une action réutilisable.workflow_dispatchajoute un bouton "Run workflow" pour déclencher manuellement.- Les résultats sont visibles dans l'onglet Actions du dépôt GitHub.