def - Uso de proyectos de configuración múltiple con Jenkinsfile(compilar complemento de canalización)
jenkinsfile parameters (1)
No parece ser posible tener un archivo Jenkins como un paso de construcción en un proyecto de configuración múltiple. Un archivo Jenkins se utiliza en un trabajo de Canalización que es también un tipo de trabajo y Jenkins no admite la conversión (fácil) entre tipos de trabajo. Además de eso, un paso de construcción implica que se ejecuta en un nodo en particular en una ranura del ejecutor. Sin embargo, un archivo Jenkins se evalúa en el maestro y, a su vez, define buildsteps (con sus etiquetas de nodos) que, de forma inherente, se confundirían si se ejecutara en un buildstep en sí.
Es posible desencadenar una tubería a través de un trabajo de configuración múltiple y suministrarlo con los parámetros del trabajo de configuración múltiple. (También usé el plugin de disparo parametrizado para hacer esto)
Mi trabajo de canalización tiene dos parámetros de texto, label
y version
con un ejemplo de archivo Jenkins que tiene este aspecto:
node(this.label){
println this.version
}
Mi trabajo de configuración múltiple tiene la siguiente configuración:
- Una
version
eje personalizada con valoresalpha beta gamma
y unalabel
eje esclavo con un nodo seleccionado - El paso de compilación "Desencadenador / llamada se basa en otros proyectos" para desencadenar mi trabajo de canalización con parámetros predefinidos
version=${version}
ylabel=${label}
Esta configuración hace que se llame al trabajo de canalización 3 veces (ya que solo tengo un nodo seleccionado), cada vez con una versión diferente y ejecutándose en mi etiqueta especificada. Aquí está uno de los registros:
[Pipeline] node
Running on master in /var/lib/jenkins/jobs/pipelinejob/workspace
[Pipeline] {
[Pipeline] echo
gamma
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
Finished: SUCCESS
Esta solución funciona si solo desea pasar parámetros basados en texto o nombres de etiquetas. Será mucho más difícil de usar si quieres hacer algo como "compilar con diferentes jdks". Espero que todavía sea útil sin embargo.
Estoy tratando de crear un proyecto de configuración múltiple que pruebe un montón de construcciones que definen una matriz de compatibilidad (por ejemplo, por navegador y sistema operativo). Me gustaría definir los pasos para una combinación única a través de Jenkinsfile
.
¿Cómo puedo conseguir esto? Puedo crear una compilación parametrizada de canalización que depende de JenkinsFile pero no puedo averiguar cómo conectarla a la compilación de configuración múltiple.