У меня две Дженкинс трубопроводов, позвольте'ы сказать, газопровода и газопровода-Б. Я хочу, чтобы вызвать трубопровода-в трубопровод-B. Как я могу это сделать?
(газопровод-A является подмножеством газопровода-Б. конвейера-несет ответственность за выполнение некоторых рутинных вещей, которые могут быть использованы в трубопроводе-Б)
Я установил Дженкинс 2.41 на моей машине.
Немного непонятно, если вы хотите вызвать другой скрипт трубопровода или работу, так я отвечаю обоим:
Производство сценарий В "нагрузку" и шаг будет выполнять другой конвейер сценарий. Если у вас есть оба скрипта в той же директории, вы можете загрузить его такой:
def pipelineA = load "pipeline_A.groovy"
pipelineA.someMethod()
Другой сценарий (pipeline_a.груви):
def someMethod() {
//do something
}
return this
Работа трубопровода
Если вы говорите о выполнении другой работы трубопровода, в "строить работу на" Шаг можете сделать это:
build job: '<Project name>', propagate: true, wait: true
распространение: распространение ошибки
ждать: ждать завершения
Если у вас есть параметры на работе, их можно добавить такой:
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'
}
}
}
}
Добавить к тому, что @Матиас-snellingen сказал. Если у вас есть несколько функций, вернуть
должны быть под функция, которая будет вызвана в магистральный сценарий. Например в :
def someMethod() {
helperMethod1()
helperMethod2()
}
return this
def helperMethod1(){
//do stuff
}
def helperMethod2(){
//do stuff
}
В метода someMethod ()
- это одно, что будет называться в магистральный сценарий
Другим вариантом является, чтобы создать пакет, загрузить его и запустить его из пакета.
package name.of.package
import groovy.json.*
def myFunc(var1) {
return result
}
Чем его потребляют
@Library('name_of_repo')
import name.of.package.*
utils = new name_of_pipeline()
// here you can invoke
utils.myFunc(var)
надеюсь, что это помогает
Как упомянул @Snellingen Матиас и @сéлиния Aussourd, в случае создания многофилиальных работу вы должны указать филиал, чтобы построить такой :
stage ('Invoke_pipeline') {
steps {
build job: 'pipeline1/master', parameters: [
string(name: 'param1', value: "value1")
]
}
}
В моем случае это решило проблему.