在Jenkins声明性管道中,我们可以定义构建参数,例如
pipeline {
…
parameters {
string(name: 'PARAMETER', defaultValue: 'INITIAL_DEFAULT')
choice(name: 'CHOICE', choices: ['THIS', 'THAT'])
}
…
}
但是,仅在作业运行之后已经显示构建参数对话框时,才更新作业的参数定义。也就是说,当我将INITIAL_DEFAULT
更改为其他内容时,下一个版本仍将默认为INITIAL_DEFAULT
,只有之后的版本才会使用新值。
choices
也存在同样的问题,甚至更严重,因为开始构建时可以很容易地覆盖字符串默认值,但是如果不存在新选项,则无法在以下位置选择它全部。
那么有没有一种方法可以定义在参数对话框之前执行以计算当前值(从文件,全局设置中的变量或任何其他合适的外部配置中)的函数或表达式?
我记得过去曾经通过自由样式的作业为此使用过一些插件,但是在搜索插件存储库时,我找不到任何提及如何与管道一起使用的插件。
我不太在乎添加和删除参数是否会遇到相同的问题,因为这种情况很少发生。但是我们有一些参数,默认值经常更改,因此我们需要在每隔一个晚上获取更新后的值。
答案 0 :(得分:1)
事实证明extended-choice-parameter确实适用于管道,并且配置可以由指令生成器生成。看起来像
extendedChoice(
name: 'PARAMETER',
type: 'PT_TEXTBOX',
defaultPropertyFile: '/var/lib/jenkins/something.properties',
defaultPropertyKey: 'parameter'
)
(生成器中还有更多可用选项)
可以从this other answer获得用于获取全局环境变量的Groovy脚本。