我已经使用 Jenkins 几个星期了,但我遇到了一个小问题。我找不到任何插件或解决方案来存储参数化作业中参数的最后一个值作为下一次构建的默认值。
例如:我的参数在第一次构建中采用构建版本(1.0.0.01)。在下一个版本中,它将更改为 1.0.0.02,但我希望在默认值字段中有一个 1.0.0.01 作为提示。有人有解决方案或建议吗?
我已经使用 Jenkins 几个星期了,但我遇到了一个小问题。我找不到任何插件或解决方案来存储参数化作业中参数的最后一个值作为下一次构建的默认值。
例如:我的参数在第一次构建中采用构建版本(1.0.0.01)。在下一个版本中,它将更改为 1.0.0.02,但我希望在默认值字段中有一个 1.0.0.01 作为提示。有人有解决方案或建议吗?
您可以使用 Jenkins API 将系统 groovy 构建步骤添加到您的工作(或者可能是构建后的 Groovy 步骤),以直接修改项目设置默认参数值。
以下是一些可能有助于您入门的代码:
import hudson.model.*
paramsDef = build.getParent().getProperty(ParametersDefinitionProperty.class)
if (paramsDef) {
paramsDef.parameterDefinitions.each{ param ->
if (param.name == 'FOO') {
println("Changing parameter ${param.name} default value was '${param.defaultValue}' to '${param.defaultValue} BAR'")
param.defaultValue = "${param.defaultValue} BAR"
}
}
}
看看Jenkins 模型中的ParameterDefinition类。
您可能需要根据当前执行的构建修改默认参数值。一些代码如下所示:
def thisBuildParamValue = build.buildVariableResolver.resolve('FOO')
Persistent Parameter Plugin正是您正在寻找的!
您只需要从官方 Jenkins 存储库下载并安装它,无需任何额外设置。
然后在你的工作中,你只需要添加一个“持久参数”,以便在构建之间使用和保存默认值。
扩展选择参数插件通过使用属性文件中的默认参数值来提供此功能。可以从指定的属性键中选择默认参数,并且可以在当前构建中以编程方式修改此键。然后,我将在当前构建中使用一个 groovy 脚本来设置下一个构建的默认属性键的值。
例如,您将有一个扩展选择参数,其默认值由属性文件version.properties定义,其键如下:
versions=1.0.0.02, 1.0.0.01, 1.0.0.00
default.version=1.0.0.02
参数定义将包括:
Property File=version.properties
Property Key=versions
Default Property File=version.properties
Default Property Key=default.versions
下一个构建中参数的 GUI 将显示一个选择列表,默认选择 1.0.0.02。此功能对于您希望下游构建阶段的参数由早期构建设置的管道构建也非常有用。
这种方法的唯一缺点可能是参数 UI 将是一个下拉选择。您可以选择在版本属性键中使用单个值,以免混淆您的用户。
类似于 thiagolr 的回答,但对于那些使用管道的人来说!似乎持久参数插件不适用于使用管道 2.0 的用户。但是在https://github.com/ashu16815/persistent-parameter-plugin有一个补丁版本似乎对我有用。
在本地克隆它: git clone https://github.com/ashu16815/persistent-parameter-plugin.git
构建它: mvn clean install
在 Jenkins 中安装它: 1) 导航到 Jenkins > Manage Jenkins > Manage Plugins 2) 单击 Advanced 选项卡 3) 向下滚动到 Upload Plugin 4) 单击 Choose file 并选择上面 maven 构建的目标目录中的 persistent-parameter.hpi
现在它应该持续存在。