
Quels sont les outils d'intégration continue pour les ingénieurs DevOps ?
DevOps est sans aucun doute l'un des termes les plus populaires dans le monde informatique. Parmi les prérequis pour travailler comme ingénieur DevOps, on trouve les compétences dans le domaine du développement de logiciels et la connaissance de ses processus de mise en œuvre. En raison de la large gamme de technologies et de la nécessité de posséder des connaissances spécialisées, il est essentiel de choisir les bons outils pour le travail.
Sur la voie de l'intégration continue
Toute personne vivant activement dans l'industrie des technologies de l'information a rencontré de nombreuses fois le terme "continu". Le mot pour "une activité ou un processus qui est ininterrompu et sans interruption" est le plus courant dans les équipes DevOps et apparaît dans la solution CI/CD qui aide à rationaliser le processus de développement logiciel. Parmi ses différents types, l'outil d'intégration continue – qui a été le début de la création du CI/CD – se distingue.
Pour mieux comprendre l'essence de cet outil, nous devons revenir quelques années en arrière et nous souvenir du processus de mise en œuvre des logiciels. À l'époque, la plupart du travail était effectué par des développeurs de manière isolée, sans aucune automatisation, et la fusion des changements de code était difficile et prenait du temps. À ce moment-là, il n'y avait pas de dépôts de code, et les changements étaient communiqués par le biais de clés USB ou de serveurs FTP. Le résultat d'une telle manière de travailler était : un long délai pour générer un package pour la mise en œuvre, l'exécution de processus manuels répétitifs et sujets aux erreurs et l'absence de tests d'application. La solution à ces problèmes a été le système CI – qui est désormais une pratique DevOps de base – automatisant la plupart des activités, unifiant divers environnements de développement, facilitant le transfert et le test des changements, tout en économisant le temps de l'équipe.
Qu'est-ce qu'un CI (intégration continue)?
Le principe de base de l'intégration continue est d'introduire des changements dans la branche principale du code aussi souvent et régulièrement que possible, puis de les compiler et de les tester. L'ensemble du processus est effectué sur un dépôt de code source unique et partagé accessible par toutes les personnes impliquées dans le projet. En plus de sa fonction principale en tant qu'outil d'intégration continue, CI est également une solution qui automatise les tests d'application après chaque changement introduit. Cette pratique étend le concept standard d'intégration de code pour inclure la continuité, ce qui encourage des introductions de changements de code plus fréquentes et permet de détecter les bugs et de réduire les conflits à un stade précoce. Les retours d'information précoces et l'automatisation des processus de compilation et de test aident à réduire le temps nécessaire pour passer du code approuvé à un lancement réussi dans l'environnement de production. Tous ces facteurs permettent une mise à jour et des corrections plus rapides, ce qui réduit le temps moyen de récupération (MTTR).

Source : Mind the Product
Intégration continue et livraison continue
La livraison continue, un autre élément du CI/CD, étend l'intégration continue avec la création automatique de packages de mise en œuvre prêts à l'emploi. Lorsque nous comparons les deux outils, CI est responsable du build, tandis que CD est responsable de la release. CD automatise la livraison des applications non seulement à la production, mais aussi aux environnements de développement et de test. Cependant, le processus de mise en œuvre lui-même est manuel.
L'intégration continue, comme nous l'avons déjà mentionné, est une pratique basée sur le test automatique de chaque modification du dépôt de code, tandis que la livraison continue est le processus de modifcations des nouvelles fonctionnalités, des configurations et des corrections de bugs. CI est lancé immédiatement après la détection et le téléchargement d'une modification fournie par le développeur, tandis que dans la livraison continue, le code est continuellement développé et livré jusqu'à ce que le programmeur confirme que le code est prêt à être livré.
L'intégration continue et la livraison continue travaillent en étroite collaboration, mais elles nécessitent des tests constants car le sort de l'application mise en œuvre en dépend.

Source : Atlassian
Quels sont les outils d'intégration continue ?
Le marché offre de nombreux outils d'intégration continue qui complètent le processus de développement de logiciels. Chaque outil a des caractéristiques et une architecture différentes, mais leur objectif commun est d'augmenter la qualité et la rapidité de livraison des applications. En utilisant l'intégration continue dans le cadre de sa stratégie, l'entreprise gagne du temps et de l'argent. Par conséquent, la clé est de choisir le bon outil, adapté aux objectifs de l'organisation. Les facteurs de sélection incluent les fonctionnalités disponibles, l'expansion possible de l'outil, les plateformes et langages de programmation pris en charge, le coût et la facilité d'utilisation.
L'outil sélectionné doit effectuer de manière transparente les principales étapes du processus d'intégration, à savoir :
- surveillance et téléchargement des modifications de code,
- construction de nouveau code,
- test du code,
- correction des erreurs.
L'utilisation d'outils d'intégration continue assure la stabilité et la propreté du code, et prévient les conflits, tels que les erreurs et le code dupliqué. CI peut être atteint de deux manières - en tant que construction manuelle et en tant que construction gérée par un serveur. Les deux solutions remplissent leurs fonctions au même niveau, mais le choix appartient à une entreprise donnée. Les équipes qui n'utilisent pas un serveur CI peuvent atteindre l'intégration continue en effectuant périodiquement des compilations et en créant des scripts par elles-mêmes. Une telle approche nécessite un contrôle accru sur le code source, ainsi que sur les processus de test et d'approbation. Pour les équipes qui utilisent la solution la plus récente, il existe de nombreux outils DevOps prêts à l'emploi pour faciliter l'intégration continue.
Serveur CI, également connu sous le nom de serveur de build, est utilisé principalement pour l'automatisation et pour vérifier l'intégrité des modifications fournies par le développeur avec la version actuelle du code et toutes les corrections et dépendances introduites par les autres membres de l'équipe. Les serveurs CI contiennent souvent aussi l'historique des modifications, génèrent des notifications sur l'état d'avancement du travail et combinent des informations de plusieurs projets. Il est donc important de choisir parmi un grand nombre de solutions disponibles le bon outil qui fournira une plateforme stable pour les projets de programmation en cours.
Intégration continue avec Jenkins
Jenkins est l'un des outils les plus populaires créés avec l'intégration continue à l'esprit. Cette solution open source, écrite en Java, est utilisée pour automatiser les étapes de compilation et de test de l'application et facilite l'intégration des changements requis dans le projet par les développeurs. Jenkins est un outil multi-plateformes, il peut donc être exécuté à la fois dans un environnement sur site, ainsi que dans le cloud ou en utilisant Docker. En outre, il dispose d'un grand nombre de plug-ins permettant l'intégration avec diverses plateformes. Cependant, la multitude de plug-ins, combinée à une interface graphique peu conviviale qui n'a pas changé depuis des années, nécessite beaucoup de travail et de patience de la part d'une équipe DevOps pendant la configuration du projet – généralement pas si facile.
En plus de compiler le projet, d'effectuer des tests unitaires et d'intégration, et de construire l'application, Jenkins est capable de lancer une analyse de code statique et des tests automatisés. Un autre avantage de cet outil est sa flexibilité et sa capacité à travailler en dispersion. Cela permet de lancer plusieurs processus sur plusieurs machines en même temps, accélérant la compilation, le test et le déploiement des applications, et facilitant considérablement la distribution vers différents environnements. En raison de la grande popularité de Jenkins dans le monde entier, il bénéficie d'un énorme soutien de la communauté rassemblée autour de lui.
Intégration continue avec GitLab
GitLab, connu par les développeurs comme un outil de versioning de dépôt, propose également son propre système CI. Le grand avantage de cette solution est que le dépôt et l'environnement d'exécution se trouvent au même endroit. En outre, le système dispose de nombreuses solutions intégrées qui permettent de mettre en œuvre des applications complexes. L'intégration étendue avec Kubernetes et le lancement de ses services (e.g. helm) sont principalement utilisés dans les applications basées sur des microservices. GitLab Runner, le cœur même de l'outil, permet d'exécuter des tâches à partir du niveau GitLab et est responsable du stockage sécurisé des données sensibles. Il peut être configuré localement, sur les serveurs GitLab, sur des machines sur site ou celles fournies par un fournisseur de cloud public.
La configuration de GitLab CI s'effectue à l'aide d'un fichier dans le répertoire principal du projet appelé .gitlab-ci.yml. Le fichier YAML définit les étapes du fonctionnement du pipeline et les sections concernant, par exemple, les images Docker, les commandes et les variables. En outre, l'utilisation de Docker permet également de construire, de tester et de déployer dans des environnements autres que la production. GitLab CI séduit par sa simplicité de configuration, la clarté de son interface et le soutien actif de la communauté.
AWS CI
Le fournisseur du plus grand cloud public propose le service AWS CodeBuild comme outil d'intégration continue pour compiler le code, exécuter des tests et préparer le package pour la mise en œuvre d'applications. Cette solution élimine le besoin de rendre disponible, gérer et dimensionner vos propres serveurs de compilation, car elle fournit son propre service de compilation de code source entièrement géré appelé CodeBuild. Ce serveur créé dynamiquement se dimensionne de manière continue et automatique pour faire face aux demandes de pointe d'une compilation. Un ingénieur DevOps configurant AWS CodeBuild peut utiliser des environnements de compilation prêts à l'emploi pour les langages de programmation les plus populaires (e.g. Apache, Maven), ou créer des environnements personnalisés qui utilisent leurs propres outils de compilation.
CodeBuild est facturé selon le modèle pay-as-you-go, donc vous payez pour les ressources informatiques réellement utilisées. Il existe plusieurs façons d'utiliser l'outil. Amazon Web Services permet à l'utilisateur de créer et de gérer des builds en utilisant la console Web AWS, AWS CLI, SDK et le service AWS CodePipeline.

Source : Amazon
Buddy CI
Il s'agit d'un produit polonais qui se développe très rapidement dans le monde entier. L'avantage principal de cet outil est le court délai de mise en place du processus. Cela est principalement dû à l'architecture de Buddy, qui a été conçue pour être simple et facile à utiliser. Un processus CI/CD standard peut être configuré en environ 10 minutes. Cela est soutenu par l'UX très convivial, qui se distingue de la concurrence à cet égard. La simplicité de Buddy va néanmoins de pair avec ses énormes possibilités. Il prend actuellement en charge Docker, Kubernetes, les langages et frameworks les plus populaires, et s'intègre avec les plus grands fournisseurs de cloud public.
Le rôle d'un ingénieur DevOps dans cet outil passe un peu au second plan, car Buddy dispose d'un ensemble riche d'actions prédéfinies qui permettent de configurer des compilations automatiques, des tests et des déploiements sans avoir besoin d'écrire des scripts et d'avoir des connaissances sur les langages de script. Pointer, cliquer et glisser-déposer – ce sont les principales opérations utilisées lors du travail avec Buddy. De plus, le produit offre de nombreuses solutions prêtes à l'emploi (e.g., SSL Checker, PHP CodeSniffer, Compression d'images) qui ne nécessitent que quelques minutes de configuration, alors que dans d'autres outils cela prendrait probablement plusieurs heures.

Source : devstyle
Intégration continue – Bamboo
L'outil de l'entreprise Atlassian assure une livraison continue depuis l'étape d'écriture du code jusqu'à la mise en œuvre. En plus de l'intégration complète intégrée avec d'autres outils de ce producteur – Bitbucket et Jira Software – Bamboo prend en charge tous les langages de programmation et permet l'intégration avec des technologies telles que Docker, AWS CodeDeploy et Amazon S3. Travailler avec cet outil consiste à définir des éléments tels que des plans, des étapes, des travaux et des tâches – le tout en utilisant une interface utilisateur claire et flexible. Des agents locaux et distants dédiés avec un ensemble spécifique de capacités sont utilisés pour exécuter ces processus. En outre, Bamboo permet de réaliser des tests automatiques parallèles et autorise la publication d'applications intégrées vers des environnements de test ou de production sélectionnés. En raison de sa nature commerciale, l'outil assure une stabilité opérationnelle et bénéficie d'un support professionnel 24/7.

Source : Atlassian
Outils d'intégration continue – résumé
L'intégration continue est une partie essentielle du travail des ingénieurs DevOps et des équipes de développement. Elle s'inscrit comme l'un des aspects principaux du processus de développement logiciel et du processus de gestion de projet. En plus des avantages de l'automatisation des processus, la mise en œuvre de CI conduit à de meilleurs résultats commerciaux. Les organisations qui utilisent efficacement l'intégration continue optimisent les ressources humaines, économisent de l'argent et du temps qu'elles peuvent, par exemple, utiliser pour la planification stratégique et le développement des employés.