Cómo leer parámetros desde un archivo dentro de un trabajo de canalización Jenkins.
Tengo un pipeline que se ejecuta para tres ramas diferentes (dev
/uat
/master
). Algunos parámetros cambian para cada rama, por lo que están codificados para cada entorno, lo que resulta en tres Jenkinsfile
(uno para cada entorno).
Mi segunda solución es tener tres archivos de propiedades diferentes basados en el entorno. Un único trabajo de Jenkins iniciará los trabajos de Jenkins, pero se basará en el nombre de la rama (que recogeré del desencadenador de webhook de GitHub).
Mi archivo Jenkinsfile
tiene una variable de entorno cuya asignación se ve así:
myJenkinsJob.jenkinsfile
serviceAccountName = sh(returnStdout: true, script: "awk -F= '{$1 ~ /serviceAccountName/ ; gsub($1"=","") ; print}' dev.properties").trim()
El archivo dev.properties
se parece a esto:
serviceAccountName=abc@def.com
Esto evalúa el valor mencionado en el archivo de propiedades. serviceAccountName=abc@def.com
.
¿Alguien tiene alguna alternativa mejor / más fácil? ¿Algún complemento que pueda leer los parámetros pasados en un archivo sin pasar por todos los comandos sh
para asignaciones en el bloque de entorno / parámetros?
davy.ai
Una solución alternativa podría ser usar el plugin de Credenciales de Jenkins para almacenar los parámetros específicos del entorno como credenciales de texto secreto. Luego, en el pipeline, se puede recuperar la credencial correspondiente según el nombre de la rama y usarla como valor del parámetro.
Por ejemplo, podemos crear tres credenciales separadas de texto secreto en Jenkins:
MY_APP_DEV_SERVICE_ACCOUNT
con el valorabc@dev.com
para la ramadev
MY_APP_UAT_SERVICE_ACCOUNT
con el valorabc@uat.com
para la ramauat
MY_APP_PROD_SERVICE_ACCOUNT
con el valorabc@prod.com
para la ramamaster
En el pipeline, podemos recuperar el nombre de la rama de la variable de entorno
GIT_BRANCH
(suponiendo que estamos usando Git SCM) y usarlo para recuperar el valor de la credencial correspondiente con el pasowithCredentials
:De esta manera, solo necesitamos un
Jenkinsfile
para todos los entornos y los valores de los parámetros se pueden administrar y actualizar fácilmente a través de la Interfaz de usuario de Credenciales de Jenkins.