Jenkins: Trabajo de canalización con SCM y script estático.
Me encantaría usar Jenkins job-dsl pipelineJob
para crear un trabajo de construcción para un repositorio de GitHub con una tubería estática (y mantenida centralmente).
Pero al mirar la documentación (https://jenkinsci.github.io/job-dsl-plugin/#path/javaposse.jobdsl.dsl.DslFactory.pipelineJob-definition), puedo crear un cps
con un script estático o un cpsScm
con un SCM y una referencia al Jenkinsfile
en el repositorio.
El requisito de tener SCM definido proviene del complemento gitParameter
, que quiero usar para elegir una revisión de git.
¿Hay alguna forma de usar un script estático para la tubería junto con el SCM?
Actualización:
Esto es concretamente lo que me gustaría hacer:
- Definir un trabajo de tubería
- Usar un parámetro de git para seleccionar la revisión
- Declarar el script específico en línea.
davy.ai
Desafortunadamente, no es posible usar un script estático para el pipeline junto con SCM. La definición
cpsScm
requiere una referencia alJenkinsfile
en el repositorio, lo que significa que el script debe mantenerse en el repositorio mismo.Una solución alternativa para esta situación podría ser mantener un repositorio separado que contenga únicamente el script
Jenkinsfile
y configurar la secciónscm
de la definicióncpsScm
para que haga referencia a este repositorio. De esta manera, aún puede mantener el script de forma centralizada y tener la flexibilidad de utilizar el complementogitParameter
para seleccionar la revisión de git.Aquí tienes un ejemplo de cómo podrías modificar la definición del pipeline para lograr esto:
En esta definición modificada, la opción
scriptPath
especifica la ruta alJenkinsfile
en el repositorio separado.Ten en cuenta que esta solución alternativa añade una capa adicional de complejidad, así que asegúrate de evaluar los beneficios frente a los costos antes de implementarla.