CI/CD

Dernière mise à jour : 07/12/2020

Continuous ceci, continuous cela… A quoi ça rime ? Ou plutôt à quoi ça rythme ? Car l’intégration continue et le déploiement continu sont une question de rythme, oserai-je dire.

Mode ou qualité ?

Je me suis longtemps dit que tout cela ne relevait que d’une mode, comme souvent en informatique, et qu’on réinventait la roue tous les 3-4 ans, au fur et à mesure que de nouveaux ignares informaticiens arrivaient sur le marché. Car en informatique, on a tendance à refaire ce qui existe déjà (mais dont on ignore l’existence).

Or je me suis rendu compte que, sous la foultitude d’outils qui se marchent sur les pieds, il y avait au fond une amélioration possible et substantielle de la qualité du développement. A condition, comme toujours, d’employer des méthodes et des techniques à bon escient.

Définissons

As to me, l’intégration continue et le déploiement continu consiste à outiller ces phases de façon à pouvoir les reproduire rapidement et automatiquement. Ca n’est pas continu au sens premier du terme, mais plutôt rapidement et constamment.

Déployons du code de m…

On confond trop souvent (toujours ?) agilité et rapidité. Or cela n’a rien à voir. La rapidité implique d’aller vite mais sans aucun égard à la qualité de son travail. L’agilité demande d’aller vite mais surtout bien : imaginons que vous allez vite en laissant 3 anomalies majeures par cycle de développement. Au bout de 2 cycles, vous en avez 6, au bout de 3 vous en avez 9… Et vous vous retrouvez rapidement avec une application pourrie, plein de choses à corriger sans en avoir le temps ni le budget.

Donc CI/CD doit être un gage de qualité et non de rapidité. Le code que vous livrez doit faire ce qu’on lui demande, le prouver, et fournir les moyens de le prouver. Ainsi, dans les développements suivants, vous ajouterez du code et de fonctionnalités tout en vous assurant de ne rien casser de ce que vous avez fait précédemment, et c’est essentiel pour espérer aller vite.

Tant qu’à faire : le TDD

Le concept de TDD (Test Driven Development) consiste(rait) à écrire les tests avant le code : on déclare d’abord le résultat à atteindre, puis on écrit le code pour cela. C’est radical, rarement suivi à la lettre, mais ça reste intéressant dans l’idée d’un mode de développement vraiment agile.

Outillons

Je me suis longtemps perdu dans les outils nombreux et variés, et se marchant parfois sur les pieds comme je disais. Pourtant, en prenant un peu de recul, on comprend l’intérêt de tout cela et leur articulation devient plus claire.

Intégrons

Dans l’intégration, il y a plein de trucs : compilation, gestion des dépendances, tests unitaires, revue de code… Plus cette phase sera riche et productive, plus la qualité de notre développement sera élevée. Un programme qui compile, c’est bien, mais un programme qui compile, qui est bien écrit, et qui fait ce qu’on attend de lui, c’est encore mieux.

Sources