如何将参数化作业中参数的最后一个值存储为Jenkins中下一个构建的默认值?

时间:2013-07-11 05:24:07

标签: jenkins jenkins-plugins

我一直在使用Jenkins几周,我有一个小问题。我找不到任何插件或解决方案,用于将参数化作业中参数的最后一个值存储为下一个版本的默认值。

例如: 我的参数在第一次构建中采用构建版本(1.0.0.01)。在下一个版本中,它将更改为1.0.0.02,但我希望在默认值字段中有一个1.0.0.01作为提示。 有人有解决方案或建议吗?

4 个答案:

答案 0 :(得分:9)

您可以使用Jenkins API直接修改项目设置默认参数值,为您的作业(或者可能是构建后的Groovy步骤)添加System 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')

答案 1 :(得分:7)

Persistent Parameter Plugin正是您所寻找的!

您只需从官方Jenkins存储库下载并安装它,无需任何其他设置。

然后在你的工作中,你只需要添加一个"持久参数"为了在构建之间使用和保存默认值。

答案 2 :(得分:1)

Extended Choice Parameter插件通过使用属性文件中的默认参数值来提供此功能。可以从指定的属性键中选择默认参数,并且可以在当前构建中以编程方式修改此键。然后,我将在当前版本中使用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将是下拉选择。您可以选择在版本属性键中使用单个值,以免混淆用户。

答案 3 :(得分:0)

类似于thiagolr的答案,但对于使用管道的人来说!看来,持久参数插件不适用于使用管道2.0的用户。但是https://github.com/ashu16815/persistent-parameter-plugin上有一个补丁版本似乎对我有用。

在本地克隆它: git clone https://github.com/ashu16815/persistent-parameter-plugin.git

构建: mvn全新安装

在Jenkins中安装它: 1)导航到Jenkins>管理Jenkins>管理插件 2)点击高级标签 3)向下滚动到上载插件 4)单击选择文件,然后在上面的Maven构建的目标目录中选择persistent-parameter.hpi

现在它应该持续存在。