Jenkins 配置被 SYSTEM 用户异常还原

Jenkins configurations gets reverted by SYSTEM user anomaly

我是 运行 Kubernetes 上的 Jenkins 版本 2.85 作为 pod(亲和力设置为一个工作节点)。我通过将 XML 传递给此模块来使用 Salt Jenkins module 创建工作。

我正在使用 Jenkins 全局库来执行作业。

我的作业配置如下所示

我正在使用 repoURL、componet 等参数调用 GobalLibrary,

几周来一切顺利,现在我遇到了一个奇怪的情况,我的工作配置 (config.xml) 自动获得 updated/revert。

间歇性地,我的 "Build with parameter" 选项消失了,我在 Jenkins GUI 中只能看到 "Build now"。最初我以为有人在这样做,所以为了跟踪配置更改,我在 Jenkins 中安装了 Job config history 插件,但我发现很奇怪。用户名 "SYSTEM" 的人 making/reverting 更改。

这是它的样子

我发现 SYSTEM 用户仅还原 JOB 配置更改,而不是 PIPELINE。

我不确定幕后出了什么问题以及如何停止或解决此问题。这是我的Production实例,所以我比较担心。

我可以在我的 Jenkins 中看到 SYSTEM 用户

但我无法删除该用户

我找到的相关问题很少,但没有答案

Configuration of Jobs getting updated by System user on Jenkins

我不确定这个 Jenkins Bug 或某个插件是否在玩弄我的灵魂。

需要帮助! :(

好的,我找到了这个问题的答案。

我在我的 Jekins 全局库中使用了 properties 这样的东西

// Disable concurrent builds
//properties([disableConcurrentBuilds()])

它覆盖了我的外部作业配置(通过 salt 完成)。

我从这个博客得到的提示: https://st-g.de/2016/12/parametrized-jenkins-pipelines

我也遇到了这个问题。对我来说,当我将 Build triggers -> Build Periodically 设置从 'H 23 * * *' 更改为 '00 23 * * *' 时,问题就解决了。 (因为我希望我的构建每晚在 23:00 执行。)其中 H 让 Jenkins 决定何时 运行 在 23:00 和 23:59 之间的某处作业以均匀分布负载。似乎 Jenkins 有时决定最好 运行 我的工作在不同的服务器上并自动更改参数。

在我的例子中,问题是 Jenkinsfile 正在删除我从 Jenkins 控制台添加到管道的参数。在 JenkinSfile 中添加相同的参数(stage -> script -> properties -> parameters)解决了这个问题。

简而言之,确保您的流水线脚本使用的配置与您的流水线使用的配置相同。

关于参数的 Jenkins 文档:https://www.jenkins.io/doc/book/pipeline/syntax/#parameters