我需要在使用参数开始新的构建时记住上一个参数值。
我有两个字符串参数:
我有两个字符串参数:
${BRANCH}
${ServerSpecified}
在第一次构建执行时,我需要这些值为空白,但对于第二次执行,我需要第一次执行的值,在第三次执行中,我需要第二次执行的值,以此类推...
我需要安装插件吗?我尝试使用Groovy中的动态参数,但我无法提取最后一个值。有人知道如何做到这一点或者有任何其他想法吗?
${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")
}
...
}
此代码跟踪参数的最后一个使用值,允许在运行期间更改它。如果作业中不存在该参数,则会创建该参数,并将默认值分配给它。
def test = jenkins.model.Jenkins.instance.getItem("6.6 Dev Brafton Deploy").lastBuild.getBuildVariables().get("BRANCH");
在动态参数中。 - davdomin每隔几个月/年,我都要做同样的事情,然后我会为“上次我是怎么解决的?”而苦恼。这与@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
选项的第一个值作为默认值提供。此选项也在每次构建期间进行评估,并在下一个构建中提供。