Pipeline CI/CD moderne avec GitHub Actions en 2026 — guide complet
GitHub Actions traite 71 millions de jobs par jour. Les runners ARM64 sont GA et 37 % moins chers. Les prix ont baissé de 39 % en janvier 2026. Ce guide couvre le pipeline complet — lint, test parallèle, build, Docker multi-plateforme, déploiement OIDC — avec des configs YAML modernes prêtes à copier.

Nouveautés GitHub Actions 2025-2026
- Runners ARM64 natifs (ubuntu-24.04-arm) : gratuits en repos publics, +40 % perf vs gen précédente
- YAML anchors supportés, fonction
case(), lazy loading pour workflows 300+ jobs - Actions Performance Metrics (GA) pour le monitoring
- Prix réduits : -39 %, Linux 4 vCPU/16 GB par défaut
- CodeQL scanne les workflows eux-mêmes — 800 000+ vulnérabilités détectées dans 158 000 repos
Pipeline CI complet : lint, test, build
name: CI Pipeline
on:
push:
branches: [main, develop]
pull_request:
branches: [main]
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
quality:
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 run lint && npm run type-check
test:
needs: quality
runs-on: ubuntu-latest
strategy:
matrix:
shard: [1, 2, 3, 4]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with: { node-version: '20', cache: 'npm' }
- run: npm ci
- run: npx jest --shard=${{ matrix.shard }}/4
build:
needs: test
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: npm ci && npm run build
- uses: actions/upload-artifact@v4
with: { name: build, path: dist/ }Les tests sont parallélisés en 4 shards via matrix — réduction de 60-70 % du temps CI sur les gros projets.
Sécurité : CodeQL, Dependabot et OIDC
CodeQL scanne vos workflows (script injection, permissions manquantes). Dependabot automatise les mises à jour npm et GitHub Actions. OIDC élimine les secrets long-lived pour AWS, GCP, Azure :
permissions:
id-token: write
contents: read
steps:
- uses: aws-actions/configure-aws-credentials@v4
with:
role-to-assume: ${{ vars.AWS_DEPLOY_ROLE }}
aws-region: eu-west-3Bonnes pratiques : pin les actions par SHA, permissions minimales (permissions: {} puis opt-in), ne jamais interpoler des inputs non fiables dans run:.
Docker multi-plateforme et support monorepo
Cache Docker via backend GHA (cache-from: type=gha, cache-to: type=gha,mode=max). Builds natifs ARM sur runners ARM64 (plus rapide que QEMU).
Monorepo : dorny/paths-filter@v3 réduit les temps CI de 70-90 % en ne buildant que les packages modifiés. Pattern « status-check » pour le branch protection avec jobs conditionnels.
Toujours définir timeout-minutes — le défaut est 6 heures (!). Le concurrency avec cancel-in-progress: true évite les builds en doublon sur chaque push.