动态评估Jenkins管道构建参数中的默认值



在Jenkins声明性管道中,我们可以定义构建参数,如

pipeline {
…
parameters {
string(name: 'PARAMETER', defaultValue: 'INITIAL_DEFAULT')
choice(name: 'CHOICE', choices: ['THIS', 'THAT'])
}
…
}

但是,只有当作业在生成参数对话框显示后运行时,才会更新作业的参数定义。也就是说,当我将INITIAL_DEFAULT更改为其他内容时,下一个构建仍将默认为INITIAL_DEFAULT,并且只有之后的构建将使用新值。

choices也有同样的问题,甚至更严重,因为在开始构建时,字符串默认值可以很容易地被覆盖,但如果没有新选项,则根本无法选择。

那么,有没有一种方法可以定义将在参数对话框之前执行的函数或表达式,以计算当前值(来自文件、全局设置中的变量或任何其他合适的外部配置(?

我记得过去在自由风格的工作中使用过一些插件,但在插件库中搜索时,我找不到任何提及如何将其与管道一起使用的插件。

我不太在乎同样的问题是否适用于添加和删除参数,因为这种情况很少发生。但我们有一些参数,默认值经常更改,我们需要在下一个晚上获取更新的值。

事实证明,扩展选择参数确实适用于管道,并且配置可以由指令生成器生成。它看起来有点像

extendedChoice(
name: 'PARAMETER',
type: 'PT_TEXTBOX',
defaultPropertyFile: '/var/lib/jenkins/something.properties',
defaultPropertyKey: 'parameter'
)

(生成器中还有更多选项(

获取全局环境变量的Groovy脚本可以从另一个答案中获得。