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