Comment invoquer un pipeline jenkins a dans un autre pipeline jenkins B
j'ai deux pipelines jenkins, disons pipeline-A et pipeline-B. Je veux invoquer pipeline-a dans pipeline-B. Comment puis-je faire cela?
(pipeline-a est un sous-ensemble de pipeline-B. Pipeline-a a la responsabilité de faire des choses de routine qui peuvent être reprises dans pipeline-B)
j'ai installé jenkins 2.41 sur ma machine.
3 réponses
un peu imprécis si vous voulez invoquer un autre script de pipeline ou un autre travail, alors je réponds aux deux:
script Pipeline L'étape" load " exécutera l'autre script de pipeline. Si vous avez les deux scripts dans le même répertoire, vous pouvez les charger comme ceci:
def pipelineA = load "pipeline_A.groovy"
pipelineA.someMethod()
autre script (pipeline_a.groovy):
def someMethod() {
//do something
}
return this
Pipeline de travail
si vous parlez d'exécuter un autre travail de pipeline, le "travail" étape peut accomplir ceci:
build job: '<Project name>', propagate: true, wait: true
propagez: propagez les erreurs
attendre: Attendre la fin
Si vous avez paramétrée sur le travail, vous pouvez les ajouter comme ceci:
build job: '<Project name>', parameters: [[$class: 'StringParameterValue', name: 'param1', value: 'test_param']]
la solution suivante fonctionne pour moi:
pipeline {
agent
{
node {
label 'master'
customWorkspace "${env.JobPath}"
}
}
stages
{
stage('Start') {
steps {
sh 'ls'
}
}
stage ('Invoke_pipeline') {
steps {
build job: 'pipeline1', parameters: [
string(name: 'param1', value: "value1")
]
}
}
stage('End') {
steps {
sh 'ls'
}
}
}
}
pour ajouter à ce que @matias-snellingen a dit. Si vous avez plusieurs fonctions, le return this
devrait être sous la fonction qui sera appelée dans la canalisation principale de script. Par exemple :
def someMethod() {
helperMethod1()
helperMethod2()
}
return this
def helperMethod1(){
//do stuff
}
def helperMethod2(){
//do stuff
}
someMethod()
est celui qui sera appelé dans la canalisation principale de script