trigger other jenkins jenkins-pipeline jenkins-2

other - jenkins parameters



Cómo invocar una tubería de Jenkins A en otra tubería de Jenkins B (3)

Tengo dos tuberías de Jenkins, digamos, tubería A y tubería B. Quiero invocar pipeline-A en pipeline-B. ¿Cómo puedo hacer esto?

(la tubería A es un subconjunto de la tubería B. La tubería A es responsable de hacer algunas cosas de rutina que pueden reutilizarse en la tubería B)

He instalado Jenkins 2.41 en mi máquina.


La siguiente solución funciona para mí:

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'' } } } }


No está claro si desea invocar otro script o trabajo de canalización, así que respondo a ambos:

Pipeline script El paso "cargar" ejecutará el otro script de pipeline. Si tiene ambos scripts en el mismo directorio, puede cargarlos así:

def pipelineA = load "pipeline_A.groovy" pipelineA.someMethod()

Otro script (pipeline_a.groovy):

def someMethod() { //do something } return this

Trabajo de tubería

Si está hablando de ejecutar otro trabajo de canalización, el paso de "trabajo de compilación" puede lograr esto:

build job: ''<Project name>'', propagate: true, wait: true

propagar: Propagar errores

espera: espera para completar

Si tiene parámetros en el trabajo, puede agregarlos así:

build job: ''<Project name>'', parameters: [[$class: ''StringParameterValue'', name: ''param1'', value: ''test_param'']]


Para agregar a lo que dijo @ matias-snellingen. Si tiene varias funciones, el return this debe estar bajo la función a la que se llamará en el script de canalización principal. Por ejemplo en:

def someMethod() { helperMethod1() helperMethod2() } return this def helperMethod1(){ //do stuff } def helperMethod2(){ //do stuff }

El someMethod() es el que se llamará en el script de canalización principal