Как вызвать конвейер Дженкинса A в другом конвейере Дженкинса B
У меня есть два трубопровода Дженкинса, скажем, pipeline-A и pipeline-B. Я хочу вызвать pipeline-A в pipeline-B. Как я могу это сделать?
(pipeline-A является подмножеством pipeline-B. Pipeline-A отвечает за выполнение некоторых рутинных вещей, которые могут быть перезапущены в pipeline-B)
Я установил jenkins 2.41 на свою машину.
3 ответов
немного неясно, хотите ли вы вызвать другой скрипт конвейера или задание, поэтому я отвечаю на оба:
сценарий трубопровода На шаге "load" будет выполнен другой сценарий конвейера. Если у вас есть оба скрипта в одном каталоге, вы можете загрузить его следующим образом:
def pipelineA = load "pipeline_A.groovy"
pipelineA.someMethod()
другой скрипт (pipeline_a.груви):
def someMethod() {
//do something
}
return this
Производство Работа
если вы говорите о выполнении другого задания конвейера, шаг "построить задание" может выполните это:
build job: '<Project name>', propagate: true, wait: true
propagate: распространять ошибки
ждать: ждать окончания
если у вас есть парамеры на работе, вы можете добавить их следующим образом:
build job: '<Project name>', parameters: [[$class: 'StringParameterValue', name: 'param1', value: 'test_param']]
следующее решение работает для меня:
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'
}
}
}
}
чтобы добавить к тому, что сказал @ matias-snellingen. Если у вас есть несколько функций return this
должно быть под функцией, которая будет вызываться в сценарии основного конвейера. Например в:
def someMethod() {
helperMethod1()
helperMethod2()
}
return this
def helperMethod1(){
//do stuff
}
def helperMethod2(){
//do stuff
}
на someMethod()
- это тот, который будет вызываться в скрипте основного конвейера