Как вызвать конвейер Дженкинса 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() - это тот, который будет вызываться в скрипте основного конвейера