Créer ton premier pipeline CI/CD avec GitHub Actions

1. Introduction

GitHub Actions est un service d'intégration et de déploiement continu directement intégré à GitHub. Il te permet d'automatiser les tests, le linting, le déploiement et plus encore, à chaque push ou pull request.

Dans ce tutoriel, tu vas apprendre à :

  • Créer un workflow GitHub Actions
  • Configurer un pipeline de test automatisé
  • Exécuter ce pipeline à chaque push sur ton dépôt

2. Prérequis

  • Un compte GitHub
  • Un dépôt contenant ton projet (Node.js, React, Python…)
  • Un fichier package.json (pour les projets Node.js)
  • Git installé sur ta machine

3. Créer ton premier pipeline

Un pipeline GitHub Actions est défini dans un fichier YAML.
Crée un répertoire : .github/workflows/ à la racine de ton dépôt. Ensuite, crée un fichier ci.yml.

Ajoute ce contenu :

name: learn-github-actions
run-name: ${{ github.actor }} is learning GitHub Actions
on: [push]

jobs:
  check-bats-version:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v5
      - uses: actions/setup-node@v4
        with:
          node-version: '20'
      - run: npm install -g bats
      - run: bats -v

Fais ensuite un commit et un push pour envoyer ces modifications. Le workflow s'exécutera automatiquement à chaque push sur la branche main.

4. Lancer et vérifier ton workflow

Une fois ton fichier .yml poussé :

  • Va sur ton dépôt GitHub
  • Ouvre l'onglet Actions
  • GitHub Actions
  • Ton pipeline apparaîtra et s'exécutera automatiquement
  • GitHub Actions

Si tout est bon, une coche verte apparaîtra.

GitHub Actions
En cas d'erreur, tu peux consulter les logs pour identifier le problème.
GitHub Actions

5. Comprendre le fichier workflow

Pour mieux comprendre comment fonctionne la syntaxe YAML dans un fichier GitHub Actions, analysons chaque ligne de l'exemple présenté précédemment. Cela t'aidera à savoir exactement ce que fait ton workflow et comment l'adapter.

  • name: learn-github-actions
    (Optionnel). Nom du workflow tel qu'il apparaît dans l'onglet Actions du dépôt GitHub. Si cette ligne est absente, GitHub utilisera par défaut le nom du fichier.
  • run-name: ${{ github.actor }} is learning GitHub Actions
    (Optionnel). Nom donné à chaque exécution (run) du workflow. Ici, on utilise une expression qui récupère l'utilisateur ayant déclenché le workflow. Cela permet d'afficher par exemple : “Essi is learning GitHub Actions”.
  • on: [push]
    Déclencheur du workflow. Ici, le pipeline se lance à chaque push sur n'importe quelle branche. Il existe d'autres déclencheurs (branches spécifiques, tags, chemins, etc.).
  • jobs:
    Regroupe tous les jobs du workflow. Un workflow peut contenir un ou plusieurs jobs, exécutés en parallèle ou en séquence.
  • check-bats-version:
    Nom du job. Tout ce qui est indenté dessous correspond aux étapes et propriétés de ce job.
  • runs-on: ubuntu-latest
    Spécifie la machine utilisée pour exécuter le job. Ici : un runner Ubuntu fraîchement préparé par GitHub. D'autres runners existent (Windows, macOS, self-hosted…).
  • steps:
    Liste des étapes exécutées par le job. Chaque élément de cette liste est une action ou une commande shell.
  • - uses: actions/checkout@v5
    Télécharge (checkout) ton dépôt sur la machine du runner. C'est nécessaire si tu veux accéder à ton code dans les étapes suivantes.
  • - uses: actions/setup-node@v4
    Installe Node.js sur la machine. La clé with: permet de préciser la version souhaitée. Dans notre cas : node-version: '20'
  • - run: npm install -g bats
    Exécute une commande shell sur la machine. Ici : installation globale du paquet bats, un outil de test.
  • - run: bats -v
    Exécute la commande bats -v pour afficher la version du logiciel. Cela sert de vérification finale.

6. Astuces et bonnes pratiques

  • Nommer clairement chaque étape du workflow.
  • Utiliser des actions officielles.
  • Limiter le déclenchement à certaines branches.
  • Ajouter un badge dans ton README.
![CI](https://github.com/<ton-user>/<ton-repo>/actions/workflows/ci.yml/badge.svg)

7. Conclusion

Félicitations ! Tu viens de créer ton premier pipeline CI/CD. Pour aller plus loin avec Github Actions, je te conseille de consulter la documentation officielle. Dans le prochain tutoriel, on verra le déploiement automatique sur Gitlab.

← Retour à la série← Retour au blog