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

时间:2020-03-26 17:29:22

标签: jenkins jenkins-pipeline jenkins-groovy

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

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

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

choices也存在同样的问题,甚至更严重,因为开始构建时可以很容易地覆盖字符串默认值,但是如果不存在新选项,则无法在以下位置选择它全部。

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

我记得过去曾经通过自由样式的作业为此使用过一些插件,但是在搜索插件存储库时,我找不到任何提及如何与管道一起使用的插件。

我不太在乎添加和删除参数是否会遇到相同的问题,因为这种情况很少发生。但是我们有一些参数,默认值经常更改,因此我们需要在每隔一个晚上获取更新后的值。

1 个答案:

答案 0 :(得分:1)

事实证明extended-choice-parameter确实适用于管道,并且配置可以由指令生成器生成。看起来像

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

(生成器中还有更多可用选项)

可以从this other answer获得用于获取全局环境变量的Groovy脚本。