Publie le 24 mars 2026 Par

CI/CD avec GitHub Actions : automatiser tests et déploiement de A à Z

GitHub Actions est devenu l’outil CI/CD de référence en 2026 — gratuit pour les repos publics, intégré à GitHub, et avec un écosystème d’actions communautaires qui couvre presque tous les cas. Ce guide vous montre comment créer un pipeline complet : tests automatiques à chaque PR, déploiement automatique sur la branche main.

Comment GitHub Actions fonctionne

GitHub Actions exécute des workflows définis en YAML dans .github/workflows/. Un workflow est déclenché par un événement (push, pull_request, schedule) et exécute des jobs composés d’étapes (steps).

# Structure d'un workflow
.github/
└── workflows/
    ├── ci.yml        # Tests à chaque push/PR
    └── deploy.yml    # Déploiement sur merge main

Pipeline CI — tests automatiques

# .github/workflows/ci.yml
name: CI

on:
  push:
    branches: [main, develop]
  pull_request:
    branches: [main]

jobs:
  test:
    runs-on: ubuntu-latest

    services:
      # Base de données pour les tests d'intégration
      postgres:
        image: postgres:16-alpine
        env:
          POSTGRES_DB: testdb
          POSTGRES_USER: postgres
          POSTGRES_PASSWORD: postgres
        options: >-
          --health-cmd pg_isready
          --health-interval 10s
          --health-timeout 5s
          --health-retries 5
        ports:
          - 5432:5432

    steps:
      - name: Checkout
        uses: actions/checkout@v4

      - name: Setup Node.js
        uses: actions/setup-node@v4
        with:
          node-version: '20'
          cache: 'npm'

      - name: Install dependencies
        run: npm ci

      - name: Type checking
        run: npm run type-check

      - name: Lint
        run: npm run lint

      - name: Run tests
        env:
          DATABASE_URL: postgresql://postgres:postgres@localhost:5432/testdb
        run: |
          npx prisma migrate deploy
          npm test

      - name: Build
        run: npm run build

Pipeline CD — déploiement automatique

# .github/workflows/deploy.yml
name: Deploy

on:
  push:
    branches: [main]  # seulement sur main

jobs:
  deploy:
    runs-on: ubuntu-latest
    needs: [test]  # attendre que la CI passe

    steps:
      - uses: actions/checkout@v4

      - name: Build and push Docker image
        uses: docker/build-push-action@v5
        with:
          context: .
          push: true
          tags: ${{ secrets.REGISTRY }}/mon-app:${{ github.sha }}
        env:
          DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
          DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}

      - name: Deploy to VPS
        uses: appleboy/ssh-action@v1
        with:
          host: ${{ secrets.VPS_HOST }}
          username: ${{ secrets.VPS_USER }}
          key: ${{ secrets.VPS_SSH_KEY }}
          script: |
            docker pull ${{ secrets.REGISTRY }}/mon-app:${{ github.sha }}
            docker compose -f /app/docker-compose.prod.yml up -d --no-deps app
            docker system prune -f

Les secrets GitHub

Ne jamais mettre de credentials dans les fichiers YAML. Stockez-les dans Settings → Secrets and variables → Actions de votre repo :

# Accéder aux secrets dans un workflow
env:
  DATABASE_URL: ${{ secrets.DATABASE_URL }}
  API_KEY: ${{ secrets.API_KEY }}

# Les secrets ne sont jamais affichés dans les logs — GitHub les masque automatiquement

Actions utiles de la communauté

  • actions/checkout@v4 — cloner le repo
  • actions/setup-node@v4 — installer Node.js avec cache
  • actions/cache@v4 — cacher node_modules entre les runs
  • docker/build-push-action@v5 — builder et pusher une image Docker
  • appleboy/ssh-action@v1 — exécuter des commandes sur un serveur via SSH
  • codecov/codecov-action@v4 — uploader la couverture de tests

Déploiement vers Vercel ou Railway

Pour les plateformes cloud modernes, le déploiement est encore plus simple — connectez votre repo GitHub et le déploiement se fait automatiquement à chaque push sur main, sans configuration supplémentaire. GitHub Actions est surtout utile pour les VPS custom ou les déploiements plus complexes.


Offres développeur avec CI/CD

Des postes pour développeurs qui savent automatiser — CI/CD est maintenant attendu même pour les profils juniors.

À lire aussi : DevOps pour débutantDockerDéploiement sur VPS

Categories : DevOps & Cloud