11

我从 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)
4

8 回答 8

9

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

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

SEVERE 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 的安装方法

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

于 2021-03-23T15:49:02.427 回答
8

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

于 2020-12-28T02:12:41.523 回答
6

当您实际上还没有安装 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 )

于 2021-04-16T10:13:00.820 回答
3

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

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

于 2021-03-25T10:32:21.190 回答
2

我们有类似的问题,通过降级从 URL 下载的 jenkins.war 文件解决:https ://get.jenkins.io/war-stable/2.263.1/

于 2021-02-04T08:26:49.037 回答
2

升级到最新版本后,我们遇到了同样的问题。经过一番搜索,我们决定使用支持 LTS 的较低版本,在本例中为 2.263.1。该版本立即运行,所以我认为这个错误是一个错误。

于 2021-01-09T15:24:10.617 回答
1

我的方案是将 Jenkins 升级到最新版本,然后将其中的数据恢复为像以前一样工作。

从 Jenkins v2.263 升级到 v2.303 时,我遇到了同样的错误。唯一对我有用的是升级我的全局插件,即首先升级基于角色的授权策略,然后升级 Jenkins。它就像一个脆片。

于 2021-09-13T17:17:57.153 回答
1

我遇到过类似的问题,发现我们不需要降级版本。

我已经下载了更新的 jenkins.war 文件,然后检查/var/lib/jenkins文件夹中的 config.xml 是否仍然显示旧版本。

以下是我执行的步骤:#on ubuntu,在/usr/share/jenkins

sudo service jenkins stop
sudo mv jenkins.war jenkins.war.old
sudo wget https://updates.jenkins-ci.org/latest/jenkins.war
sudo service jenkins start

我收到“在加载全局配置之前尝试保存全局配置”

然后我做了

wget https://pkg.jenkins.io/debian-stable/binary/jenkins_2.235.5_all.deb && sudo dpkg -i jenkins_2.235.5_all.deb

现在运行

sudo apt-get upgrade jenkins

通过这样做,我可以看到更新的版本

/var/lib/jenkins/config.xml 

文件。

检查 jenkins 版本: 转到您 /var/lib/jenkins/ 的文件,名为 config.xml 查看该文件 cat config.xml,应该有一个名为的 xml 条目: <version>YourVersionNumber</version>

于 2021-07-09T10:31:23.957 回答