在Jenkins工作的构建中,是否可以在中途更改构建参数?

时间:2011-08-08 21:51:54

标签: groovy parameters jenkins

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

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

看起来Groovy Script Plugin可能会这样做,但我看不出如何设置构建参数,只需获取它们。

3 个答案:

答案 0 :(得分:8)

找到答案:使用EnvInject Plugin。其中一个功能是构建步骤,允许您从设置文件中将参数“注入”构建作业。我使用一个构建步骤来创建设置文件,然后使用另一个构建步骤来注入新值。然后,所有后续构建步骤和构建后操作都使用了新值。

答案 1 :(得分:3)

Jenkins确实能够参数化构建。对于字符串参数,开发人员可以将该字段留空,然后您的构建脚本可以检查env是否存在。设置参数的变量。如果环境。变种。没有设置,脚本可以执行所需的任何计算(我不认为Jenkins有“预构建步骤”)并传递它。对于选择参数,第一行可以是(Default),并且构建脚本可以再次测试其值并采取相应的行动。

关于(Default)

的说明

我尝试将选择框的第一行留空,Jenkins第一次正确保存了它;但是当我回来重新配置构建时,Jenkins对选项进行了某种修剪,并删除了前导空白行,因此我确定了(Default)

我希望这有帮助,
扎卡里

答案 2 :(得分:0)

这是我应该使用Jenkins管道的解决方案:

# Jenkinsfile
// define job parameters
properties([parameters([string(defaultValue: 'Hello', description: 'How should I greet the world?', name: 'Greeting')])])
// update or replace parameter
void setParam(String paramName, String paramValue) {
    List<ParameterValue> newParams = new ArrayList<>()
    newParams.add(new StringParameterValue(paramName, paramValue))
    $build().addOrReplaceAction($build().getAction(ParametersAction.class).createUpdated(newParams))    
}

print params.Greeting
setParam("Greeting", "bonjour")
print params.Greeting