我是詹金斯管道的新手;我正在定义一个声明性语法管道,但我不知道是否可以解决我的问题,因为我没有找到解决方案。
在这个例子中,我需要将一个变量传递给 ansible 插件(在旧版本中我使用 ENV_VAR 或使用注入插件从文件中注入它)该变量来自脚本。
这是我的完美场景(但它不起作用,因为环境{}):
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'
}
}
}
}
我尝试了其他方法来测试环境变量在其他帖子中的工作方式,例如:
pipeline {
agent { node { label 'jenkins-node'}}
stages {
stage('PREPARE VARS') {
steps {
script {
env['VERSION'] = sh(script: "python3.5 get_version.py")
}
echo env.VERSION
}
}
}
}
但“echo env.VERSION”返回null。
还尝试了相同的示例:
- 版本=python3.5 get_version.py
- 版本=python3.5 get_version.py
> props.file (并尝试注入它,但没有找到如何注入)
如果这是不可能的,我将以 ansible 角色来完成。
UPDATE
Ansible 插件中还有另一个“问题”,要在额外变量中使用变量,它必须使用双引号而不是单引号。
ansiblePlaybook credentialsId: 'example-credential', extras: "-e version=${VERSION}", inventory: 'development', playbook: 'deploy.yml'