Intégration continue : de GitLab CI à Jenkins
Alexandre Jeffroy
Ingénieur logiciel
L'intégration continue (CI) consiste à compiler et tester automatiquement le code à chaque modification. Dans l'industrie, où les bases de code vivent parfois plus d'une décennie, c'est un filet de sécurité dont on ne peut plus se passer une fois qu'on l'a goûté.
Pourquoi la CI change tout
Sans CI, un défaut peut rester tapi dans le code jusqu'à la prochaine livraison, là où il coûte le plus cher à corriger. Avec une CI, chaque modification est vérifiée immédiatement. En quelques minutes, on sait si quelque chose s'est cassé, et surtout on sait où regarder.
Un pipeline GitLab CI minimal
Pour un projet C++, un fichier .gitlab-ci.yml de quelques lignes suffit à mettre en place les étapes de build et de test.
1stages:
2 - build
3 - test
4
5build:
6 stage: build
7 script:
8 - cmake -B build -DCMAKE_BUILD_TYPE=Release
9 - cmake --build build -j
10
11test:
12 stage: test
13 script:
14 - ctest --test-dir build --output-on-failureLe même esprit avec Jenkins
Quand l'environnement impose Jenkins, on retrouve exactement la même logique dans un Jenkinsfile.
1pipeline {
2 agent any
3 stages {
4 stage('Build') {
5 steps {
6 sh 'cmake -B build && cmake --build build -j'
7 }
8 }
9 stage('Test') {
10 steps {
11 sh 'ctest --test-dir build --output-on-failure'
12 }
13 }
14 }
15}Ce que la CI apporte concrètement
- ▸Les régressions sont détectées en quelques minutes plutôt qu'à la recette.
- ▸Les livraisons deviennent reproductibles, identiques d'une fois à l'autre.
- ▸Toute l'équipe ose faire évoluer le code, parce qu'un garde-fou vérifie derrière elle.
Le principe avant l'outil
GitLab CI ou Jenkins, peu importe : l'outil compte moins que le principe qu'il sert, celui de vérifier en continu et sans intervention humaine. Quand j'arrive sur un projet qui n'a pas encore de CI, c'est presque toujours la première chose que je mets en place.
Autres articles
Workbench : mon couteau suisse pour éliminer les actions répétitives
Workbench est l'outil qui sert de socle à toute ma démarche d'outillage interne. Une interface graphique unique qui regroupe les actions répétitives du quotidien et remplace une poignée de commandes fastidieuses par quelques clics.
SonarQube : maîtriser la qualité et la dette technique
Dans des secteurs où la fiabilité n'est pas négociable, comment s'assurer que des centaines de milliers de lignes de code respectent les standards les plus élevés ? SonarQube est devenu un allié indispensable sur mes projets.