Aller au contenu principal

Construire un pipeline CI/CD avec GitHub Actions

· 2 minutes de lecture
Judith Lopez
Ingénieure CI/CD & Automatisation @ InSkillOps

Un bon pipeline CI/CD transforme chaque git push en un livrable testé et prêt à déployer. GitHub Actions permet de le faire directement depuis votre dépôt, sans serveur à gérer.

Anatomie d'un workflow

Un workflow se déclenche sur un événement (push, pull request…) et exécute des jobs composés de steps. Créez .github/workflows/ci.yml :

name: CI

on:
push:
branches: [main]
pull_request:

jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20
cache: npm
- run: npm ci
- run: npm test

À ce stade, chaque push et chaque PR lancent automatiquement les tests.

Ajouter le build et la publication d'image

On enchaîne un second job qui construit l'image Docker et la publie, uniquement sur main :

  build-and-push:
needs: test
if: github.ref == 'refs/heads/main'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- uses: docker/build-push-action@v6
with:
push: true
tags: ghcr.io/${{ github.repository }}:latest

Bonnes pratiques

  • needs pour enchaîner les jobs et ne builder que si les tests passent ;
  • des secrets GitHub plutôt que des valeurs en dur ;
  • le cache des dépendances pour accélérer les runs ;
  • des workflows courts et lisibles, découpés par responsabilité.

Vers le GitOps

L'étape suivante consiste à faire déployer automatiquement l'image publiée par un outil comme Argo CD ou Flux, qui synchronise l'état du cluster avec un dépôt Git. C'est le cœur de l'approche GitOps, que nous abordons dans nos cours.