Comment créer un pipeline CI/CD Jenkins

Saviez-vous que Jenkins dispose d’une prise en charge intégrée de l’intégration continue / livraison continue CI/CD ? La mise en œuvre d’un pipeline Jenkins CI/CD avec votre projet peut considérablement améliorer votre processus de développement logiciel.

Jenkins est l’un des outils d’automatisation DevOps les plus populaires à ce jour. Et si vous souhaitez vous lancer avec le pipeline Jenkins CI/CD, vous êtes au bon endroit.

Lisez la suite, et dans ce tutoriel, vous allez apprendre comment configurer un pipeline Jenkins CI/CD avec GitHub.

Prérequis

Ce tutoriel suppose que vous disposez des exigences suivantes pour suivre les exemples.

Vous devez déjà avoir une installation de Jenkins. Les exemples de ce tutoriel utiliseront une version Jenkins v2.319.1 sur un ordinateur Windows 10 20H2.

  • Votre console web Jenkins doit être accessible sur Internet.
  • A Github account to which you’ll connect with the Jenkins CI CD pipeline.
  • Git SCM. Ce tutoriel utilise la dernière version (2.34.1) 64 bits de Git pour Windows.

Préparation du référentiel GitHub

Ce tutoriel implique l’intégration d’un pipeline CI/CD Jenkins avec un référentiel GitHub. Au lieu de créer un projet vide, forker un référentiel existant est plus rapide pour démarrer.

1. Tout d’abord, ouvrez un navigateur et connectez-vous à votre compte GitHub.

2. Ensuite, accédez à l’URL du référentiel d’exemple (application MyShuttle2 de Microsoft Connect 2016). Une fois sur la page du dépôt, cliquez sur le bouton Fork près de la section en haut à droite de la page.

Forking a repo

Attendez que le processus de fork soit terminé. À la fin, vous aurez le référentiel nommé « nom_utilisateur/MyShuttle2 » sur votre compte GitHub auquel vous avez un accès complet.

3. Maintenant, ajoutez un nouveau fichier au référentiel nommé Jenkinsfile. Un Jenkinsfile est un fichier texte qui contient la définition d’un pipeline Jenkins. Ce fichier doit être à l’intérieur du référentiel de code source.

Sur la page de votre référentiel, cliquez sur Ajouter un fichier -> Créer un nouveau fichier.

Adding a new file

4. Tapez Jenkinsfile comme nom du nouveau fichier. Ensuite, copiez le code ci-dessous et collez-le dans votre Jenkinsfile.

  • Le terme pipeline est un ensemble d’instructions écrites en code pour une livraison continue.
  • A stage block contains a series of steps in a pipeline, visualizing the Jenkins pipeline process.
  • A step is a single task that executes a specific process at a defined time. A pipeline contains a series of steps.

Ce Jenkinsfile n’est qu’un exemple basique d’un script de pipeline. En production, les scripts de pipeline seront plus complexes et incluront plusieurs actions sur une ou toutes les étapes.

pipeline {
    agent any

    stages {
        stage('Build') {
            steps {
                echo 'Building..'
            }
        }
        stage('Test') {
            steps {
                echo 'Testing..'
            }
        }
        stage('Deploy') {
            steps {
                echo 'Deploying....'
            }
        }
    }
}

Après avoir écrit le code, votre fichier ressemblera à la capture d’écran ci-dessous.

Jenkinsfile pipeline script

5. Faites défiler jusqu’en bas de la page et cliquez sur Commit new file.

Committing the new file

Vous avez maintenant un Jenkinsfile dans votre dépôt.

New Jenkinsfile on the GitHub repo

6. Enfin, copiez l’URL du dépôt. Pour ce faire, cliquez sur Code et cliquez sur le bouton Copy. Vous aurez besoin de l’URL résultante lors de la création du pipeline Jenkins CI CD.

Copying the repository URL

Création d’un pipeline Jenkins CI CD

Développer une fonctionnalité implique de nombreux changements de code. Entre chaque changement de code, il y a un ensemble de tâches à effectuer. Ces tâches peuvent inclure la validation des changements, la compilation, les tests et l’emballage.

Des services d’automatisation tels que Jenkins permettent d’effectuer ces étapes rapidement et sans erreur.

1. Ouvrez un navigateur, accédez à votre URL Jenkins et connectez-vous.

2. Sur le Tableau de bord de Jenkins, cliquez sur l’option Nouveau élément dans le menu de gauche.

Creating a new item in Jenkins

3. Entrez le nom du nouveau pipeline. Pour ce tutoriel, vous l’appellerez demoPipeline et sélectionnez le modèle Pipeline. Cliquez sur OK pour terminer.

Creating a Pipeline project

4. Cochez la case du projet GitHub sous l’onglet Général de la page de configuration. Ensuite, collez l’URL du dépôt que vous avez copiée précédemment dans la case URL du projet.

Specifying the GitHub repository URL

5. Faites défiler jusqu’à la section Triggers de construction et cochez la case GitHub hook trigger for GITScm polling, comme indiqué sur la capture d’écran ci-dessous.

Specifying the build trigger

6. Ensuite, faites défiler plus bas jusqu’à la section Pipeline et sélectionnez/spécifiez les valeurs suivantes :

  • Définition : Script de pipeline à partir de SCM
  • SCM : Git
  • URL du dépôt : Votre URL de dépôt
Specifying the pipeline values

7. Faites défiler jusqu’au bas de la page et vérifiez que la valeur de Chemin du script est Jenkinsfile. Cette valeur fait référence au Jenkinsfile que vous avez créé précédemment lors de la préparation de votre dépôt Github. Enfin, cliquez sur Enregistrer.

Saving the pipeline configuration

Configuration d’un webhook dans GitHub

Pour que Jenkins lance un nouveau travail, vous devez d’abord créer un webhook dans le dépôt GitHub. Ce webhook informera Jenkins dès qu’un nouveau push se produit dans le dépôt.

Suivez les étapes ci-dessous pour créer un webhook.

1. Accédez à la page Paramètres et cliquez sur l’onglet Webhooks de votre dépôt GitHub. Sur la page Webhooks, cliquez sur Ajouter un webhook.

Adding a webhook

2. Spécifiez votre URL Jenkins et ajoutez /github-webhook/dans le champ URL de la charge utile. Par exemple, HTTP://jenkinsURLici/github-webhook/.

Changez également la valeur du type de contenu en application/json.

Setting the webhook URL and content type

3. Sur la sélection Quels événements souhaitez-vous déclencher ce webhook, cliquez sur l’option Laissez-moi sélectionner des événements individuels.

Selecting individual events

4. Faites défiler vers le bas et cochez les cases Pushes et Demandes de tirage. Ces options garantiront que GitHub enverra une charge utile à Jenkins lors de ces événements spécifiques.

Enabling Pushes and Pull requests events

5. Validez le webhook en cliquant sur le bouton Ajouter un webhook en bas. Si la validation du webhook s’est bien déroulée, vous verrez une notification en haut de la page similaire à la capture d’écran ci-dessous.

Webhook creation notification

Exécution et déclenchement du travail de pipeline CI/CD Jenkins

Maintenant que vous avez créé et configuré votre pipeline, comment savez-vous que le pipeline fonctionne ? Jenkins fournit un plugin Vue de l’étape du pipeline pour vous aider à visualiser l’état du pipeline.

1. Pour ouvrir l’état du pipeline, ouvrez le pipeline dans Jenkins et cliquez sur Statut. Comme vous pouvez le voir ci-dessous, l’état de la Vue de l’étape montre Aucune donnée disponible car il n’y a pas eu d’événement qui déclencherait le pipeline.

Jenkins pipeline stage view

2. Pour générer les données de construction initiales, cliquez sur Build Now et attendez que le processus de construction se termine. Comme vous pouvez le voir ci-dessous, la Vue de l’étape a maintenant une entrée, indiquant qu’il n’y a aucun changement dans cette construction.

To generate initial build data, click Build Now

3. Maintenant, testez le pipeline en commettant un nouveau fichier fictif dans le référentiel. Pour ce faire, retournez à votre référentiel GitHub et cliquez sur Add File —> Create new file.

Entrez dummy comme nom du nouveau fichier et assurez-vous d’ajouter du contenu.

Creating a new file

Enfin, cliquez sur Commit new file en bas de la page.

4. Revenez à la page de statut de votre pipeline Jenkins, et vous devriez voir une nouvelle entrée de construction avec un commit, comme indiqué ci-dessous.

Jenkins pipeline build status

Conclusion

Tout au long de ce tutoriel, vous avez appris comment configurer un pipeline Jenkins CI/CD pour automatiser le cycle de développement logiciel. Vous avez également appris comment utiliser Jenkins pour maintenir une chaîne d’actions pour CI dans un projet logiciel.

Pensez-vous que le pipeline Jenkins CI/CD est une stratégie que vous appliqueriez à vos projets ? Ou en avez-vous déjà mis en place un autre que vous pensez être une meilleure solution CI/CD ?

Source:
https://adamtheautomator.com/jenkins-ci-cd/