Pipeline en tant que code expliqué de la manière la plus simple possible

Dans le développement de logiciels, les pipelines CI/CD ou d’intégration continue/livraison continue aident à créer et à déployer votre code dans différents environnements via un processus automatisé.

Cependant, la création et la maintenance de ce pipeline en soi pourraient devenir une tâche difficile. Enter Pipeline as Code – une approche dans laquelle vous créez l’intégralité de votre pipeline CI/CD au format code. Plutôt que de vous fier aux interfaces utilisateur Web et aux 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 de Pipeline as Code et de la façon dont vous pouvez créer le vôtre, comprenons d’abord ce qu’est exactement un pipeline.

Qu’est-ce qu’un pipeline dans le développement de logiciels ?

Un pipeline dans le développement de logiciels est une série d’étapes automatisées qui prennent en compte vos dernières modifications de code, y exécutent des processus spécifiques et les déploient dans l’environnement de votre choix. Comprenons mieux cela avec un exemple.

Imaginez que vous disposez de trois microservices et que vous avez ajouté de nouvelles fonctionnalités à l’un d’entre eux. Maintenant, vous souhaitez exécuter les tests unitaires au niveau du code. Une fois qu’ils réussissent, vous souhaitez également vérifier les problèmes de formatage du code. Ensuite, vous souhaitez créer votre code. Après cela, vous souhaitez le déployer sur deux environnements différents avec plusieurs machines dans chaque environnement. Enfin, vous souhaiterez exécuter des tests d’intégration pour vous assurer que vos modifications sont synchronisées avec les autres services.

Vous pouvez choisir d’effectuer manuellement toutes les étapes ci-dessus. Mais cela prendra beaucoup de temps et vous seriez sujet aux erreurs. Alors, 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 apportez des modifications à votre code, vous pouvez déclencher le pipeline sans vous soucier des étapes manuelles.

Avantages du pipeline en tant que code

Si vous utilisez des outils tels que le glisser-déposer, il devient alors difficile pour vous de suivre les modifications, de maintenir la standardisation ou de promouvoir la collaboration. Pipeline as Code est une meilleure façon de définir votre pipeline de développement logiciel.

Cela aide à 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 d’application, le code utilisé pour définir votre pipeline favorise la collaboration.

#1. Cohérence

Être défini sous forme textuelle garantit que rien ne se passe dans le désordre. En appliquant un flux de travail standard pour toutes les versions et déploiements de vos applications, vous obtenez une cohérence et réduisez le risque de problèmes inattendus.

Et avec cohérence, vous bénéficiez également de contrôles de conformité et de sécurité. Garantir un pipeline cohérent vous permet de 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 définissez 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 suivra le même processus de création et de déploiement à chaque fois que vous exécuterez votre pipeline. Vous maintenez la répétabilité sur toutes vos exécutions.

#3. Collaboration

Le code étant le support utilisé pour créer 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 d’application.

Pipeline as Code vous permet également de maintenir le contrôle des versions et d’autoriser les révisions de code. Cela garantit que les meilleures pratiques sont suivies et que les problèmes potentiels sont détectés rapidement.

Voyons maintenant comment créer votre propre pipeline à l’aide de Pipeline as Code.

Pipeline en tant que 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 facilement intégrer vos modifications de code, automatiser les tests et la création, 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é toujours croissante 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 le Syntaxe du langage spécifique au domaine (DSL) du pipeline. Le DSL est construit sur Apache Groovy.

La fondation de Pipeline as Code dans Jenkins est le Fichier Jenkins – un fichier texte contenant du code décrivant toutes les différentes étapes et actions. Apprenons comment créer votre Pipeline as Code à l’aide du fichier Jenkins.

Comment créer votre Pipeline as Code ?

Après avoir installé et lancé Jenkins, accédez à l’interface utilisateur Web de votre navigateur. Vous devrez peut-être vous connecter. Ensuite, vous vous retrouverez sur la page principale du tableau de bord. Vous allez commencer à partir de là et créer votre pipeline.

  • Sur le panneau de gauche, vous trouverez un bouton Nouvel élément.
  • Cliquez dessus pour accéder à la page suivante.
  • Une fois que vous êtes sur la nouvelle page, vous trouverez l’invite pour créer un élément.
  • Donnez un nom dans le champ Entrez un nom d’élément. C’est obligatoire.
  • Gardez à l’esprit qu’un répertoire sera créé avec le même nom. Par conséquent, il est préférable d’éviter les espaces car cela peut entraîner des effets secondaires indésirables.
  • Après cela, sélectionnez l’option Pipeline et cliquez sur le bouton OK présent en bas de l’écran.
  • La fenêtre Configuration s’affiche.
  • Cliquez sur l’option Pipeline dans le panneau de gauche ou faites défiler jusqu’à la section Pipeline.
  • Commençons par un pipeline simple que vous pouvez configurer directement depuis l’interface utilisateur.

    Créer un pipeline en tant que 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 dans laquelle vous pouvez coder votre pipeline. Jenkins conserve le script créé ici.

    Jenkins vous permet de choisir entre deux styles ou syntaxes de codage : la syntaxe déclarative et la syntaxe scriptée. Alors que Declarative est facile à utiliser et idéal pour les pipelines simples, la syntaxe scriptée est destinée aux utilisateurs expérimentés et à la conception de flux complexes.

    À l’aide de la syntaxe déclarative, créez 3 étapes simples : générer le code, tester le code et déployer le code en utilisant l’extrait de 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 indiqué 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. Maintenant, cliquez sur le bouton 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 des builds. S’il s’agit de votre première exécution, cliquez sur le numéro de build n°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 souhaiterez créer un fichier externe et l’utiliser.

    Avant de créer votre pipeline Jenkins, vous avez 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 à distance sur GitHub. Vous allez créer votre fichier Jenkins et le stocker ici.

  • Allez à votre GitHub profil. Vous pouvez créer un compte gratuit si vous n’en avez pas.
  • Créez un nouveau référentiel. Nommez-le customJenkins.
  • Sur votre ordinateur local, assurez-vous que Git est installé.
  • Créez un répertoire à l’emplacement de votre choix.
  • Naviguez dans le répertoire et ouvrez votre terminal.
  • Initialisez un référentiel Git vide à l’aide de la commande git init.
  • Maintenant, créez un nouveau fichier, qui sera votre fichier Jenkins. Appelons-le customJenkinsfile.
  • Écrivez votre pipeline sous forme de code dans ce fichier. À titre d’exemple, utilisez celui mentionné ci-dessous :
  • 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 fichier nouvellement créé à Git à l’aide de la commande git add –all dans votre terminal.
  • Validez le fichier sur Git à l’aide de la commande git commit -m « Création d’un fichier jenkins personnalisé ».
  • Liez votre référentiel Git local à votre référentiel distant à l’aide de git remote add origin [email protected]:/customJenkins.git.
  • Ensuite, téléchargez le fichier sur un serveur distant (GitHub) à l’aide de git push –set-upstream origin master.
  • Vous avez maintenant créé un référentiel distant sur GitHub qui contient un 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 à partir d’un pipeline existant.
  • Faites défiler jusqu’à la section Pipeline.
  • Dans la liste déroulante Définition, sélectionnez l’option Script de pipeline à partir de SCM.
  • Sélectionnez Git dans l’option SCM.
  • Fournissez le lien de votre référentiel GitHub dans l’URL du référentiel sous Dépôts.
  • Assurez-vous que le spécificateur de branche est défini sur */master sous Branches à créer.
  • Faites défiler jusqu’à Chemin du script. Ici, fournissez le nom du fichier Jenkins comme 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 un pipeline à l’aide du 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 Pipeline as Code. De plus, 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 avec chaque commit Git. Ensuite, il est temps d’examiner les meilleures pratiques.

    Meilleures pratiques pour écrire un pipeline efficace sous forme de code

    Examinons les meilleures pratiques à suivre lors de l’écriture de votre pipeline sous forme de code.

    • Gardez votre pipeline propre et évitez d’écrire trop de conditions complexes.
    • Si vous exécutez trop de commandes dans le pipeline, divisez-les en différentes étapes.
    • Utilisez des fichiers externes avec contrôle de version pour votre pipeline en tant que scripts de code.
    • Utilisez les fonctionnalités du langage de codage, comme Groovy, pour intégrer différentes étapes.
    • Évitez les appels à Jenkins.getInstance ou à ses accesseurs pour atténuer les problèmes de sécurité et de performances.
    • N’écrasez pas les commandes de pipeline intégrées telles que sh et timeout.
    • Créez des outils ou des scripts externes pour les tâches complexes gourmandes en CPU et branchez-les à votre pipeline.
    • Tirez parti de la grande variété de plugins existants disponibles pour Jenkins pour aborder votre cas d’utilisation.
    • Assurez-vous d’avoir intégré la gestion des exceptions et des erreurs, car les choses peuvent mal tourner.
    • Ne créez pas votre pipeline en tant que code étroitement associé à beaucoup de logique métier à l’intérieur.
    • Utilisez des arguments paramétrés dans la mesure du possible pour rendre votre pipeline réutilisable.

    Pipeline as Code : une approche simple pour les 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 création, les tests et le déploiement de vos modifications de code, l’exploitation 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 fier à 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. De plus, 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 désormais comment créer vos propres pipelines à l’aide de Jenkins, un outil CI/CD largement utilisé. Jenkins offre une plate-forme puissante et flexible pour implémenter Pipeline as Code via son fichier Jenkins. Suivez les meilleures pratiques et créez des workflows qui répondent à tous les cas d’utilisation de votre pipeline.

    Si vous souhaitez en savoir plus sur Jenkins, vous pouvez découvrir comment créer votre propre pipeline Jenkins.