如何修复 Jenkins java.lang.IllegalStateException:在加载之前尝试保存全局配置

duk*_*ash 5 jenkins jenkins-plugins configuration-as-code

我从 jenkins 2.219 升级到 2.272(撰写本文时的最新版本),现在在 Jenkins 启动时获得下面的堆栈跟踪。

Jenkins 文档说这是由于 Configuration as Code 插件并将 jvm args 设置为-Dio.jenkins.plugins.casc.ConfigurationAsCode.initialDelay=9000. 文档还说要增加值直到错误消失,但到目前为止我480000仍然遇到错误。我也没有看到我已经安装了 Configuration as Code 插件。

如何解决这个问题?

java.lang.IllegalStateException: An attempt to save the global configuration was made before it was loaded
    at jenkins.model.Jenkins.save(Jenkins.java:3379)
    at jenkins.model.Jenkins.saveQuietly(Jenkins.java:3398)
    at jenkins.model.Jenkins.setSecurityRealm(Jenkins.java:2637)
    at jenkins.model.Jenkins$16.run(Jenkins.java:3342)
    at org.jvnet.hudson.reactor.TaskGraphBuilder$TaskImpl.run(TaskGraphBuilder.java:169)
    at org.jvnet.hudson.reactor.Reactor.runTask(Reactor.java:296)
    at jenkins.model.Jenkins$5.runTask(Jenkins.java:1129)
    at org.jvnet.hudson.reactor.Reactor$2.run(Reactor.java:214)
    at org.jvnet.hudson.reactor.Reactor$Node.run(Reactor.java:117)
    at jenkins.security.ImpersonatingExecutorService$1.run(ImpersonatingExecutorService.java:68)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)
Caused: org.jvnet.hudson.reactor.ReactorException
    at org.jvnet.hudson.reactor.Reactor.execute(Reactor.java:282)
    at jenkins.InitReactorRunner.run(InitReactorRunner.java:50)
    at jenkins.model.Jenkins.executeReactor(Jenkins.java:1162)
    at jenkins.model.Jenkins.<init>(Jenkins.java:962)
    at hudson.model.Hudson.<init>(Hudson.java:85)
    at hudson.model.Hudson.<init>(Hudson.java:81)
    at hudson.WebAppMain$3.run(WebAppMain.java:295)
Caused: hudson.util.HudsonFailedToLoad
    at hudson.WebAppMain$3.run(WebAppMain.java:312)
Run Code Online (Sandbox Code Playgroud)

Eri*_*aub 10

对于遇到此问题的任何人,需要首先降级到https://get.jenkins.io/war-stable/2.263.1/ 。然后重新启动服务,然后升级所有插件,然后再次尝试 LTS 升级,至少对我来说它工作得很好。

有关此问题的更多详细信息,请访问: https://www.jenkins.io/doc/upgrade-guide/2.204/

严重 jenkins.InitReactorRunner$1#onTaskFailed: Failed ConfigurationAsCode.init java.lang.IllegalStateException: 在加载之前尝试保存全局配置 如果遇到这种情况,您可以告诉插件延迟配置一段时间在插件应用配置之前,给 Jenkins 时间加载全局配置。

要启用此功能,请将 io.jenkins.plugins.casc.ConfigurationAsCode.initialDelay 系统属性设置为毫秒数以延迟初始化。所需的值将取决于您的系统(CPU/磁盘)和配置的各个方面,并且如何找到它主要是反复试验。建议从 5000(5 秒)开始,然后增加 2000(2 秒),直到不再出现问题为止,最后添加 1000(1 秒)以获得额外的安全性。例如,要将配置延迟 9 秒,您可以使用类似于以下命令 java -Dio.jenkins.plugins.casc.ConfigurationAsCode.initialDelay=9000 -jar jenkins.war 的命令。指定此选项的具体方式和位置取决于用于安装 Jenkins 的安装方法

然而对我来说,如果不先降级,升级所有插件,最后再次升级核心,解决方法就不起作用。

  • 这是一种非常非常糟糕的心态。詹金斯始终需要保持最新状态。这些更新大部分都是安全问题。如果你不更新 Jenkins,而我连接到你的网络,我可以在托管它的机器上拥有本地管理员或 root 帐户。不要成为您的源代码被盗或面临勒索软件攻击的原因,始终升级您的东西,这是平台管理的一部分,如果您没有时间处理它,请不要使用 Jenkins。 (2认同)

tob*_*ter 9

为了在您实际上尚未安装 Casc 插件时提前避免此问题:

更新到https://github.com/jenkinsci/role-strategy-plugin/releases/tag/role-strategy-3.1,你应该没问题。

当jenkins已经处于故障状态时:

下载 hpi 并将 hpi 文件放入 JENKINS_HOME/plugins 文件夹中。 https://updates.jenkins.io/download/plugins/role-strategy/

(信息取自:https ://github.com/jenkinsci/configuration-as-code-plugin/issues/1531 )


Dev*_*404 8

我遇到了同样的问题。我已经从https://www.jenkins.io/download/下载了 jenkins.war ,早期版本(2.263.1)。停止詹金斯并用我的安装目录(C:\ Program Files \ Jenkins)替换战争。并启动了詹金斯。这就像一个魅力。


sam*_*bit 5

您可以下载 hpi 并将 hpi 文件放入 JENKINS_HOME/plugins 文件夹中。通常 jenkins 插件目录将位于 - 下/var/lib/jenkins/plugins/

获取角色策略 hpi 插件的链接 - https://updates.jenkins.io/latest/role-strategy.hpi。并使用以下命令重新启动 Jenkins:systemctl restart jenkins