¿Cómo puedo activar la creación de otro trabajo desde dentro Jenkinsfile
?
Supongo que este trabajo es otro repositorio bajo la misma organización github , uno que ya tiene su propio archivo Jenkins.
También quiero hacer esto solo si el nombre de la sucursal es maestro, ya que no tiene sentido desencadenar compilaciones posteriores de cualquier sucursal local.
Actualizar:
stage 'test-downstream'
node {
def job = build job: 'some-downtream-job-name'
}
Aún así, cuando se ejecuta me sale un error
No se encontró trabajo parametrizado llamado some-downtream-job-name
Estoy seguro de que este trabajo existe en jenkins y está bajo la misma carpeta de organización que la actual. Es otro trabajo que tiene el suyo Jenkinsfile
.
Tenga en cuenta que esta pregunta es específica del complemento de organización de GitHub que crea y mantiene automáticamente trabajos para cada repositorio y sucursal de su organización de GitHub.
build job: '../other-repo/master', wait: false
build job: '../other-repo/$BRANCH_NAME'
dónde$BRANCH_NAME
está la variable de entorno Jenkins perteneciente a la rama que ejecuta el proyecto Multibranch?${BRANCH_NAME}
está disponible como una variable de entorno, la sustitución de cadena simple servirá. Solo asegúrese de cambiar"
de'
para citar su cadena. por ejemplobuild job: "../other-repo/${BRANCH_NAME}"
build job
: jenkins.io/doc/pipeline/steps/pipeline-build-stepAdemás de las respuestas mencionadas anteriormente: quería comenzar un trabajo con un parámetro simple pasado a una segunda tubería y encontré la respuesta en https://dzone.com/refcardz/continuous-delivery-with-jenkins-workflow .
Entonces usé:
fuente
build
comando? ¿Cómo acceder al BUILD_NUMBER en una de las siguientes etapas? ¿Alguien sabe dónde está documentado ese comando?build job: 'freestyle', parameters: [ string(name: 'param1', value:'test_param'), string(name:'dummy', value: "${index}")]
hoy en día, de jenkins.io/doc/pipeline/examples/#jobs-in-parallelbuild job: 'RunArtInTest', parameters: [[$class: 'StringParameterValue', name: 'systemname', value: systemname]]
, no funcionó para mí, perobuild job: 'RunArtInTest', parameters: [string(name: 'systemname', value: "${VALUE}")]
funcionóEl comando
build
en la tubería está ahí para activar otros trabajos en jenkins.Ejemplo en github
El trabajo debe existir en Jenkins y puede parametrizarse. En cuanto a la rama, supongo que puedes leerla desde git
fuente
build job: 'jobname
pero recibo este errorNo parameterized job named jobname found
y puedo asegurarle que hay un trabajo con este nombre en el mismo nivel en la carpeta de la organización.build job: "${ORGANISATION_NAME}/${REPO_NAME}/master"
/
. Los caminos relativos están bien; El problema de Sorin fue probablemente que la llamada de trabajobuild
era un trabajo de varias ramas, lo que significa que una ruta comojobname
trataría de construir la ramajobname
del mismo trabajo; tiene que ser../jobname/branchname
en su lugarPuede utilizar el
build job
paso de Jenkins Pipeline (requisito mínimo de Jenkins: 2.130).Aquí está la API completa para el
build
paso: https://jenkins.io/doc/pipeline/steps/pipeline-build-step/Cómo utilizar
build
:job
: Nombre de un trabajo posterior para construir. Puede ser otro trabajo de Pipeline, pero más comúnmente un estilo libre u otro proyecto.../sister-folder/downstream
/top-level-folder/nested-folder/downstream
Activa otro trabajo usando una rama como parámetro
En mi empresa, muchas de nuestras sucursales incluyen "/". Debe reemplazar cualquier instancia de "/" con "% 2F" (como aparece en la URL del trabajo).
En este ejemplo estamos usando rutas relativas
Activa otro trabajo usando el número de compilación como parámetro
Desencadenar muchos trabajos en paralelo
Fuente: https://jenkins.io/blog/2017/01/19/converting-conditional-to-pipeline/
Más información sobre Paralelo aquí: https://jenkins.io/doc/book/pipeline/syntax/#parallel
O alternativamente:
fuente
Utilice el complemento de trabajo de compilación para esa tarea para activar otros trabajos desde el archivo jenkins. Puede agregar una variedad de lógica a su ejecución, como opciones paralelas, de nodo y agentes, y pasos para activar trabajos externos. Le di un ejemplo de libro de cocina fácil de leer para eso.
1.ejemplo para activar un trabajo externo desde un archivo jenkins con un ejemplo condicional:
2.ejemplo que desencadena múltiples trabajos desde el archivo jenkins con ejemplos condicionales:
fuente