Essayer gratuitement
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 PipelineAction GitScrumBénéfice
Branche crééeLien vers tâcheTraçabilité
PR ouverteCommentaire sur tâcheVisibilité
Build échoueCommentaire + alerteFix rapide
Build passeMise à jour statutSuivi progression
Déployé en stagingTransition tâchePrêt pour test
Déployé en productionCompléter tâcheSuivi 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

  1. Nommage cohérent pour branches et commits
  2. Automatiser toutes les transitions qui peuvent l'être
  3. Inclure des liens vers builds et déploiements
  4. Gérer les échecs avec information actionnable
  5. Suivre les déploiements par environnement
  6. Connecter les releases aux tâches complétées
  7. Monitorer la santé de l'intégration
  8. 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

Solutions Connexes