6 min lecture • Guide 526 of 877
Intégrer les Pipelines CI/CD avec GitScrum
Les pipelines CI/CD automatisent le build et le déploiement, mais déconnectés de la gestion de projet créent des lacunes de visibilité. Les intégrations CI/CD de GitScrum mettent automatiquement à jour le statut des tâches basé sur les événements du pipeline, fournissant une visibilité en temps réel sur les déploiements et connectant les changements de code à la progression du projet.
Points d'Intégration CI/CD
| Étape Pipeline | Action GitScrum | Bénéfice |
|---|---|---|
| Branche créée | Lien vers tâche | Traçabilité |
| PR ouverte | Commentaire sur tâche | Visibilité |
| Build échoue | Commentaire + alerte | Fix rapide |
| Build passe | Mise à jour statut | Suivi progression |
| Déployé en staging | Transition tâche | Prêt pour test |
| Déployé en production | Compléter tâche | Suivi release |
Architecture d'Intégration
FLUX CI/CD VERS GITSCRUM
┌─────────────────────────────────────────────────┐
│ DÉVELOPPEMENT │
│ │
│ 1. Développeur crée branche │
│ Branche: feature/TASK-234-user-search │
│ │ │
│ ▼ │
│ 2. Commits référencent la tâche │
│ "TASK-234: Implement search API" │
│ │ │
│ ▼ │
│ 3. Ouvre Pull Request │
│ → GitScrum: Commentaire ajouté à TASK-234 │
│ "PR #567 ouverte: [lien]" │
└─────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────┐
│ PIPELINE CI │
│ │
│ 4. Build & Test │
│ ├── Si ÉCHEC → Commentaire sur TASK-234 │
│ │ "Build échoué: [logs]" │
│ │ │
│ └── Si SUCCÈS → Commentaire sur TASK-234 │
│ "Build passé ✓" │
│ │ │
│ ▼ │
│ 5. Revue de Code Approuvée │
│ → GitScrum: TASK-234 → "En Revue" │
│ │ │
│ ▼ │
│ 6. Merge vers main │
│ → GitScrum: TASK-234 → "Prêt pour Deploy" │
└─────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────┐
│ PIPELINE CD │
│ │
│ 7. Déploiement vers Staging │
│ → GitScrum: TASK-234 → "En Staging" │
│ Commentaire: "Déployé en staging [lien]" │
│ │ │
│ ▼ │
│ 8. Déploiement vers Production │
│ → GitScrum: TASK-234 → "Terminé" │
│ Commentaire: "Livré dans v2.3.4" │
└─────────────────────────────────────────────────┘
Configuration Webhook
CONFIGURATION WEBHOOK
WEBHOOKS ENTRANTS (CI/CD → GitScrum):
┌─────────────────────────────────────────────────┐
│ Endpoint: /api/webhooks/ci-cd │
│ │
│ Événements à envoyer: │
│ ├── build.started │
│ ├── build.completed │
│ ├── build.failed │
│ ├── deploy.started │
│ ├── deploy.completed │
│ └── deploy.failed │
│ │
│ Structure payload: │
│ { │
│ "event": "build.completed", │
│ "task_id": "TASK-234", │
│ "status": "success", │
│ "details": { │
│ "build_url": "...", │
│ "commit": "abc123", │
│ "duration": "3m 42s" │
│ } │
│ } │
└─────────────────────────────────────────────────┘
WEBHOOKS SORTANTS (GitScrum → CI/CD):
┌─────────────────────────────────────────────────┐
│ Déclencheur: Changement statut tâche → "Deploy"│
│ │
│ Action: Démarrer pipeline de déploiement │
│ │
│ Payload: │
│ { │
│ "task_id": "TASK-234", │
│ "environment": "staging", │
│ "initiated_by": "jean@entreprise.com" │
│ } │
└─────────────────────────────────────────────────┘
Conventions Branches & Commits
CONVENTIONS DE LIAISON DE TÂCHES
NOMMAGE BRANCHES:
┌─────────────────────────────────────────────────┐
│ Pattern: <type>/TASK-<id>-<description> │
│ │
│ Exemples: │
│ feature/TASK-234-user-search │
│ bugfix/TASK-567-login-timeout │
│ hotfix/TASK-890-payment-fix │
│ │
│ CI extrait: TASK-234 du nom de branche │
└─────────────────────────────────────────────────┘
MESSAGE DE COMMIT:
┌─────────────────────────────────────────────────┐
│ Pattern: TASK-<id>: <message> │
│ │
│ Exemples: │
│ TASK-234: Add user search endpoint │
│ TASK-234: Add search result pagination │
│ TASK-234: Fix search query injection │
│ │
│ Tâches multiples: │
│ TASK-234, TASK-235: Refactor search module │
└─────────────────────────────────────────────────┘
TITRE PR:
┌─────────────────────────────────────────────────┐
│ Pattern: [TASK-<id>] <description> │
│ │
│ Exemple: │
│ [TASK-234] Implement user search functionality │
└─────────────────────────────────────────────────┘
Exemples de Scripts Pipeline
INTÉGRATION SCRIPT CI/CD
EXEMPLE GITHUB ACTIONS:
name: Build and Notify
on: [push, pull_request]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Extract Task ID
id: task
run: |
TASK_ID=$(echo "${{ github.ref }}" | grep -oP 'TASK-\d+')
echo "task_id=$TASK_ID" >> $GITHUB_OUTPUT
- name: Run Tests
run: npm test
- name: Notify GitScrum - Success
if: success()
run: |
curl -X POST $GITSCRUM_WEBHOOK_URL \
-H "Authorization: Bearer $GITSCRUM_TOKEN" \
-d '{
"task_id": "${{ steps.task.outputs.task_id }}",
"event": "build.completed",
"status": "success",
"url": "${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}"
}'
- name: Notify GitScrum - Failure
if: failure()
run: |
curl -X POST $GITSCRUM_WEBHOOK_URL \
-H "Authorization: Bearer $GITSCRUM_TOKEN" \
-d '{
"task_id": "${{ steps.task.outputs.task_id }}",
"event": "build.failed",
"status": "failure",
"url": "${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}"
}'
Bénéfices d'Automatisation
MÉTRIQUES D'INTÉGRATION
AVANT INTÉGRATION:
┌─────────────────────────────────────────────────┐
│ Mises à jour statut manuelles: 15 min/jour/dev│
│ Info déploiement manquante: Courant │
│ Notification échec build: Retardée │
│ Suivi releases: Tableur │
└─────────────────────────────────────────────────┘
APRÈS INTÉGRATION:
┌─────────────────────────────────────────────────┐
│ Mises à jour statut manuelles: 0 (automatisé) │
│ Info déploiement manquante: Aucune │
│ Notification échec build: Instantanée │
│ Suivi releases: Liens tâches automatiques │
└─────────────────────────────────────────────────┘
ÉCONOMIES DE TEMPS:
┌─────────────────────────────────────────────────┐
│ 5 développeurs × 15 min/jour = 6.25 heures/sem│
│ Économies annuelles: 325 heures développeur │
└─────────────────────────────────────────────────┘
Bonnes Pratiques
- Nommage cohérent pour branches et commits
- Automatiser toutes les transitions qui peuvent l'être
- Inclure des liens vers builds et déploiements
- Gérer les échecs avec information actionnable
- Suivre les déploiements par environnement
- Connecter les releases aux tâches complétées
- Monitorer la santé de l'intégration
- Documenter les conventions pour l'équipe
Anti-Patterns
✗ Mises à jour statut manuelles quand automatisation possible
✗ Pas d'IDs de tâche dans commits/branches
✗ Échecs de build silencieux
✗ Déploiements sans mises à jour tâches
✗ Automatisation trop complexe
✗ Pas de gestion d'erreurs dans webhooks