【发布时间】:2018-07-10 21:50:12
【问题描述】:
我想创建一个 Jenkins (v2.126) 声明式语法管道,它具有带有 when() 子句检查环境变量值的阶段。具体来说,我想设置一个 Jenkins 作业参数(所以“使用参数构建”,而不是管道参数)并让它确定一个阶段是否被执行。
我有这样的阶段代码:
stage('plan') {
when {
environment name: ExecuteAction, value: 'plan'
}
steps {
sh 'cd $dir && $tf plan'
}
}
参数名称是ExecuteAction。但是,当通过作业“Choice”参数将 ExecuteAction 设置为:计划时,此阶段不会运行。通过添加此调试阶段,我可以看到通过环境变量输入的适当值:
stage('debug') {
steps {
sh 'echo "ExecuteAction = $ExecuteAction"'
sh 'env'
}
}
我得到这样的控制台输出:
[Pipeline] stage
[Pipeline] { (debug)
[Pipeline] sh
[workspace] Running shell script
+ echo 'ExecuteAction = plan'
ExecuteAction = plan
[Pipeline] sh
[workspace] Running shell script
+ env
...
ExecuteAction=plan
...
我正在使用 Jenkins book pipeline syntax 中的 when 声明性语法,大约在页面中间,在 when 部分下,内置条件。
Jenkins 在 Gnu/Linux 上运行。
任何想法我可能做错了什么?
【问题讨论】: