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 repoactions/setup-node@v4— installer Node.js avec cacheactions/cache@v4— cacher node_modules entre les runsdocker/build-push-action@v5— builder et pusher une image Dockerappleboy/ssh-action@v1— exécuter des commandes sur un serveur via SSHcodecov/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ébutant — Docker — Déploiement sur VPS