L’intégration continue (CI/CD) semble parfois complexe, réservée aux experts DevOps. Pourtant, GitHub a démocratisé cette pratique grâce à GitHub Actions. Cet outil directement intégré à vos dépôts permet d’automatiser des tâches en réaction à des événements (comme la création d’une Pull Request ou un push sur main).
Si vous souhaitez automatiser vos tests, formater votre code ou déployer vos applications sans effort, voici les concepts clés pour bien démarrer.
L’anatomie d’un Workflow GitHub Actions
Pour comprendre GitHub Actions, il suffit de maîtriser quatre concepts fondamentaux qui s’emboîtent les uns dans les autres :
1. Le Workflow (Le scénario)
Un workflow est une procédure automatisée globale que vous ajoutez à votre dépôt. Il est décrit dans un fichier au format YAML et doit obligatoirement être placé dans le dossier .github/workflows/. Vous pouvez avoir plusieurs workflows dans un même projet (un pour les tests, un pour le déploiement, etc.).
2. Le Trigger / Event (Le déclencheur)
C’est l’événement qui va donner le top départ à votre workflow. Par exemple :
- Un
pushsur la branche principale. - L’ouverture d’une
pull_request. - Un horaire précis (via un cron).
3. Les Jobs (Les étapes majeures)
Un workflow est composé d’un ou plusieurs jobs. Par défaut, si vous avez plusieurs jobs, ils s’exécutent en parallèle. Chaque job s’exécute sur sa propre machine virtuelle (appelée un Runner), comme une instance Ubuntu, Windows ou macOS fournie par GitHub.
4. Les Steps et Actions (Les micro-tâches)
À l’intérieur d’un job, on trouve une suite séquentielle de steps (étapes). Une étape peut être une simple commande de terminal (ex: npm run test) ou une Action prête à l’emploi issue de la communauté (ex: une action pour se connecter à un serveur ou envoyer un message Slack).
Votre premier exemple pratique
Voici à quoi ressemble un fichier concret. Créez un fichier .github/workflows/ci.yml et copiez-y ce code :
# Le nom de votre scénario
name: Vérification du Code
# Le déclencheur : à chaque fois qu'on pousse du code sur main
on:
push:
branches: [main]
# Ce que le scénario doit faire
jobs:
test-application:
# La machine virtuelle qui va exécuter le travail
runs-on: ubuntu-latest
# La liste des étapes à suivre
steps:
# Étape 1 : Récupérer le code du dépôt sur la VM
- name: Récupération du code
uses: actions/checkout@v4
# Étape 2 : Installer Node.js sur la VM
- name: Installation de Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
# Étape 3 : Installer les dépendances et lancer les tests
- name: Exécution des tests
run: |
npm ci
npm run test