Dans le domaine du développement logiciel, les pipelines CI/CD (Continuous Integration/Continuous Delivery) permettent de construire et de déployer votre code dans différents environnements par le biais d’un processus automatisé.
Toutefois, la création et la maintenance de ces pipelines peuvent s’avérer difficiles. Voici Pipeline as Code – une approche dans laquelle vous créez l’ensemble de votre pipeline CI/CD sous forme de code. Plutôt que de vous appuyer sur des interfaces utilisateur Web et des outils de glisser-déposer, vous utilisez des fichiers de configuration pour définir la manière dont le code de votre application sera construit, testé et déployé.
Mais avant d’entrer dans les détails du pipeline en tant que code et de la manière dont vous pouvez créer le vôtre, commençons par comprendre ce qu’est exactement un pipeline.
Qu’est-ce qu’un pipeline dans le développement logiciel ?
Un pipeline de développement logiciel est une série d’étapes automatisées qui prend vos dernières modifications de code, exécute des processus spécifiques et les déploie dans l’environnement de votre choix. Comprenons mieux cela à l’aide d’un exemple.
Imaginez que vous ayez trois microservices et que vous ayez ajouté de nouvelles fonctionnalités à l’un d’entre eux. Vous voulez maintenant exécuter les tests unitaires au niveau du code. Une fois qu’ils sont réussis, vous voulez également vérifier les problèmes de formatage du code. Ensuite, vous voulez construire votre code. Ensuite, vous voulez le déployer dans deux environnements différents avec plusieurs machines dans chaque environnement. Enfin, vous devez exécuter des tests d’intégration pour vous assurer que vos modifications sont synchronisées avec les autres services.
Vous pouvez choisir de réaliser toutes ces étapes manuellement. Mais cela vous prendra beaucoup de temps et vous risquez de commettre des erreurs. Existe-t-il un moyen de les automatiser ? Oui ! Vous pouvez créer un pipeline et définir toutes les étapes. Par la suite, chaque fois que vous apporterez des modifications à votre code, vous pourrez déclencher le pipeline et ne plus vous soucier des étapes manuelles.
Avantages de Pipeline as Code
Si vous utilisez des outils tels que le glisser-déposer, il vous sera difficile de suivre les modifications, de maintenir la normalisation ou de promouvoir la collaboration. Le pipeline en tant que code est une meilleure façon de définir votre pipeline de développement logiciel.
Il permet de garder les choses cohérentes. En favorisant l’automatisation, vous obtenez la répétabilité et utilisez le même pipeline pour d’autres systèmes. Et tout comme le code de l’application, le code utilisé pour définir votre pipeline favorise la collaboration.
#1. Cohérence
Le fait d’être défini dans un format textuel garantit que rien ne se passe dans le désordre. En appliquant un flux de travail standard pour toutes les créations et tous les déploiements de votre application, vous obtenez une cohérence et réduisez le risque de problèmes inattendus.
Et avec la cohérence, vous obtenez également des contrôles de conformité et de sécurité. En garantissant un pipeline cohérent, vous pouvez définir vos analyses de sécurité et vos contrôles de vulnérabilité de manière à ce que rien ne vous échappe.
#2. Répétabilité
Créez votre pipeline et mettez en place l’automatisation. En plus de la cohérence, votre pipeline automatisé garantit que chaque code d’application passe par les mêmes étapes et vérifications.
Votre code passera par le même processus de construction et de déploiement chaque fois que vous exécuterez votre pipeline. Vous maintenez la répétabilité à travers toutes vos exécutions.
#3. Collaboration
Le code étant le moyen par lequel vous créez votre pipeline, vous favorisez la collaboration. Plusieurs personnes au sein de vos équipes peuvent contribuer au même code, tout comme vous le faites pour le code de l’application.
Le pipeline en tant que code vous permet également de maintenir le contrôle des versions et d’autoriser les révisions de code. Cela permet de s’assurer que les meilleures pratiques sont respectées et que les problèmes potentiels sont détectés rapidement.
Voyons maintenant comment vous pouvez créer votre propre pipeline à l’aide de Pipeline as Code.
Pipeline as Code dans Jenkins
Lorsqu’il s’agit de systèmes d’intégration et de déploiement continus (CI/CD), Jenkins est le principal serveur d’automatisation open-source. Avec Jenkins, vous pouvez intégrer sans effort vos modifications de code, automatiser les tests et la construction, et déployer des logiciels. Et vous pouvez faire tout cela de manière fiable et efficace.
Que vous soyez un amateur essayant d’en savoir plus sur les pipelines d’automatisation ou que vous construisiez des systèmes d’entreprise complexes, Jenkins répond à toutes les exigences uniques de votre projet. Son abondance de plugins et sa communauté en constante expansion peuvent vous aider à tirer le meilleur parti de votre automatisation.
Dans Jenkins, un pipeline est un ensemble de différents plugins définis dans un ordre particulier qui crée votre système CI/CD. Qu’il s’agisse de cas d’utilisation simples ou complexes, vous pouvez créer votre pipeline en utilisant du code avec la syntaxe du langage spécifique au domaine (DSL) Pipeline. Le DSL est construit au-dessus d’Apache Groovy.
La base de Pipeline as Code dans Jenkins est le Jenkinsfile – un fichier texte qui contient le code décrivant toutes les différentes étapes et actions. Voyons comment créer votre Pipeline as Code à l’aide du Jenkinsfile.
Comment créer votre Pipeline as Code ?
Après avoir installé et lancé Jenkins, accédez à l’interface Web de votre navigateur. Il se peut que vous deviez vous connecter. Ensuite, vous arriverez sur la page principale du tableau de bord. Vous allez commencer par créer votre pipeline.
- Sur le panneau de gauche, vous trouverez un bouton ” Nouvel élément”.
- Cliquez dessus pour passer à la page suivante.
- Une fois sur la nouvelle page, vous trouverez l’invite à créer un élément.
- Donnez un nom dans le champ Entrez un nom d’élément. Ce champ est obligatoire.
- Gardez à l’esprit qu’un répertoire sera créé avec le même nom. Il est donc préférable d’éviter les espaces blancs, car ils peuvent entraîner des effets secondaires indésirables.
- Ensuite, sélectionnez l’option Pipeline et cliquez sur le bouton OK présent en bas de l’écran.
- La fenêtre de configuration s’affiche.
- Cliquez sur l’option Pipeline dans le panneau de gauche ou faites défiler l’écran jusqu’à la section Pipeline.
Commençons par un pipeline simple que vous pouvez configurer directement depuis l’interface utilisateur.
Créer un pipeline sous forme de code directement dans Jenkins
Une fois que vous êtes dans la section Pipeline, vous êtes prêt à créer votre premier pipeline en tant que code.
Dans le menu déroulant Définition, sélectionnez l’option Script de pipeline. En dessous, vous trouverez une zone de script où vous pouvez coder votre pipeline. Jenkins gère le script créé ici.
Jenkins vous permet de choisir entre deux styles de codage ou syntaxes – la syntaxe déclarative et la syntaxe scriptée. Alors que la syntaxe déclarative est facile à utiliser et idéale pour les pipelines simples, la syntaxe scriptée est destinée aux utilisateurs chevronnés et à la conception de flux complexes.
En utilisant la syntaxe déclarative, créez 3 étapes simples – Construire le code, Tester le code et Déployer le code en utilisant l’extrait de code suivant :
pipeline {
agent any
stages {
stage('Build Code') {
étapes {
echo 'Ceci est l'étape de construction...'
}
}
stage('Test Code') {
étapes {
echo 'Ceci est l'étape de test...'
}
}
stage('Deploy Code') {
étapes {
echo 'Cette étape déploie le code...'
}
}
}
}
Vous pouvez également utiliser la syntaxe scriptée comme indiqué ci-dessous :
node {
stage('Build Code') {
echo 'Ceci est l'étape de construction...'
}
stage('Test Code') {
echo 'Ceci est l'étape de test...'
}
stage('Deploy Code') {
echo 'Cette étape déploie le code...'
}
}
Cliquez sur Save. Maintenant, cliquez sur le bouton Build Now (Construire maintenant) présent dans le panneau de gauche. Cela déclenchera le pipeline que vous venez de créer.
Une fois votre pipeline terminé, vous pouvez le vérifier dans l’historique de la construction. S’il s’agit de votre première exécution, cliquez sur le numéro de build #1 présent. Ensuite, cliquez sur Console Output présent dans le panneau de gauche. Vous trouverez les 3 instructions echo que vous avez dans le code de votre pipeline à chaque étape.
Créer un pipeline en tant que code à l’aide d’un fichier externe
Il devient difficile de maintenir votre pipeline directement dans Jenkins lorsqu’il commence à devenir complexe. Dans ce cas, vous voudrez créer un fichier externe et l’utiliser.
Avant de créer votre pipeline Jenkins, vous avez besoin d’un dépôt externe et d’un système de contrôle de version. Créons un dépôt Git et hébergeons-le à distance sur GitHub. Vous allez créer votre fichier Jenkins et le stocker ici.
- Accédez à votre profil GitHub. Vous pouvez créer un compte gratuit si vous n’en avez pas.
- Créez un nouveau dépôt. Nommez-le customJenkins.
- Sur votre machine locale, assurez-vous que Git est installé.
- Créez un répertoire dans l’emplacement de votre choix.
- Naviguez dans le répertoire et ouvrez votre terminal.
- Initialisez un dépôt Git vide en utilisant la commande
git init
. - Maintenant, créez un nouveau fichier, qui sera votre Jenkinsfile. Nommons-le customJenkinsfile.
- Ecrivez votre Pipeline en tant que Code dans ce fichier. A titre d’exemple, utilisez celui mentionné ci-dessous :
pipeline {
agent any
étapes {
stage('Build Code') {
étapes {
echo 'Ceci est l'étape de construction définie dans le fichier personnalisé...'
}
}
stage('Test Code') {
étapes {
echo 'Ceci est l'étape de test définie dans le fichier personnalisé...'
}
}
stage('Deploy Code') {
étapes {
echo 'Cette étape définie dans le fichier personnalisé déploie le code...'
}
}
}
}
- Ajoutez le fichier nouvellement créé à Git en utilisant la commande
git add --all
dans votre terminal. - Committez le fichier dans Git à l’aide de la commande
git commit -m "Created a custom jenkinsfile"
. - Liez votre dépôt Git local à votre dépôt distant en utilisant
git remote add origin git@github.com:<votre nom d'utilisateur>/customJenkins.git
. - Ensuite, téléchargez le fichier vers le dépôt distant (GitHub) en utilisant
git push --set-upstream origin master
.
Vous avez maintenant créé un dépôt distant sur GitHub qui contient un fichier Jenkins personnalisé. Configurons Jenkins pour qu’il l’utilise.
Configurer Jenkins pour utiliser le Jenkinsfile de GitHub
- Ouvrez votre tableau de bord Jenkins.
- Créez un nouveau pipeline, ou cliquez sur Configure dans le panneau de gauche à partir d’un pipeline existant.
- Descendez jusqu’à la section Pipeline.
- Dans le menu déroulant Définition, sélectionnez l’option Pipeline script from SCM.
- Sélectionnez Git dans l’option SCM.
- Indiquez le lien de votre dépôt GitHub dans l’URL du dépôt sous Dépôts.
- Assurez-vous que le spécificateur de branche est
*/master
sous Branches à construire. - Faites défiler vers le bas jusqu’à Script Path. Indiquez ici le nom du fichier Jenkins en tant que
customJenkinsfile
. Cliquez sur Save.
Ensuite, exécutez votre pipeline. Jenkins va d’abord récupérer votre code dans le référentiel distant. Il créera ensuite un pipeline en utilisant le fichier Jenkins personnalisé et exécutera toutes les étapes.
Vous avez maintenant créé avec succès votre propre pipeline de développement logiciel à l’aide de Pipeline as Code. En outre, vous avez activé le contrôle de version sur votre script de pipeline. Toutes les modifications que vous apportez au code de votre pipeline peuvent désormais être suivies à chaque livraison Git. Il est maintenant temps d’examiner les meilleures pratiques.
Meilleures pratiques pour écrire un code de pipeline efficace
Examinons les meilleures pratiques que vous devriez suivre lorsque vous écrivez votre pipeline en tant que code.
- Gardez votre pipeline propre et évitez d’écrire trop de conditions complexes.
- Si vous effectuez trop de commandes à l’intérieur du pipeline, décomposez-les en différentes étapes.
- Utilisez des fichiers externes avec contrôle de version pour vos scripts de pipeline en tant que code.
- Utilisez les fonctionnalités du langage de codage, comme Groovy, pour intégrer les différentes étapes.
- Évitez les appels à
Jenkins.getInstance
ou à ses accesseurs afin de limiter les problèmes de sécurité et de performances. - N’écrasez pas les commandes intégrées du pipeline, telles que
sh
ettimeout
. - Créez des outils ou des scripts externes pour les tâches complexes à forte intensité de CPU et intégrez-les à votre pipeline.
- Tirez parti de la grande variété de plugins existants pour Jenkins afin de répondre à votre cas d’utilisation.
- Assurez-vous d’avoir intégré la gestion des exceptions et des erreurs, car les choses peuvent mal tourner.
- Ne faites pas en sorte que votre pipeline soit étroitement couplé à une logique métier.
- Utilisez des arguments paramétrés dans la mesure du possible pour rendre votre pipeline réutilisable.
Le pipeline en tant que code : Une approche simple pour des processus complexes
En résumé, Pipeline as Code simplifie l’automatisation de votre pipeline CI/CD en représentant l’ensemble du processus sous forme de code. Alors que les pipelines CI/CD automatisent la construction, le test et le déploiement de vos modifications de code, l’utilisation de Pipeline as Code va encore plus loin. Il vous permet de définir votre flux de travail sous forme de texte plutôt que de vous appuyer sur des interfaces graphiques.
Avec Pipeline as Code, vous vous assurez que chaque étape de votre flux de travail se déroule dans le bon ordre. Vous réduisez le risque de rencontrer des problèmes indésirables. En outre, vous bénéficiez de plusieurs avantages, notamment la cohérence, la répétabilité et la promotion de la collaboration.
Grâce à ce guide, vous savez maintenant comment créer vos propres pipelines à l’aide de Jenkins, un outil CI/CD très répandu. Jenkins offre une plateforme puissante et flexible pour la mise en œuvre de Pipeline as Code grâce à son fichier Jenkinsfile. Suivez les meilleures pratiques et créez des flux de travail qui répondent à tous vos cas d’utilisation des pipelines.
Si vous souhaitez en savoir plus sur Jenkins, vous pouvez consulter comment créer votre propre pipeline Jenkins.