gpt4 book ai didi

jenkins - 预定义参数不再传递给子作业

转载 作者:行者123 更新时间:2023-12-02 18:53:56 25 4
gpt4 key购买 nike

我今天将 Jenkins 从 1.618 升级到 2.3。这包括安装它推荐的一大堆插件(主要是管道插件及其依赖项)。

自从升级以来,每当一个作业启动另一个作业时,我都会收到一个新错误(或者至少是一个新的不需要的行为)。除非子作业已经定义了这些键,否则任何作为“预定义参数”传递给子作业的值都将被忽略。

让我举例说明:假设我有一个工作和一个工作。

Parent 通过“在其他项目上触发参数化构建”构建后操作启动 child。在构建后操作的定义中,在“预定义参数”下,我定义了 FOO=BAR

在 Jenkins 1.618 中,当以这种方式触发 child 时,会将 FOO 设置为参数,值为 BAR

但在 2.3 中,FOO 未在 child 的构建上设置。

如果我修改 child 以使 FOO 始终是该作业的参数,那么它将拾取从以下位置设置的 FOO=BAR 父级。这是一个 Not Acceptable 解决方法,因为我们以这种方式传递了数十个参数,并且在两端定义它们太脆弱并且违反了“不要重复自己”的原则。

无论是通过“在其他项目上触发参数化构建”构建后操作还是通过多作业项目的多作业阶段触发子作业,我都会得到相同的结果。

这是有意的改变吗?是不是以前坏了,只是我们使用方法不对?或者这是一个错误?

最佳答案

根据 Jenkins 2 Security updates ,您可以通过设置绕过它:

hudson.model.ParametersAction.keepUndefinedParameters=true

要验证此解决方法,请转至管理 Jenkins -> 脚本控制台,然后运行:

System.setProperty("hudson.model.ParametersAction.keepUndefinedParameters", "true")

要使其永久化,请按如下方式更改 Jenkins 参数(然后重新启动 Jenkins):

在 Windows 上编辑 Jenkins 主目录中的 jenkins.xml,例如:

<arguments>
-Xrs -Xmx256m -Dhudson.lifecycle=hudson.lifecycle.WindowsServiceLifecycle
-Dhudson.model.ParametersAction.keepUndefinedParameters=true
-jar "%BASE%\jenkins.war" --httpPort=8080
</arguments>

对于大多数Linux发行版,您可以修改JENKINS_ARGS内部文件:

/etc/default/jenkins(或 jenkins-oc)

对于 CentOS,修改文件内的JENKINS_JAVA_OPTIONS:

/etc/sysconfig/jenkins(或 jenkins-oc)

以下是已报告的插件列表,这些插件受该问题影响,并且已经存在一个 Unresolved 错误: https://wiki.jenkins-ci.org/display/JENKINS/Plugins+affected+by+fix+for+SECURITY-170

关于jenkins - 预定义参数不再传递给子作业,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37263116/

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