Avec la montée du mouvement Devops depuis déjà plusieurs années, de nombreuses pratiques sont venues se mettre en place ou sont prises en considération par beaucoup d’entreprises. L’une de ces pratiques, c’est la mise en place de l’intégration continue et du déploiement continu aka CI/CD.

Maintenant, quand l’on souhaite mettre cette pratique en place, il s’avère que le nombre d’outils qui pourront répondre à ce besoin, et bien, il n’y en pas qu’un seul. Du coup lorsque l’on doit faire un choix ça peut paraitre compliqué.

Alors ce que je peux vous dire c’est qu’au final, ils vont tous faire ce que vous voulez, du besoin le plus simple au plus compliqué.

Bon super du coup ça nous fait de belles jambes.

Rassurez-vous. Certaines particularités vont pouvoir orienter votre choix. La syntaxe ? (Coucou les allergiques au yaml). Est-ce que c’est possible d’installer « on premise » ou au contraire c’est une offre cloud uniquement ? Et dans ce dernier cas à quel prix ? Et l’opensource dans tout ça ?

Bref, il y a des différences, du coup dans cet article je vais faire un petit tour du paysage d’outils pour de CI/CD.

Les outils CI/CD des hébergeurs git

Je vais commencer notre petite escapade en parlant d’outils CI/CD qui sont intégrés à des hébergeurs git directement. Etant donné que cette pratique reste quand même très liée au code lui-même, ça en fait des outils particulièrement intéressants.


On ne présente plus Github, c’est un peu la référence pour héberger un répertoire git que ce soit dans le monde de l’opensource ou pour des projets personnels. A tel point qu’on voit se confondre l’apprentissage de git par l’apprentissage de Github. Je sais c’est bizarre.

Github met donc à disposition Github Actions comme outils de CI/CD. Vous écrivez des « workflows » en format yaml et la simple présence de ce fichier hébergé sur Github déclenchera ce que vous avez prévu.

Une version gratuite et totalement managée est disponible avec quelques limitations. Il est possible d’avoir une capacité plus élevée en y mettant les moyens. Ou utiliser votre propre infrastructure pour exécuter ces workflows ou stocker ce qui en ressort.

Et finalement pour les plus motivés vous pouvez vous procurer une version entreprise installée chez vous.

https://github.com/features/actions


Gitlab tout comme Github, va héberger votre répertoire git. Cependant bien avant ces derniers, ils ont tout de suite mis l’accent sur l’intégration d’une fonctionnalité de CI/CD pour leur produit avec Gitlab CI.

On reste sur un fichier yaml commit dans votre répertoire, qui déclenchera un pipeline. L’exécution se fera par défaut sur l’infrastructure de Gitlab avec toujours quelques limitations. Et bien évidemment si le besoin se fait sentir, on pourra augmenter ces quotas. Vous pouvez encore une fois ici utiliser votre propre infrastructure pour exécuter les pipelines et ainsi bypasser les limites.  

Quant à l’installation « on premise », il existe une version community ainsi qu’une version entreprise.

https://docs.gitlab.com/ee/ci/


Bitbucket est le dernier gros hébergeur de répertoire git, cette fois-ci plutôt orienté code privé. Bitbucket fournit aussi son système de pipeline, que les équipes ont tout simplement appelé Bitbucket Pipelines.

Pour décrire les changements que l’on souhaite c’est toujours en yaml.

Une offre « as a service » à des prix différents est disponible tout comme les deux précédents. En revanche cette fois-ci pas d’échappatoire, vous n’allez pas pouvoir configurer votre propre infrastructure pour pallier ça.

Comme tout bon produit de chez Atlassian, une version d’entreprise que vous allez héberger avec votre propre infrastructure est disponible. Ce produit s’intégrera facilement avec d’autres outils de chez eux, comme celui de gestion de projet Jira.

https://bitbucket.org/product/fr/features/pipelines

Les outils CI/CD opensource

Même si git est devenu indispensable, coupler hébergeur et CI/CD sous la même enseigne n’est pas du tout obligatoire. Nous allons maintenant explorer des solutions opensource.

Jenkins est un logiciel de CI/CD opensource écrite en Java. Il pourra s’intégrer à n’importe quels environnements et sera vastement configurable grâce à des plugins.

Cette fois-ci, on écrit nos pipelines en groovy soit de de façon scriptée ou déclarative. Vous allez pouvoir ainsi coder dans votre pipeline si vous voulez vraiment un comportement très customisé.

Comme je l’ai mentionné ici pas d’hébergement de votre code, vous pouvez le mettre partout et il suffira ensuite de bien configurer Jenkins.

https://www.jenkins.io/


Drone est un logiciel de CI opensource écrit en go. Ce dernier est bizarrement très peu cité par les personnes exposant les outils connus de CI/CD alors que ce dernier détient quand même 25k étoiles sur Github.

Pour configurer notre pipeline, on laisse de côté groovy pour repartir sur du yaml. Tout ce que vous décidez s’exécutera exclusivement à l’intérieur de conteneurs Docker. Et tout comme Jenkins vous allez pouvoir agrémenter tout ça de plugins.

Ici cependant une offre cloud et une offre entreprise sont disponibles.

https://www.drone.io/


Continuous Delivery Service (CDS) est, comme les deux précédents, un logiciel opensource pour construire des pieplines de CI/CD. Cet outil n’a rien de spécial par rapport aux autres. Je l’évoque ici car ce projet est maintenu par OVH, un des nombreux fournisseurs de cloud français.

Cela me permet donc d’introduire d’autres acteurs qui vont eux aussi fournir des solutions de CI/CD. Ce sont les cloud providers. Ainsi par exemple on va retrouver pour les trois plus gros providers Azure avec Azure Pipelines, AWS avec AWS codepipelines et GCP avec Cloud build.

Sans vouloir revenir sur la certaine hégémonie de ces fournisseurs sur le marché, ces solutions seront, bien évidemment, surtout bien intégrées avec les services du même fournisseur. Cela pourra amener à vous bloquer dans certains de vos choix plus tard. La prison dorée n’est pas loin, gardez cela en tête.

https://ovh.github.io/cds/


Ce petit tour ne fait pas office de liste exhaustive du paysage de CI/CD, j’ai plutôt essayé de suivre un cheminement à travers la panoplie de choix qui s’offre à nous.

Il existe beaucoup d’autres offres, qu’elles soit Saas, entreprise ou opensource. Mais aussi des outils plus spécifiques comme ArgoCD pour du déploiement sur Kubernetes ou Dagger pour créer des pipelines agnostiques, pour ne citer qu’eux.

Finalement, si vous deviez retenir une seule chose de cet article, ce n’est pas quels outils de CI/CD choisir, c’est de faire de la CI/CD. Le gain est extrêmement bénéfiques par rapport au travail nécessaire à la mise en place. Je compte sur vous 🙂

Catégories : DevOps

0 commentaire

Laisser un commentaire

Avatar placeholder

Votre adresse e-mail ne sera pas publiée.

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.

CI/CD ! Quel outil choisir ?

par Laurent G. temps de lecture : 5 min
0