Aller au contenu
Réussir mon BTS SIO

Tape une notion, une commande ou le nom d'une épreuve.

Par exemple

Chapitre 113 minIntermédiaire

C'est quoi l'intégration continue (CI/CD) ?

Par Josselyn C., prof de BTS SIO. Mis à jour le .

À la fin de ce chapitre, tu sauras

  • expliquer le problème de l'intégration « big bang » et ce que la CI/CD change ;
  • distinguer intégration continue, livraison continue et déploiement continu ;
  • citer les outils de CI/CD et les indicateurs DORA ;
  • situer la CI/CD dans les compétences du BTS SIO (E5, E6, E7).

3 exercices corrigés1 schéma

L'intégration continue (continuous integration, CI) est une pratique de développement : chacun intègre son travail dans la branche commune plusieurs fois par jour, et chaque intégration est vérifiée automatiquement par une compilation, des analyses et des tests. Le CD prolonge la CI jusqu'à la mise en ligne : c'est la livraison continue quand un humain décide du passage en production, le déploiement continu quand ce passage est automatique. Ce chapitre explique le problème que la CI/CD résout, ces trois notions, les outils du marché et la place de la CI/CD dans le référentiel du BTS SIO.

Le problème : l'intégration de dernière minute

Lina développe le calcul des indemnités kilométriques sur sa branche. Hugo, de son côté, refond la validation des notes de frais. Chacun travaille trois semaines, teste sur son ordinateur, et tout fonctionne. Le vendredi de la livraison, ils fusionnent : quarante fichiers en conflit, des tests qui ne passent plus, une dépendance installée par Hugo que Lina n'a pas, et une version de Node.js différente sur le serveur. La livraison glisse d'une semaine. Ce scénario porte un nom : l'intégration « big bang ».

Ses causes sont toujours les mêmes :

  • Des intégrations rares. Plus on attend pour fusionner, plus les écarts entre les branches grossissent, et plus les conflits coûtent cher.
  • Des vérifications manuelles. Les tests ne tournent que si quelqu'un pense à les lancer, sur sa machine, avec sa configuration.
  • Le « ça marche chez moi ». Le poste du développeur contient des fichiers, des variables d'environnement et des versions d'outils que le serveur n'a pas.
  • Des livraisons artisanales. Copier des fichiers par FTP, lancer des commandes de mémoire sur le serveur : une étape oubliée, et la production tombe.

La CI/CD répond à chacune de ces causes : on intègre souvent par petits morceaux, une machine vérifie chaque intégration dans un environnement neuf, et la livraison suit une procédure écrite, versionnée et rejouée à l'identique.

L'intégration continue

L'intégration continue repose sur trois habitudes et un outil.

  1. Intégrer souvent. Les branches vivent quelques heures ou quelques jours, pas des semaines. Chaque fusion apporte peu de changements, donc peu de conflits.
  2. Tout vérifier automatiquement. À chaque push ou à chaque pull request, un serveur d'intégration récupère le code, installe les dépendances, lance l'analyse et les tests.
  3. Réparer tout de suite. Un pipeline rouge sur la branche principale est la priorité de l'équipe : on corrige ou on annule le commit fautif avant d'ajouter autre chose.

L'outil est le serveur d'intégration continue (GitHub Actions, GitLab CI, Jenkins…). Il exécute un pipeline : une suite d'étapes décrite dans un fichier versionné avec le code. Le résultat s'affiche sur le commit et sur la pull request.

Livraison continue et déploiement continu

Le « D » de CI/CD a deux sens, que les sujets et les entretiens distinguent :

  • Livraison continue (continuous delivery) : chaque version qui passe le pipeline est prête à partir en production. Elle est construite, testée, déployée automatiquement dans un environnement de recette, mais le passage en production reste une décision humaine, un clic sur un bouton d'approbation.
  • Déploiement continu (continuous deployment) : il n'y a plus de bouton. Toute version qui passe les vérifications part automatiquement en production.
CICD : la suite, jusqu’à la productionLivraison continueCommitbuild, testsArtefactpubliéRecetteautomatiqueDécisionhumaineProductionaprès un clicDéploiement continuCommitbuild, testsArtefactpubliéRecetteautomatiqueProductionautomatiquesans barrière
Intégration continue, livraison continue et déploiement continu : la seule différence entre les deux CD est la barrière humaine avant la production
Intégration continueLivraison continueDéploiement continu
Question poséeLe code est-il sain ?La version est-elle prête à livrer ?On livre ?
Ce qui est automatiqueConstruction, analyse, testsEn plus : empaquetage, déploiement en recetteEn plus : la mise en production
Passage en productionManuel, procédure à partUn clic, quand l'équipe le décideAutomatique
PrérequisDes tests automatisésUn artefact unique, des environnementsUne très grande confiance dans les tests et la surveillance

La plupart des organisations s'arrêtent à la livraison continue : la mise en production reste choisie (pas la veille d'un pont, pas pendant la clôture comptable). Le déploiement continu se rencontre surtout dans les entreprises du Web qui livrent plusieurs fois par jour.

DevOps : la culture derrière les outils

La CI/CD est la partie outillée d'une démarche plus large, DevOps : rapprocher ceux qui développent (dev) et ceux qui exploitent les serveurs (ops), pour livrer plus souvent sans sacrifier la stabilité. On la représente par une boucle sans fin : planifier, coder, construire, tester, livrer, déployer, exploiter, surveiller, puis replanifier à partir de ce qu'on a observé.

Pour mesurer si une équipe livre bien, le programme de recherche DORA (DevOps Research and Assessment, rattaché à Google) suit quatre indicateurs devenus classiques :

IndicateurCe qu'il mesureCe que la CI/CD améliore
Fréquence de déploiementCombien de mises en production par jour, par semaine, par moisDes livraisons automatiques, donc plus fréquentes
Délai de mise en productionLe temps entre un commit et sa présence en productionPlus d'attente d'une « fenêtre de livraison »
Taux d'échec des changementsLa part des déploiements qui provoquent un incidentLes tests et les analyses arrêtent les erreurs avant
Temps de rétablissementLe temps pour revenir à un service normal après un incidentUn retour arrière scripté en quelques minutes

Les deux premiers mesurent la vitesse, les deux derniers la stabilité. Depuis 2024, DORA y ajoute un cinquième indicateur, le taux de reprise (rework rate) : la part des déploiements non prévus, faits pour corriger un incident en production. Le message des études DORA est que les équipes les plus rapides sont aussi les plus stables : livrer souvent de petits changements est moins risqué que livrer rarement un gros paquet.

Ce que la CI/CD apporte, et ce qu'elle coûte

ApportsCoûts et limites
Les erreurs sont détectées quelques minutes après le commit, quand le développeur a encore le code en têteIl faut écrire et maintenir des tests automatisés : sans eux, le pipeline ne prouve presque rien
Le « ça marche chez moi » disparaît : tout est vérifié dans un environnement neuf et identiqueLe pipeline est du code : il se casse, se met à jour, se débogue
La livraison suit une procédure écrite, versionnée et rejouableLes minutes de calcul ont un coût sur les dépôts privés
La branche principale reste toujours livrableUn pipeline lent (plus de dix minutes) décourage les intégrations fréquentes
La revue de code se concentre sur la logique : le style et les tests sont déjà vérifiésLe pipeline a accès aux secrets de déploiement : il devient une cible (chapitre 7)

Les outils de CI/CD

Tous les outils reposent sur les mêmes notions : un déclencheur, des jobs composés d'étapes, des machines d'exécution, des artefacts, des secrets et des déploiements conditionnels. Seule la syntaxe change.

OutilFichier de configurationHébergementOù tu le croises
GitHub Actions.github/workflows/*.ymlService de GitHub, ou tes propres machinesProjets hébergés sur GitHub, projets étudiants, logiciel libre
GitLab CI/CD.gitlab-ci.yml à la racineGitLab.com ou un GitLab installé dans l'entrepriseEntreprises et administrations qui hébergent leur propre forge
JenkinsJenkinsfileToujours installé chez toiGrandes entreprises, projets Java historiques
Azure Pipelinesazure-pipelines.ymlService de Microsoft (Azure DevOps)Environnements Microsoft et .NET
Gitea et Forgejo Actions.gitea/workflows/ ou .forgejo/workflows/Forge auto-hébergée légèrePetites structures, syntaxe proche de GitHub Actions

Ce cours détaille GitHub Actions (chapitres 3 et 4), le plus utilisé par les étudiants, puis GitLab CI (chapitre 5), très présent dans les entreprises qui accueillent des stagiaires. Qui maîtrise l'un lit l'autre en une heure.

La CI/CD dans le référentiel du BTS SIO

Le référentiel du BTS SIO (arrêté du 8 juillet 2024, sessions 2025 et suivantes) cite la CI/CD à plusieurs endroits :

BlocCompétenceCe que la CI/CD prouve
Bloc 2 SLAM, épreuve E6Concevoir et développer une solution applicative : « Intégrer en continu les versions d'une solution applicative »Un outil de gestion des versions est utilisé et une documentation des versions accompagne l'intégration : commits clairs, tests à chaque push, CHANGELOG (les compétences de l'E6 SLAM)
Bloc 2 SLAM, épreuve E6« Réaliser les tests nécessaires à la validation ou à la mise en production »Les tests unitaires et d'intégration tournent automatiquement avant chaque fusion
Bloc 1, épreuve E5, deux optionsMettre à disposition des utilisateurs un service informatique : réaliser les tests d'intégration et d'acceptation, déployer un serviceUn déploiement scripté en recette puis en production, testé et réversible (les compétences du bloc 1)
Bloc 3 SLAM, épreuve E7Assurer la cybersécurité d'une solution applicative et de son développement« Les composants utilisés sont certifiés, sécurisés et actualisés », « des tests de sécurité sont prévus et mis en œuvre » : analyse des dépendances et du code dans le pipeline (compétences du bloc 3)

En SISR, tu croiseras la même démarche sous le nom d'infrastructure as code : des fichiers de configuration versionnés (Ansible, Docker Compose, Terraform) appliqués par un pipeline plutôt que par des commandes tapées à la main (chapitre 10). Le cours Automatisation avec Ansible en fait le cœur de son approche, jusqu'à versionner l'infrastructure et la tester en CI.

Organiser les branches pour intégrer souvent

L'intégration continue suppose des branches courtes. Deux organisations dominent (workflows Git) :

  • Le développement sur tronc commun (trunk-based development) et sa variante GitHub Flow : une branche principale main toujours livrable, des branches de fonctionnalité qui vivent un ou deux jours, une pull request vérifiée par la CI pour chaque fusion. C'est l'organisation naturelle de la CI/CD.
  • Git Flow : des branches longues (develop, release/*, hotfix/*) pour des versions planifiées. La CI tourne sur chaque branche, mais les intégrations sont plus espacées.

Pour un projet de BTS à deux ou trois, choisis GitHub Flow : une branche par fonctionnalité, une pull request, une CI verte, une fusion.

Exercices

Exercice 1 sur 3 CI, livraison ou déploiement continu ? Réussi À revoir

Pour chaque situation, dis si l'équipe pratique seulement l'intégration continue, la livraison continue ou le déploiement continu.

  1. À chaque pull request, GitHub Actions lance les tests. La mise en production se fait une fois par mois : l'administrateur copie les fichiers sur le serveur en suivant une procédure papier.
  2. Chaque fusion sur main construit une image Docker, la déploie sur le serveur de recette, puis attend qu'une responsable clique sur « Approuver » pour la déployer en production.
  3. Chaque fusion sur main qui passe les tests part en production sans intervention, une dizaine de fois par jour.
  4. Les développeurs fusionnent leurs branches tous les deux mois. Un serveur Jenkins lance alors les tests.
Voir la réponseMasquer la réponse de l'exercice 1
  1. Intégration continue seulement : la vérification est automatique, mais la livraison reste manuelle et rare.
  2. Livraison continue : tout est automatique jusqu'à la recette, la production attend une décision humaine.
  3. Déploiement continu : aucune barrière humaine avant la production.
  4. Aucune des trois, malgré l'outil : des intégrations tous les deux mois, c'est l'intégration « big bang ». La pratique compte plus que le serveur.

Tu avais trouvé ?

Exercice 2 sur 3 Les causes d'une livraison ratée Réussi À revoir

Relis l'histoire de Lina et Hugo au début du chapitre. Pour chacun des quatre problèmes (conflits, tests qui échouent, dépendance manquante, version de Node.js différente), indique la pratique de CI/CD qui l'aurait évité.

Voir la réponseMasquer la réponse de l'exercice 2
  • Conflits nombreux : intégrer souvent, par petites pull requests fusionnées en un ou deux jours ; les conflits restent petits.
  • Tests qui échouent à la fusion : lancer les tests automatiquement à chaque pull request ; l'échec apparaît le jour même, sur la branche fautive.
  • Dépendance manquante : installer les dépendances dans un environnement neuf à chaque exécution, avec npm ci et le package-lock.json versionné ; une dépendance non déclarée fait échouer le pipeline.
  • Version de Node.js différente : fixer la version dans le workflow (node-version: 24) et, mieux, construire une image Docker qui embarque cette version, déployée telle quelle sur le serveur (chapitre 9).

Tu avais trouvé ?

Exercice 3 sur 3 Argumenter devant un jury Réussi À revoir

Un membre de la commission d'E6 te demande : « Votre application fonctionne, pourquoi avoir passé du temps à mettre en place GitHub Actions ? » Rédige une réponse de quatre ou cinq phrases, en citant au moins deux apports concrets et un indicateur.

Voir la réponseMasquer la réponse de l'exercice 3

Une réponse possible : « Sans pipeline, les tests ne tournaient que quand j'y pensais, sur ma machine. Aujourd'hui, mes 42 tests et le linter tournent à chaque pull request dans un environnement neuf : une régression est détectée en trois minutes, avant la fusion, et la branche main reste toujours livrable. La règle de protection de branche m'empêche de fusionner un code rouge, même pressé. Le déploiement en recette est automatique : le délai entre un commit et sa mise à disposition pour les tests utilisateurs est passé d'une demi-journée à une dizaine de minutes. C'est aussi la compétence “Intégrer en continu les versions” du référentiel. »

Les éléments attendus : la détection précoce, l'environnement reproductible, la barrière avant la fusion, un indicateur chiffré (délai ou fréquence), et le lien avec le référentiel.

Tu avais trouvé ?

Chapitre terminé !

Fais les 3 exercices avant de passer à la suite : c'est en t'entraînant que tout se fixe.

chapitres
–
de série
–
du cours
–
Chapitre suivant : Les étapes d'un pipeline CI/CDRevoir le sommaire du cours