Fonctionnalités
CI/CD (GitHub Actions & Vercel)
Pipeline d'intégration et de déploiement continus avec GitHub Actions et Vercel
Vue d'ensemble
La CI/CD repose sur deux workflows GitHub Actions et un déploiement automatisé vers Vercel:
- Dev: sur la branche
dev(push/PR) - Prod: sur action manuelle (approval) avec
workflow_dispatch
Les workflows valident le code (lint, build, variables) puis déploient sur Vercel avec les credentials du projet.
Workflow Dev
Chemin: .github/workflows/deploy-dev.yml
Déclencheurs:
pushsurdevpull_requestversdev
Jobs:
validate(environnement:dev)- Checkout, Node 20,
npm ci npm run lintnpm run build(type-check)- Validation des variables requises côté CI (doivent être présentes dans GitHub):
secrets.STRIPE_SECRET_KEYsecrets.RESEND_API_KEYvars.DATABASE_URL
- Checkout, Node 20,
deploy-dev(nécessitevalidate)- Checkout, Node 20,
npm ci,npm run lint,npm run buildavec env:STRIPE_SECRET_KEY→${{ secrets.STRIPE_SECRET_KEY }}RESEND_API_KEY→${{ secrets.RESEND_API_KEY }}DATABASE_URL→${{ vars.DATABASE_URL }}GOOGLE_CLIENT_ID→${{ vars.GOOGLE_CLIENT_ID }}GOOGLE_CLIENT_SECRET→${{ secrets.GOOGLE_CLIENT_SECRET }}AUTH_GITHUB_CLIENT_ID→${{ vars.GITHUB_CLIENT_ID }}AUTH_GITHUB_CLIENT_SECRET→${{ secrets.GITHUB_CLIENT_SECRET }}
- Déploiement Vercel via
amondnet/vercel-action@v25avec:VERCEL_TOKEN(secret)VERCEL_ORG_ID(secret)VERCEL_PROJECT_ID(secret)
- Checkout, Node 20,
Workflow Prod
Chemin: .github/workflows/deploy-prod.yml
Déclencheur:
workflow_dispatchavec confirmationconfirm_deploy: true
Jobs:
validate(env:prod, conditionné parconfirm_deploy)- Checkout, Node 20,
npm ci,npm run lint,npm run build - Validation des variables (mêmes clés que pour
dev)
- Checkout, Node 20,
deploy-prod(nécessitevalidateetconfirm_deploy)- Checkout, Node 20,
npm ci,npm run buildavec les mêmes variables quedev - Déploiement Vercel avec
--prod - Sortie de notification de succès
- Checkout, Node 20,
Variables et Secrets requis (GitHub Repository Settings)
Définissez ces clés dans votre dépôt GitHub:
- Secrets:
STRIPE_SECRET_KEYRESEND_API_KEYGOOGLE_CLIENT_SECRETGITHUB_CLIENT_SECRETVERCEL_TOKENVERCEL_ORG_IDVERCEL_PROJECT_ID
- Variables (Repository Variables —
vars):DATABASE_URLGOOGLE_CLIENT_IDGITHUB_CLIENT_ID(utilisé commeAUTH_GITHUB_CLIENT_IDdans le build)
Note: Les workflows exportent ces valeurs en variables d'environnement au moment du build.
Pour récupérer les variables d'environnement VERCEL_TOKEN
- Aller dans Vercel > Settings > Tokens
- Copier le token

Pour récupérer les variables d'environnement VERCEL_ORG_ID
- Aller dans Vercel > Settings > Organizations
- Copier le "Team ID"

Pour récupérer les variables d'environnement VERCEL_PROJECT_ID
- Aller dans Vercel, choisir le projet > Settings > General
- Copier le "Project ID"

- Aller dans GitHub > Repository > Settings > Secrets and variables > Actions
- Ajouter les tokens comme secrets
VERCEL_TOKEN,VERCEL_ORG_IDetVERCEL_PROJECT_ID

Comment déclencher les déploiements
- Dev: poussez vos commits sur la branche
devou ouvrez une PR versdev. - Prod: onglet "Actions" > workflow "Deploy to Production" > "Run workflow" > cocher
confirm_deploy> Run.
Bonnes pratiques
- Maintenir
npm run lintetnpm run buildsans erreurs avant déploiement - Garder secrets et variables synchronisés entre GitHub et Vercel si utilisés côté runtime
- Utiliser des environnements GitHub (
environment: dev/prod) pour isoler les permissions - Limiter les droits du token Vercel au strict nécessaire