Pipeline en tant que code expliqué de la manière la plus simple possible
Dans le domaine du développement logiciel, les pipelines CI/CD, ou intégration continue et livraison continue, sont essentiels pour automatiser la création et le déploiement de votre code dans divers environnements. Ils permettent une gestion plus fluide et efficace de vos projets.
Cependant, la conception et la maintenance de ces pipelines peuvent rapidement devenir complexes. C'est là qu'intervient le concept de "Pipeline as Code" (Pipeline en tant que Code). Cette approche consiste à définir l'intégralité de votre pipeline CI/CD à l'aide de code. Au lieu d'utiliser des interfaces graphiques et des outils de glisser-déposer, vous spécifiez le comportement de votre pipeline via des fichiers de configuration. Ces fichiers définissent la manière dont votre code d'application sera construit, testé et déployé.
Avant de plonger dans les détails du "Pipeline as Code" et de découvrir comment créer le vôtre, il est essentiel de bien comprendre ce qu'est un pipeline dans le contexte du développement logiciel.
Qu'est-ce qu'un pipeline en développement logiciel ?
Un pipeline en développement logiciel est une suite d'étapes automatisées. Ces étapes prennent en entrée les dernières modifications de votre code, exécutent des opérations spécifiques et déploient les modifications dans l'environnement cible de votre choix. Prenons un exemple pour mieux illustrer ce concept.
Imaginez que vous travaillez sur trois microservices et que vous avez ajouté une nouvelle fonctionnalité à l'un d'eux. Vous souhaitez d'abord exécuter des tests unitaires sur le code, et si ces tests réussissent, vous souhaitez vérifier le formatage du code. Ensuite, vous allez vouloir construire le code. Après la construction, vous voulez le déployer sur deux environnements différents, chacun comprenant plusieurs machines. Enfin, vous devrez exécuter des tests d'intégration afin de confirmer la bonne synchronisation de vos modifications avec les autres services.
Il est possible d'effectuer toutes ces étapes manuellement, mais cela demanderait beaucoup de temps et serait source d'erreurs. Existe-t-il une façon de les automatiser ? La réponse est oui. Vous pouvez créer un pipeline en définissant toutes les étapes nécessaires. Ensuite, à chaque modification de votre code, il suffira de déclencher le pipeline, sans avoir à se soucier des étapes manuelles.
Avantages du Pipeline en tant que Code
L'utilisation d'outils de type "glisser-déposer" pour configurer un pipeline peut rendre difficile le suivi des modifications, le maintien de la standardisation et la promotion de la collaboration. L'approche "Pipeline as Code" offre une solution plus robuste pour définir votre pipeline de développement logiciel.
Elle favorise la cohérence en utilisant l'automatisation, ce qui assure la répétabilité des processus. Le même pipeline peut ainsi être utilisé pour différents systèmes. De plus, le code qui définit votre pipeline favorise la collaboration, à l'instar du code d'application.
#1. Cohérence
La définition d'un pipeline sous forme de texte assure un déroulement structuré et organisé. En appliquant un flux de travail standard pour chaque version et déploiement de vos applications, vous assurez la cohérence et minimisez le risque de problèmes inattendus.
La cohérence facilite également les contrôles de conformité et de sécurité. En ayant un pipeline uniforme, vous pouvez définir des analyses de sécurité et des contrôles de vulnérabilité complets.
#2. Répétabilité
Une fois votre pipeline créé et l'automatisation définie, chaque version de votre application suivra les mêmes étapes et contrôles.
Le processus de construction et de déploiement du code restera identique à chaque exécution de votre pipeline, garantissant la répétabilité de chaque opération.
#3. Collaboration
En utilisant le code pour définir votre pipeline, vous encouragez la collaboration. Plusieurs membres de vos équipes peuvent contribuer au même code, de la même manière qu'ils le font pour le code de l'application.
"Pipeline as Code" permet également d'utiliser le contrôle de version et de réaliser des revues de code. Cela garantit le respect des bonnes pratiques et la détection rapide des problèmes potentiels.
Découvrons maintenant comment mettre en place votre propre pipeline en utilisant l'approche "Pipeline as Code".
Pipeline en tant que code dans Jenkins
En matière de systèmes d'intégration et de déploiement continus (CI/CD), Jenkins est un serveur d'automatisation open source de premier plan. Il facilite l'intégration des modifications de code, l'automatisation des tests et de la construction, ainsi que le déploiement de logiciels. Jenkins offre une plateforme fiable et efficace.
Que vous soyez un débutant souhaitant en apprendre davantage sur les pipelines d'automatisation ou un professionnel développant des systèmes d'entreprise complexes, Jenkins est capable de répondre aux besoins uniques de chaque projet. Ses nombreux plugins et sa communauté active peuvent vous aider à tirer le meilleur parti de votre automatisation.
Dans Jenkins, un pipeline est une série de plugins définis dans un ordre spécifique, qui compose votre système CI/CD. Vous pouvez créer votre pipeline en utilisant du code grâce à la syntaxe DSL (Domain Specific Language) spécifique aux pipelines. Cette syntaxe est basée sur Apache Groovy.
La base du "Pipeline as Code" dans Jenkins est le fichier Jenkins, un fichier texte contenant le code qui décrit les différentes étapes et actions du pipeline. Découvrons comment créer votre "Pipeline as Code" à l'aide d'un fichier Jenkins.
Comment créer votre Pipeline as Code ?
Une fois Jenkins installé et lancé, accédez à l'interface utilisateur Web de votre navigateur. Vous devrez peut-être vous connecter. Vous serez alors dirigé vers la page principale du tableau de bord. C'est à partir de là que vous allez commencer à construire votre pipeline.

- Dans le panneau de gauche, vous trouverez un bouton "Nouvel élément".
- Cliquez dessus pour accéder à la page suivante.
- Une fois sur la nouvelle page, vous verrez l'invite pour créer un nouvel élément.
- Saisissez un nom dans le champ "Entrez un nom d'élément". C'est un champ obligatoire.
- Notez qu'un répertoire sera créé avec le même nom, il est donc recommandé d'éviter les espaces qui pourraient entraîner des effets secondaires indésirables.
- Sélectionnez ensuite l'option "Pipeline" et cliquez sur le bouton "OK" situé 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 la page jusqu'à la section "Pipeline".

Commençons par un pipeline simple que vous pouvez configurer directement via l'interface utilisateur.
Créer un pipeline en tant que code directement dans Jenkins
Une fois dans la section "Pipeline", vous êtes prêt à créer votre premier "Pipeline as 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 enregistre le script que vous créez ici.
Jenkins offre deux syntaxes pour coder votre pipeline : la syntaxe déclarative et la syntaxe scriptée. La syntaxe déclarative est facile à utiliser et adaptée aux pipelines simples, tandis que la syntaxe scriptée est destinée aux utilisateurs avancés et à la conception de flux complexes.
À l'aide de la syntaxe déclarative, créons trois étapes simples : la construction du code, le test du code et le déploiement du code. Utilisez le code suivant :
pipeline {
agent any
stages {
stage('Build Code') {
steps {
echo 'This is the step for build...'
}
}
stage('Test Code') {
steps {
echo 'This is the step to test...'
}
}
stage('Deploy Code') {
steps {
echo 'This step deploys the code...'
}
}
}
}
Vous pouvez également utiliser la syntaxe scriptée, comme illustré ci-dessous :
node {
stage('Build Code') {
echo 'This is the step for build...'
}
stage('Test Code') {
echo 'This is the step to test...'
}
stage('Deploy Code') {
echo 'This step deploys the code...'
}
}
Cliquez sur "Enregistrer". Ensuite, cliquez sur le bouton "Construire maintenant" situé dans le panneau de gauche. Cela déclenchera le pipeline que vous venez de créer.
Une fois le pipeline terminé, vous pouvez le consulter dans l'historique des builds. Si c'est votre première exécution, cliquez sur le numéro de build n°1. Puis, cliquez sur "Console Output" dans le panneau de gauche. Vous y trouverez les trois instructions "echo" que vous avez insérées dans le code de votre pipeline à chaque étape.

Créer un pipeline en tant que code à l'aide d'un fichier externe
Lorsque votre pipeline devient plus complexe, sa maintenance directement dans Jenkins devient difficile. Il est alors préférable d'utiliser un fichier externe.
Avant de créer votre pipeline Jenkins, vous aurez besoin d'un référentiel externe et d'un système de contrôle de version. Créons un référentiel Git et hébergeons-le sur GitHub. C'est là que vous allez stocker votre fichier Jenkins.
- Rendez-vous sur votre profil GitHub. Créez un compte gratuit si vous n'en avez pas.
- Créez un nouveau référentiel. Nommez-le "customJenkins".
- Assurez-vous que Git est installé sur votre ordinateur.
- Créez un répertoire à l'endroit de votre choix.
- Naviguez dans ce répertoire et ouvrez votre terminal.
- Initialisez un référentiel Git vide avec la commande "git init".
- Créez un nouveau fichier, qui sera votre fichier Jenkins. Appelons-le "customJenkinsfile".
- Écrivez votre code de pipeline dans ce fichier. Par exemple, utilisez le code suivant :
pipeline {
agent any
stages {
stage('Build Code') {
steps {
echo 'This is the step for build defined in custom file...'
}
}
stage('Test Code') {
steps {
echo 'This is the step to test defined in custom file...'
}
}
stage('Deploy Code') {
steps {
echo 'This step defined in custom file deploys the code...'
}
}
}
}
- Ajoutez le nouveau fichier à Git en utilisant la commande "git add –all" dans votre terminal.
- Validez le fichier sur Git avec la commande "git commit -m "Création d'un fichier jenkins personnalisé"".
- Liez votre référentiel Git local à votre référentiel distant avec la commande "git remote add origin [email protected]:
/customJenkins.git". - Enfin, téléchargez le fichier sur le serveur distant (GitHub) avec la commande "git push –set-upstream origin master".
Vous avez maintenant créé un référentiel distant sur GitHub qui contient votre fichier Jenkins personnalisé. Configurons Jenkins pour l'utiliser.
Configurer Jenkins pour utiliser Jenkinsfile depuis GitHub
- Ouvrez votre tableau de bord Jenkins.
- Créez un nouveau pipeline ou cliquez sur "Configurer" dans le panneau de gauche depuis un pipeline existant.
- Faites défiler la page jusqu'à la section "Pipeline".
- Dans la liste déroulante "Définition", sélectionnez l'option "Script de pipeline à partir de SCM".
- Choisissez "Git" dans l'option "SCM".
- Saisissez l'URL de votre référentiel GitHub dans le champ "URL du référentiel" sous "Dépôts".
- Assurez-vous que le spécificateur de branche est défini sur "*/master" sous "Branches à construire".
- Faites défiler jusqu'au champ "Chemin du script". Saisissez ici le nom de votre fichier Jenkins, par exemple "customJenkinsfile". Cliquez sur "Enregistrer".
Après cela, exécutez votre pipeline. Jenkins récupérera d'abord votre code depuis le référentiel distant. Il créera ensuite le pipeline à l'aide de votre fichier Jenkins personnalisé et exécutera toutes les étapes.

Vous avez maintenant créé avec succès votre propre pipeline de développement logiciel en utilisant l'approche "Pipeline as Code". Vous avez également activé le contrôle de version pour votre script de pipeline. Toutes les modifications que vous apportez à votre code de pipeline seront désormais suivies via les commits Git. Il est temps maintenant d'examiner les meilleures pratiques.
Meilleures pratiques pour écrire un pipeline efficace sous forme de code
Voici quelques meilleures pratiques à suivre lorsque vous écrivez votre pipeline sous forme de code :
- Maintenez votre pipeline propre et évitez d'écrire des conditions trop complexes.
- Si votre pipeline exécute un grand nombre de commandes, divisez-les en étapes distinctes.
- Utilisez des fichiers externes avec contrôle de version pour stocker votre code de pipeline.
- Tirez parti des fonctionnalités de votre langage de programmation, comme Groovy, pour intégrer différentes étapes.
- Évitez les appels à "Jenkins.getInstance" ou à ses accesseurs pour des raisons de sécurité et de performance.
- Ne surchargez pas les commandes de pipeline intégrées comme "sh" et "timeout".
- Créez des outils ou des scripts externes pour les tâches complexes qui consomment beaucoup de ressources CPU. Connectez-les ensuite à votre pipeline.
- Utilisez les nombreux plugins disponibles pour Jenkins afin de répondre à vos besoins spécifiques.
- Assurez-vous que la gestion des exceptions et des erreurs est bien intégrée, car des problèmes peuvent survenir.
- Évitez de créer un pipeline "as code" trop étroitement lié à votre logique métier.
- Utilisez des arguments paramétrés lorsque c'est possible, pour rendre votre pipeline réutilisable.
Pipeline as Code : une approche simple pour les processus complexes
Pour résumer, "Pipeline as Code" simplifie l'automatisation de votre pipeline CI/CD en représentant l'ensemble du processus sous forme de code. Tandis que les pipelines CI/CD automatisent la construction, le test et le déploiement de votre code, le "Pipeline as Code" va encore plus loin. Il vous permet de définir votre flux de travail sous forme de texte au lieu d'utiliser des interfaces graphiques.
Avec "Pipeline as Code", vous vous assurez que chaque étape de votre workflow s'exécute dans le bon ordre, réduisant ainsi les risques de problèmes inattendus. De plus, vous bénéficiez de plusieurs avantages, comme 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 largement utilisé. Jenkins offre une plateforme puissante et flexible pour mettre en œuvre "Pipeline as Code" à travers son fichier Jenkins. En suivant les meilleures pratiques, vous créerez des workflows qui répondent à toutes les exigences de votre pipeline.
Si vous souhaitez en savoir plus sur Jenkins, vous pouvez apprendre comment créer votre propre pipeline Jenkins.