我们正在使用Jenkins自动化我们的几个构建和测试过程。对于我们的一些流程,启动构建的工程师需要指定一个参数。但是,该参数的可能和最佳值的范围在一天中变化。
我想要做的是让工程师指定一个值 - 如果他们知道最佳值 - 或者将其留空并通过早期构建步骤计算值。如果计算了该值,我希望计算构建步骤更新作业的参数值。这样,所有后续构建步骤都不必担心使用参数或计算它,它们只是使用参数。
看起来Groovy Script Plugin可能会这样做,但我看不出如何设置构建参数,只需获取它们。
答案 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