首页 > 解决方案 > 动态评估 Jenkins 管道构建参数中的默认值

问题描述

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

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

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

同样的问题也出现在 中choices,而且更严重,因为在开始构建时可以轻松覆盖字符串默认值,但如果没有新选项,则根本无法选择。

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

我记得过去在自由式工作中为此使用了一些插件,但是搜索插件存储库我找不到任何提及如何将它与管道一起使用的内容。

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

标签: jenkinsjenkins-pipelinejenkins-groovy

解决方案


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

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

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

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


推荐阅读