L'anatomie d'un pipeline CI/CD e-commerce
Un pipeline GitHub Actions pour un site e-commerce headless se déroule en quatre phases séquentielles. Chaque phase est un garde-fou : si elle échoue, le déploiement s'arrête avant d'atteindre la production.
- Phase 1 — Build : Compilation du front Nuxt 3. Si le build échoue, rien n'est envoyé sur le serveur.
- Phase 2 — Tests : Vérification des URLs critiques en préproduction (curl -I, codes HTTP).
- Phase 3 — Deploy préproduction : Transfert via SSH + archive tar, reload PM2 Graceful (Zero-Downtime).
- Phase 4 — Validation post-deploy : Vérification que la préproduction répond en 200 sur les pages clés avant de libérer le déploiement production.
Structure du fichier workflow
name: Deploy Preprod\non:\n push:\n branches: [preprod]\njobs:\n deploy:\n runs-on: ubuntu-latest\n steps:\n - uses: actions/checkout@v4\n - name: Build Nuxt\n run: npm ci && npm run build\n - name: Deploy via SSH\n uses: appleboy/ssh-action@v1\n with:\n host: ${{ secrets.VPS_HOST }}\n username: ${{ secrets.VPS_USER }}\n key: ${{ secrets.SSH_PRIVATE_KEY }}\n script: |\n cd /srv/hub\n ./deploy-nuxt.sh --all\n - name: Verify deploy\n run: |\n sleep 5\n curl -sf https://preprod.votresite.fr | grep -q "200"\nLes trois règles non-négociables du pipeline
- Jamais de docker restart dans le script de deploy — utiliser exclusivement le graceful reload PM2 pour garantir le zero-downtime.
- Secrets dans GitHub Secrets, jamais en clair dans le workflow —
VPS_HOST,SSH_PRIVATE_KEY,ANTHROPIC_API_KEY. - Un commit = un deploy tracé — chaque exécution du pipeline est visible dans l'onglet Actions, avec logs complets et possibilité de re-run manuel.
Ce pipeline devient la colonne vertébrale de votre processus de livraison. Il transforme un geste risqué (déployer) en un acte de confiance (pousser sur la branche preprod).