Groovy 在Jenkins作业的构建过程中,是否可以中途更改构建参数?

Groovy 在Jenkins作业的构建过程中,是否可以中途更改构建参数?,groovy,parameters,jenkins,Groovy,Parameters,Jenkins,我们正在使用Jenkins自动化几个构建和测试过程。对于我们的一些过程,开始构建的工程师需要指定一个参数。但该参数的可能和最佳值范围在一天中都会发生变化 我想做的是让工程师指定一个值——如果他们知道一个最佳值——或者将其留空,并让一个值通过早期构建步骤进行计算。如果计算了该值,我希望计算构建步骤更新作业的参数值。这样,所有后续构建步骤都不必担心使用参数或计算参数,它们只需使用参数即可 看起来可能可以做到这一点,但我不知道如何设置构建参数,只需获取它们。Jenkins确实有能力对构建进行参数化。对

我们正在使用Jenkins自动化几个构建和测试过程。对于我们的一些过程,开始构建的工程师需要指定一个参数。但该参数的可能和最佳值范围在一天中都会发生变化

我想做的是让工程师指定一个值——如果他们知道一个最佳值——或者将其留空,并让一个值通过早期构建步骤进行计算。如果计算了该值,我希望计算构建步骤更新作业的参数值。这样,所有后续构建步骤都不必担心使用参数或计算参数,它们只需使用参数即可


看起来可能可以做到这一点,但我不知道如何设置构建参数,只需获取它们。

Jenkins确实有能力对构建进行参数化。对于字符串参数,开发人员可以将字段留空,然后您的构建脚本可以检查env。已设置参数的变量。如果环境保护署。如果没有设置变量,脚本可以执行任何需要的计算(我认为Jenkins没有“预构建步骤”)并传递它。对于选择参数,第一行可以类似于
(默认)
,构建脚本也可以测试其值并相应地执行操作

关于
(默认值)
的注释

我试着将选择框的第一行留空,詹金斯第一次正确地保存了它;但是当我回来重新配置构建时,Jenkins运行了一些修剪选项,前面的空白行被删除,所以我决定使用
(默认)

我希望这有帮助,
扎卡里找到了答案:使用。其中一个功能是构建步骤,它允许您从设置文件“注入”参数到构建作业中。我使用一个构建步骤创建设置文件,然后使用另一个构建步骤注入新值。然后,所有后续生成步骤和生成后操作都使用新值

用一个例子更新

要在现有参数(作业名称)的基础上添加新参数(报告文件),请在Groovy脚本框中插入带有新参数或修改参数的映射:

// Setting a map for new build parameters
def paramsMap = [:]

// Set REPORT_FILE based on JOB_NAME
def filename = JOB_NAME.replace(' ','_') + ".html"
paramsMap.put("REPORT_FILE", filename)

// Add or modify other parameters...

return paramsMap

当我只有一个构建步骤时,这种方法非常有效。但是我有一大堆构建步骤,它们以不同的方式引用构建参数。我对基于脚本的脚本(如Windows BAT文件或PowerScript)进行条件化,但不能对其他脚本(如复制工件或触发器生成)进行条件化。好主意。谢谢@JasonSwager,我已经用Groovy添加了一个具体的例子