gpt4 book ai didi

jenkins - 为什么 currentBuild.build().getActions(ParametersAction).get(0) 返回默认参数值而不是 Jenkins 管道中的指定值?

转载 作者:行者123 更新时间:2023-12-05 06:17:36 26 4
gpt4 key购买 nike

我正在尝试更改 Jenkins 管道中的参数值。这是我最新的脚本代码:

// Replace spaces in PROJECT_NAME parameter with dashes
script {
def build = currentBuild.build()
def parms = build.getActions(ParametersAction).get(0)
for (ParameterValue parm : parms.getParameters()) {
StringBuilder msg = new StringBuilder()
msg.append(parm.getName())
msg.append(": ")
if (parm.getValue() == null) {
msg.append("<null>")
} else {
msg.append(String.valueOf(parm.getValue()))
}
print(msg)
}
def projectNameWithoutSpaces = new StringParameterValue("PROJECT_NAME", "${params.PROJECT_NAME}".replaceAll(" ", "-"))
build.replaceAction(parms.createUpdated(Arrays.asList(projectNameWithoutSpaces)))
}

我发现 parms 包含默认参数值,而不是管道构建中指定的值。这反过来导致 build.replaceAction(parms.createUpdated(Arrays.asList(projectNameWithoutSpaces))) 将除 PROJECT_NAME 值之外的所有参数值替换为参数的值默认值。

为什么 parms 包含默认参数值而不是管道构建中指定的值?如何获取指定的参数值,以便正确更改 PROJECT_NAME 参数的值?

最佳答案

这是我的用户错误; currentBuild.build().getActions(ParametersAction).get(0) 确实返回正确的参数值。事实证明,我之前的一次失败尝试已将我管道的所有参数值(PROJECT_NAME 参数值除外)设置为其默认值。

使用 build.replaceAction() 的一个副作用是它实际上更改了 Jenkins 网络客户端中管道构建的 PROJECT_NAME 参数值。因此,当我进行重建时,PROJECT_NAME 参数具有更新值(空格替换为破折号),这确实不是我想要的。

此外,在早期我尝试了简单的解决方案,即简单地将 params.PROJECT_NAME 设置为新值:

// Replace spaces in PROJECT_NAME parameter with dashes
script {
params.PROJECT_NAME = "${params.PROJECT_NAME}".replaceAll(" ", "-")
}

但是,由于 params 对象由 java.util.Collections$UnmodifiableMap 支持,因此失败并出现 java.lang.UnsupportedOperationException

我不知道管道参数值也可以通过 env 对象获得(感谢 zett42 指出了这一点)。所以我尝试设置 env.PROJECT_NAME:

// Replace spaces in PROJECT_NAME parameter with dashes
script {
env.PROJECT_NAME = "${env.PROJECT_NAME}".replaceAll(" ", "-")
}

这在无需更改 Jenkins 网络客户端中管道构建的 PROJECT_NAME 参数值的情况下工作得很好。

关于jenkins - 为什么 currentBuild.build().getActions(ParametersAction).get(0) 返回默认参数值而不是 Jenkins 管道中的指定值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61550514/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com