Как исправить Jenkins java.lang.IllegalStateException: попытка сохранить глобальную конфигурацию была предпринята до ее загрузки

Я обновился с jenkins 2.219 до 2.272 (последняя версия на момент написания этой статьи) и теперь получаю трассировку стека ниже при запуске Jenkins.

В документации Jenkins говорится, что это происходит из-за плагина «Конфигурация как код» и установки аргументов jvm как -Dio.jenkins.plugins.casc.ConfigurationAsCode.initialDelay=9000. В документах также говорится увеличивать значение до тех пор, пока ошибка не исчезнет, ​​но пока я нахожусь в 480000 и все еще получаю сообщение об ошибке. Я также не вижу, что у меня все равно установлен плагин «Конфигурация как код».

Как это можно исправить?

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)

Я тоже столкнулся с точной ошибкой

Developer404 28.12.2020 02:57

Та же проблема и здесь ... у нас также есть плагин «Конфигурация как код», и мы пытались увеличить задержку до глупо долгого времени. Узнав об этом из предыдущего случая, мы вернулись к файлу войны 2.267 из версии 2.276.

houninym 25.01.2021 13:51

к вашему сведению, мне пришлось «rpm --import pkg.jenkins.io/redhat-stable/jenkins.io.key » для обновления, затем я наткнулся на IllegalStateException и сделал «yum downgrade archives.jenkins-ci.org/redhat /jenkins-2.255-1.1.noarch.rpm", чтобы Дженкинс снова заработал

jamshid 23.09.2021 21:23
"DevOps: Jenkins & AWS Series, часть 5: Установка Gradle на Ubuntu 22.04
"DevOps: Jenkins & AWS Series, часть 5: Установка Gradle на Ubuntu 22.04
В этой статье блога мы проведем вас через процесс установки Gradle на Ubuntu 22.04, интеграции его с Jenkins и создания задания Gradle. Мы...
16
3
29 568
9
Перейти к ответу Данный вопрос помечен как решенный

Ответы 9

Ответ принят как подходящий

Я столкнулся с той же проблемой. Я скачал jenkins.war, более раннюю версию (2.263.1) с https://www.jenkins.io/download/. Остановил jenkins и заменил войну моим каталогом установки (C:\Program Files\Jenkins). И запустил Дженкинс. Это работает как шарм.

Да, мне тоже пришлось понизить.

dukethrash 29.12.2020 15:43

У нас была такая же проблема после обновления до последней версии. После некоторых поисков мы решили использовать более низкую версию с поддержкой LTS, в данном случае 2.263.1. Эта версия работала мгновенно, поэтому я думаю, что эта ошибка является ошибкой.

у нас есть аналогичная проблема, решенная путем понижения версии файла jenkins.war, загруженного с URL-адреса: https://get.jenkins.io/war-stable/2.263.1/

Для всех, у кого есть эта проблема, да, сначала требуется перейти на https://get.jenkins.io/war-stable/2.263.1/. Затем перезапустите службу, затем обновите все свои плагины, затем снова попробуйте обновление LTS, по крайней мере, для меня это сработало просто отлично.

Подробнее о проблеме здесь: https://www.jenkins.io/doc/upgrade-guide/2.204/

СЕРЬЕЗНЫЙ jenkins.InitReactorRunner$1#onTaskFailed: Ошибка ConfigurationAsCode.init java.lang.IllegalStateException: попытка чтобы сохранить глобальную конфигурацию, сделанную до ее загрузки. Если вы столкнулись с этим, вы можете указать плагину отложить настройку для количество времени, чтобы дать Дженкинсу время загрузить глобальный конфигурации до того, как конфигурация будет применена плагином.

Чтобы включить это, установите Система io.jenkins.plugins.casc.ConfigurationAsCode.initialDelay свойство на количество миллисекунд, чтобы отложить инициализацию. требуемое значение будет зависеть от аспектов вашей системы (процессор/диск) и конфигурация, и то, как это можно найти, в основном является пробным и ошибка. Предлагается начать с 5000 (5 секунд), а затем увеличивайте на 2000 (2 секунды), пока проблема не исчезнет и, наконец, добавьте 1000 (1 секунда) для дополнительной безопасности. Например, чтобы задержать настройку на 9 секунд, вы бы использовали что-то вроде следующая команда java -Dio.jenkins.plugins.casc.ConfigurationAsCode.initialDelay=9000 -jar jenkins.war. Как именно и где вы укажете эту опцию, зависит от метод установки, используемый для установки Jenkins

Однако для меня обходной путь не работал без предварительного понижения версии, обновления всех плагинов и, наконец, повторного обновления ядра.

Спасибо. у меня сработала простая замена файла war, так как кто-то случайно обновил jenkins, когда в этом не было абсолютно никакой необходимости.

tryingToLearn 27.09.2021 08:43

Это очень и очень плохой образ мышления. Дженкинс всегда должен быть в курсе. Большинство этих обновлений связаны с проблемами безопасности. Если вы не обновите Jenkins, и я войду в вашу сеть, я могу владеть локальным администратором или учетной записью root в поле, на котором он размещен. Не будьте причиной того, что ваш исходный код был украден или вы столкнулись с атакой программ-вымогателей, ВСЕГДА обновляйте свои вещи, это часть управления платформой, если у вас нет времени разбираться с этим, не используйте Jenkins.

Eric Weintraub 28.09.2021 12:37

Вы можете загрузить файл hpi и поместить файл hpi в папку JENKINS_HOME/plugins. Обычно каталог плагинов jenkins находится под — /var/lib/jenkins/plugins/.

Ссылка для скачивания плагина HP Role Strategy — https://updates.jenkins.io/latest/role-strategy.hpi. И перезапустите Jenkins с помощью этой команды: systemctl restart jenkins.

Чтобы избежать этой проблемы заранее, если вы на самом деле не установили плагин Casc:

Обновите до https://github.com/jenkinsci/role-strategy-plugin/releases/tag/role-strategy-3.1 и все будет в порядке.

Когда Дженкинс уже находится в неисправном состоянии:

скачайте hpi и поместите файл hpi в папку JENKINS_HOME/plugins. https://updates.jenkins.io/download/plugins/role-strategy/

(информация взята с: https://github.com/jenkinsci/configuration-as-code-plugin/issues/1531)

Спасибо. Сначала я обновил плагин, а затем Jenkins. Моя проблема решена.

Jie 19.07.2021 13:59

Спасибо, это решило проблему, обновил плагин, а затем снова обновил jenkins.

Alejandro Giraldo 29.08.2021 00:41

Я столкнулся с подобной проблемой и обнаружил, что нам не нужно понижать версию. Ниже приведены шаги, которые я выполнил, и это сработало для меня.

  1. сначала обновите глобальный плагин, т.е. стратегию авторизации на основе ролей, из консоли Jenkins.

  2. Вот шаги, которые я выполнил: #на убунту, в /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 chown -R jenkins:jenkins jenkins.war
sudo service jenkins start

Разве эта строка с «debian-stable/binary/jenkins_2.235.5_all.deb» все еще не является понижением версии? Видя, что 2.263.4 более свежая версия.

analyst_47 06.08.2021 19:44

@ analyst47 да, теперь его версия понижена, но это всего лишь пример, можно использовать любую версию по выбору.

Harsh Wardhan Gupta 09.09.2021 08:27

Мой сценарий заключался в том, чтобы обновить Jenkins до последней версии, а затем восстановить данные в нем, чтобы они работали так же, как и раньше.

При обновлении с Jenkins v2.263 до v2.303 у меня была такая же ошибка. Единственное, что сработало для меня, это обновить мой глобальный плагин, то есть сначала стратегию авторизации на основе ролей, а затем Jenkins. Это работало как хрустящая корочка.

у меня все еще такая же ситуация, при обновлении jenkins jenkins_2.263.4 до 2.289.3 или выше, есть ли какое-либо решение, кроме понижения. я уже обновил role-strategy.hpi. до 3,2 . все равно не поможет. любое другое решение?

chandu 12.12.2021 23:35

Эй, Чанду. Я уже упоминал решение, отличное от понижения версии Jenkins. Вам нужно определить плагин, который имеет глобальное представление в вашем Jenkins. В моем случае я использовал стратегию авторизации на основе ролей. Сначала я обновил свой плагин, а затем обновил Jenkins. Трюк сработал.

Sameed 14.12.2021 09:12

спасибо!, я уже обновил плагин стратегии авторизации на основе ролей. Но в моем случае я обновил все другие плагины, которые помогли, я думаю, что в основном это были обновления matri-auth и ldap.

chandu 15.12.2021 21:48

У меня такая же ошибка на Jenkins 2.332.2 и обновленном плагине role-strategy v483.v17281966f5c3.
Мне пришлось скачать плагин версии 3.2.0 и поместить его прямо в папку плагинов jenkins. (ранее я удалил существующий файл '.jpi')
Затем перезапустите Jenkins /etc/init.d/jenkins restart, и проблема исчезнет.
Спасибо за инфу!

Другие вопросы по теме