Je suis novice en matière de pipeline Jenkins ; je suis en train de définir un pipeline à syntaxe déclarative et je ne sais pas si je peux résoudre mon problème, car je n'ai pas trouvé de solution.
Dans cet exemple, j'ai besoin de passer une variable au plugin ansible (dans l'ancienne version j'utilisais un ENV_VAR ou en l'injectant depuis un fichier avec le plugin inject) cette variable provient d'un script.
C'est mon scénario idéal (mais il ne fonctionne pas à cause de l'environnement{}) :
pipeline {
agent { node { label 'jenkins-node'}}
stages {
stage('Deploy') {
environment {
ANSIBLE_CONFIG = '${WORKSPACE}/chimera-ci/ansible/ansible.cfg'
VERSION = sh("python3.5 docker/get_version.py")
}
steps {
ansiblePlaybook credentialsId: 'example-credential', extras: '-e version=${VERSION}', inventory: 'development', playbook: 'deploy.yml'
}
}
}
}
J'ai essayé d'autres façons de tester le fonctionnement des env vars dans un autre post, par exemple :
pipeline {
agent { node { label 'jenkins-node'}}
stages {
stage('PREPARE VARS') {
steps {
script {
env['VERSION'] = sh(script: "python3.5 get_version.py")
}
echo env.VERSION
}
}
}
}
mais "echo env.VERSION" retourne null.
J'ai également essayé le même exemple avec : - VERSION= python3.5 get_version.py
- VERSION= python3.5 get_version.py
> props.file (et essayer de l'injecter, mais je n'ai pas trouvé comment)
Si cela n'est pas possible, je le ferai dans le rôle ansible.
UPDATE
Il y a un autre "problème" dans Ansible Plugin, pour utiliser les vars dans les extra vars, il doit avoir des guillemets doubles au lieu de simples.
ansiblePlaybook credentialsId: 'example-credential', extras: "-e version=${VERSION}", inventory: 'development', playbook: 'deploy.yml'