Schéma basique d’un plan CI/CD

ByPatrick

Schéma basique d’un plan CI/CD


Vue d’ensemble

Ce diagramme décrit un pipeline CI/CD automatisé depuis la récupération du code jusqu’au déploiement sur un backend server, avec génération de documentation, analyse de qualité, gestion des secrets et publication d’artefacts.

Objectifs:

  • Standardiser la compilation et le déploiement.
  • Garantir la qualité (SonarQube) et la traçabilité (Nexus, dokuwiki).
  • Sécuriser les secrets et prérequis avant déploiement.

KPIs/SLAs (suggestion):

  • Durée pipeline: ≤ 15 min sur branche main.
  • Taux d’échec étape “quality gate”: < 5%.
  • Taux de déploiement test réussi: > 98%.
  • MTTR incident de déploiement: < 30 min.


Légende et conventions

  • Acteurs:
  • Jenkins: orchestrateur de pipeline.
  • Jenkins agent: exécuteur (PowerShell) sur nœud build/deploy.
  • Gitea: SCM hébergeant le code source.
  • SonarQube: analyse qualité + quality gate.
  • dokuwiki: publication documentation générée.
  • Nexus: registry d’artefacts (binaire/versionné).
  • Secret server: coffre-fort (secrets/credentials/certificats).
  • Database server: cible des migrations.
  • backend server: cible du déploiement applicatif.
  • Flux:
  • → demande/commande.
  • →→ interaction réseau HTTP(S)/API, SSH, ou protocole dédié.
  • Étapes “Jenkins agent -> Jenkins agent”: traitements locaux (scripts).

Description détaillée du flux

1) Orchestration/checkout

  • Jenkins déclenche l’agent avec un job qui orchestre compilation et déploiement (PowerShell).
  • L’agent récupère le code depuis Gitea (checkout, branch/tag selon paramètre).
  • Gitea renvoie l’état du repo (réponse à la requête clone/fetch).

2) Documentation automatique

  • L’agent génère la doc (ex: DocFX, MkDocs, Doxygen) à partir des sources.
  • Publication vers dokuwiki (API/CLI) pour centraliser la doc de version.

3) Qualité du code

  • L’agent envoie le code à SonarQube (scanner).
  • SonarQube retourne un score/quality gate (Pass/Fail). Le pipeline s’arrête en cas d’échec.

4) Build et artefact

  • Compilation locale (PowerShell/MSBuild/Gradle/etc.).
  • Push de l’artefact versionné vers Nexus (groupId/artifactId/version).

5) Déploiement en environnement de test

  • Jenkins ordonne à l’agent de déployer.
  • L’agent tire l’artefact exact depuis Nexus (checksum).
  • Contrôles préalables sur backend server: certificats installés/valides, espace disque, ports ouverts, services requis.
  • Récupération des secrets depuis Secret server (en lecture, jeton court).
  • Mise à jour des fichiers de configuration avec secrets/variables d’environnement.
  • Migrations sur Database server (idempotentes, versionnées).
  • Déploiement de l’artefact sur backend server (service stop/update/start + healthcheck).

Pré-requis techniques

  • Jenkins:
  • Agent avec droits limités, labels appropriés (windows/linux selon build).
  • Credentials Binding pour Gitea/Nexus/SonarQube/Secret server.
  • SCM (Gitea):
  • Branch protection pour main.
  • Webhooks optionnels si déclenchement auto.
  • SonarQube:
  • Quality gate défini (coverage, bugs, code smells, vulnérabilités).
  • Nexus:
  • Repository format conforme (maven/npm/nuget/docker). Rétention et snapshot policy.
  • Secret server:
  • Accès par rôle (RBAC), secrets rotatifs, audit.
  • Backend/DB:
  • Comptes de déploiement et de migration distincts.
  • Politique de backup avant migration (RPO/RTO fixés).

Sécurité et conformité (RGPD/IT Sec)

  • Secrets:
  • Jamais en clair dans logs/artefacts; masquage activé dans Jenkins.
  • Jetons courts TTL; rotation automatique; principe du moindre privilège.
  • Chaîne d’intégrité:
  • Checksum/SHA256 de l’artefact Nexus avant déploiement.
  • Signature d’artefacts recommandée (GPG).
  • Trafic:
  • TLS obligatoire vers Gitea, SonarQube, Nexus, dokuwiki et Secret server (mTLS conseillé).
  • Traçabilité:
  • Lier buildId ↔ commit ↔ artefact ↔ déploiement (annotations Nexus, release notes dokuwiki).
  • Données personnelles:
  • Si le code traite des données RGPD, s’assurer que les environnements de test sont anonymisés.

Runbook opératoire (résumé)

  • Déclenchement:
  • Manuel via Jenkins avec paramètres (branche, version, env) ou webhook sur push/tag.
  • Garde-fous:
  • Stop pipeline si quality gate Fail.
  • Stop si vérifs prérequis KO (disque/certificats/ports).
  • Stop si migrations échouent (rollback).
  • Validation:
  • Healthcheck applicatif (HTTP 200/ready), tests fumée post-deploy.
  • Publication:
  • Doc versionnée sur dokuwiki; artefact publié Nexus; ticket change mis à jour.

Gestion des incidents (checklist)

  • Échec checkout Gitea:
  • Vérifier credentials, ACL repo, disponibilité Gitea.
  • Échec SonarQube:
  • Consulter quality gate; corriger règles bloquantes; relancer job.
  • Échec push/pull Nexus:
  • Vérifier repo cible, quota, URL/credentials; retenter avec checksum.
  • Prérequis backend KO:
  • Certificats expirés? Espace disque? Ports/pare-feu? Rétablir puis relancer étape.
  • Secrets indisponibles:
  • Jeton expiré/ACL; régénérer; vérifier rotation automatique.
  • Migration DB échouée:
  • Identifier migration N; restaurer backup; corriger script idempotent; rejouer.
  • Déploiement KO:
  • Logs service, revert à version précédente depuis Nexus (promote/rollback).

MTTR cible: < 30 min; escalade au-delà.


Monitoring et métriques

  • Jenkins: durée par stage, taux de réussite, queue time.
  • SonarQube: debt ratio, coverage, vulnérabilités critiques.
  • Nexus: téléchargements par artefact/version, space usage.
  • Backend: CPU/RAM, temps de réponse, taux d’erreur, logs applicatifs.
  • DB: temps de migration, verrous, temps requêtes clés.

RACI synthétique

  • Dév: qualité code, tests, versionning, doc auto.
  • IT CI/CD: Jenkins, agents, credentials, gabarits pipeline, intégrations.
  • SecOps: politiques secrets, certificats, scans vulnérabilités.
  • DBA: scripts de migration, sauvegardes, restauration.
  • Ops/Prod: systèmes backend, supervision, déploiements et rollback.

Améliorations recommandées

  • Signature et attestation d’artefacts (SLSA niveau 2+).
  • Environnements éphémères par PR pour tests.
  • Blue/Green ou Canary sur backend server pour zéro-downtime.
  • Tests smoke automatisés après déploiement et gate sur healthcheck.
  • Promotion d’artefacts (test → preprod → prod) via le même binaire.

Glossaire

  • Artefact: binaire ou bundle déployable produit par le build.
  • Quality gate: seuils bloquants de qualité SonarQube.
  • Idempotent: exécution répétée sans effets indésirables supplémentaires.

Il faut encore ajouter les gestions des certificats, le loadbalancer, le dns et la conteneurisation.

About the author

Patrick administrator