Jenkins est l’un des outils les plus populaires d’intégration continue pour toute plateforme ou technologie. C’est un outil open-source construit en Java. Il prend en charge plus de 1000 plugins pour permettre une intégration/livraison continue. Jenkins peut déclencher automatiquement une compilation après chaque modification de code dans un référentiel (github, gitlab ..). Une fois le code construit, Jenkins peut soumettre le code pour des tests afin de vérifier la stabilité ou les fonctionnalités de l’application. Une fois que tout est vérifié, il peut également déployer le code de l’application sur un serveur de production. Jenkins prend en charge des milliers de plugins pour étendre ses fonctionnalités.
Jenkins offre la possibilité de créer plusieurs types de jobs :
Freestyle : Les jobs Freestyle sont des jobs à usage général, qui offrent une flexibilité maximale. Il peut être utilisé pour tout type de projet.
Pipeline : Jenkins exécute l’ensemble du flux de développement sous forme de code. Au lieu de créer plusieurs jobs pour chaque flux (Build, Test, déployer ..), vous pouvez maintenant exécuter l’ensemble du workflow comme un code.
Multiconfiguration : Les jobs de type multiconfiguration vous permet d’exécuter le même job sur différents environnements.
Dossier : Ce type de job permet aux utilisateurs de créer des dossiers pour organiser et classer des jobs similaires dans un dossier ou sous-dossier.
Organisation GitHub: Ce type de job analyse toute les dépôts que vous avez sur GitHub et crée des tâches de pipeline pour chaque référentiel contenant un Jenkinsfile
Multibranch pipeline : il vous permet d’implémenter différents Jenkinsfiles
pour différentes branches du même projet.
Les pipelines Jenkins peuvent être définis à l’aide d’un fichier texte appelé JenkinsFile. Vous pouvez implémenter votre pipelineà l’aide du Groovy. Avec JenkinsFile, vous pouvez écrire les étapes nécessaires à l’exécution du pipeline (build, qualité de code, tester ..).
pipeline { agent { // lancer l'image docker docker { image 'maven:3-alpine' args '-v /root/.m2:/root/.m2' } } stages { stage('Build') { steps { sh 'mvn -B -DskipTests clean package' } } stage('tester') { steps { sh 'mvn test' } post { always { junit 'target/surefire-reports/*.xml' } } } stage('qualité de code') { steps { sh 'mvn clean package sonar:sonar' } } stage('Déployer') { steps { sh './jenkins/scripts/deliver.sh' } } //envoyer un mail de notification apres le build post { success { mail to: "s.achabbak@gmail.com", subject:"SUCCESS: ${currentBuild.fullDisplayName}", body: "Yay, we passed." } failure { mail to: "s.achabbak@gmail.com", subject:"FAILURE: ${currentBuild.fullDisplayName}", body: "Boo, we failed." } } }
Liens rapides
Politique