我今天将Jenkins从1.618升级到2.3.这包括安装它推荐的一大堆插件(主要是Pipeline插件及其依赖项).
自升级以来,每当一项工作开始另一项工作时,我都会收到一个新的错误(或者至少是一个新的不需要的行为).除非子作业已经定义了这些键,否则将忽略作为"预定义参数"传递给子项的任何值.
让我举例说明:让我说我有parent工作和child工作.
Parent推出child通过后期生成一个行动"在其他项目上的触发参数化建设".在Post-build Action的定义中,在"预定义参数"下,我FOO=BAR定义了.
在Jenkins 1.618中,当child以这种方式触发时,它将FOO设置为参数,值为BAR.
但是在2.3中,FOO没有设置在那个版本上child.
如果我修改child以便FOO始终是该作业的参数,那么它将FOO=BAR从中获取该集合parent.这是一种不可接受的解决办法,因为我们以这种方式传递了几十个参数,并且在两端定义它们太脆弱并且违反了"不要重复自己"的原则.
无论我是通过"其他项目的触发器参数化构建"构建后动作还是通过MultiJob项目的MultiJob阶段触发子作业,我都会得到相同的结果.
这是预期的变化吗?以前它坏了,我们只是错误地使用它?或者这是一个错误?
Noa*_*nos 22
根据Jenkins 2 安全更新,您可以通过设置来绕过它:
hudson.model.ParametersAction.keepUndefinedParameters =真
要验证此变通方法,请转至Manage Jenkins - > Script Console,然后运行:
System.setProperty("hudson.model.ParametersAction.keepUndefinedParameters", "true")
Run Code Online (Sandbox Code Playgroud)
要使其永久化,请将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>
Run Code Online (Sandbox Code Playgroud)
对于大多数Linux发行版,您可以在文件中修改JENKINS_ARGS:
/ etc/default/jenkins(或jenkins-oc)
对于CentOS,修改文件中的JENKINS_JAVA_OPTIONS:
/ etc/sysconfig/jenkins(或jenkins-oc)
以下是受此问题影响的报告插件列表,并且已经存在漏洞:https: //wiki.jenkins-ci.org/display/JENKINS/Plugins+affected+by+fix+for+SECURITY-170
| 归档时间: |
|
| 查看次数: |
6300 次 |
| 最近记录: |