Dans le pipeline scripté Jenkins, nous pouvons créer des méthodes et les appeler.
Est-ce possible aussi dans le pipeline déclaratif de Jenkins? Et comment?
Dans le pipeline scripté Jenkins, nous pouvons créer des méthodes et les appeler.
Est-ce possible aussi dans le pipeline déclaratif de Jenkins? Et comment?
Les versions les plus récentes des pipelines déclaratifs le permettent, alors que cela n’était pas possible auparavant (mi-2017). Vous pouvez simplement déclarer des fonctions comme vous le souhaiteriez d'un script groovy:
pipeline {
agent any
stages {
stage('Test') {
steps {
whateverFunction()
}
}
}
}
void whateverFunction() {
sh 'ls /'
}
Vous pouvez créer une fonction groovy comme celle-ci et l'enregistrer dans votre git qui devrait être configuré en tant que bibliothèque gérée (configurez-le également dans jenkins):
/path/to/repo-shared-library/vars/sayHello.groovy:
Contenu:
def call(String name = 'human') {
echo "Hello, ${name}."
}
Vous pouvez simplement appeler cette méthode dans votre pipeline en utilisant:
@Library('name-of-shared-library')_
pipeline {
agent any
stages {
stage('test') {
steps {
sayHello 'Joe'
}
}
}
}
Sortie:
[Pipeline] echo
Hello, Joe.
Vous pouvez réutiliser des fonctions existantes que vous gardez dans votre bibliothèque.
Vous pouvez également avoir des fichiers groovy séparés avec toutes vos fonctions (juste pour garder les choses structurées et propres), que vous pouvez charger dans un fichier avec pipeline:
JenkinsFile.groovy
Map modules = [:]
pipeline {
agent any
stages {
stage('test') {
steps {
script{
modules.first = load "first.groovy"
modules.first.test1()
modules.first.test2()
}
}
}
}
}
premiere
def test1(){
//add code for this method
}
def test2(){
//add code for this method
}
return this
Cela a fonctionné pour moi.Il peut être visualisé avec l'interface graphique Blue Ocean, mais lorsque je modifie à l'aide de l'interface graphique Blue Ocean, il supprime les méthodes "def showMavenVersion (String a)".
pipeline {
agent any
stages {
stage('build') {
agent any
steps {
script {
showMavenVersion('mvn version')
}
}
}
}
}
def showMavenVersion(String a) {
bat 'mvn -v'
echo a
}
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.