如何记住Jenkins/Hudson中上次构建时使用的参数值



当我用参数开始新的构建时,我需要记住最后的参数值。

我有两个字符串参数:

${BRANCH}
${ServerSpecified}

在第一次构建执行中,我需要这些值为空,但对于第二次执行,我需要第一次执行的值,在第三次执行中,需要第二次运行的值,依此类推…

我需要安装插件吗?我曾尝试在groovy中使用动态参数,但无法提取最后一个值。有人知道怎么做吗?或者有其他想法吗?

为了从以前的执行中检索参数,您可以在管道中使用以下方法:

def defaultValueForMyParameter = "My_Default_Value"
node('master') {
    parameterValue = params.MY_PARAMETER ?: defaultValueForMyParameter
}
pipeline {
    parameters {
        string(name: 'MY_PARAMETER', defaultValue: parameterValue, description: "whatever")
    }
    ...
}

此代码跟踪用于参数的最后一个值,允许在运行之前或运行期间对其进行更改。如果作业中不存在该参数,则会创建该参数并为其分配默认值。

有一个Rebuild插件可以让您重新构建任何感兴趣的作业。它还允许您修改一个或多个原始构建参数

是的,看起来你正在尝试发明类似于版本号插件的东西:

此插件创建一个新的版本号并将其存储在您在配置中指定其名称的环境变量。

所以你可以随心所欲地选择变量。

没有人提到我使用的Persistent Parameter插件。

支持字符串参数、选项等。

每隔几个月/几年我就要做同样的事情,我会挠头"上次我是怎么解决的&";。这与@sergio prats所写的解决方案相同,但有一个转折:

pipeline {
    agent { label any }
    parameters {
        string(name: 'TARGET_SYS',
                defaultValue: params.TARGET_SYS ? params.TARGET_SYS : 'system1',
                description: 'Target system')
    }
...
}

选择参数也可以这样做,例如:

import groovy.transform.Field
@Field
List<String> TARGET_SYS_VALUES = ['ci', 'dev', 'test', 'staging']
pipeline {
    agent { label any }
    parameters {
        choice(name: 'TARGET_SYS',
                choices: (params.TARGET_SYS ? [params.TARGET_SYS] : []) +
                             (TARGET_SYS_VALUES - 
                                 (params.TARGET_SYS ? [params.TARGET_SYS] : [])),
                description: 'Some fictive target systems')
    }
...
}

这是怎么回事?在Jenkins管道中,params包含当前构建的作业/构建参数值。该HashMap在评估parameters定义块之前被初始化。重新评估发生在每个构建上。因此:

  • string评估每个构建N中的defaultValue,并在下一个构建N+1中提供该值
  • choice没有defaultValue选项。相反,choices选项的第一个值将作为默认值提供。该选项也会在每次构建期间进行评估,并在下一次构建中提供

最新更新