[JIRA] (JENKINS-57862) A wrong configuration of CasC yaml kill Jenkins startup

11 views
Skip to first unread message

manuelramonleonjimenez@gmail.com (JIRA)

unread,
Jun 5, 2019, 11:37:03 AM6/5/19
to jenkinsc...@googlegroups.com
Ramon Leon created an issue
 
Jenkins / Bug JENKINS-57862
A wrong configuration of CasC yaml kill Jenkins startup
Issue Type: Bug Bug
Assignee: Ewelina Wilkosz
Components: configuration-as-code-plugin
Created: 2019-06-05 15:36
Labels: configuration-as-code jcasc-compatibility
Priority: Major Major
Reporter: Ramon Leon

While testing the CasC plugin I've found that if the yaml is wrong, Jenkins stop restarting, leaving you with an unoperational instance.

Steps to reproduce:

  • Create a yaml with ssh credentials
  • Import this yaml
  • Remove credentials and ssh-credentials
  • Restart Jenkins

Expected:

  • Some settings are established, others not.

Current behavior:

  • Jenkins doesn't start.

 

Jun 05, 2019 5:27:03 PM jenkins.InitReactorRunner$1 onTaskFailedJun 05, 2019 5:27:03 PM jenkins.InitReactorRunner$1 onTaskFailedSEVERE: Failed ConfigurationAsCode.initjava.lang.Error: java.lang.reflect.InvocationTargetException at hudson.init.TaskMethodFinder.invoke(TaskMethodFinder.java:110) at hudson.init.TaskMethodFinder$TaskImpl.run(TaskMethodFinder.java:175) at org.jvnet.hudson.reactor.Reactor.runTask(Reactor.java:296) at jenkins.model.Jenkins$5.runTask(Jenkins.java:1096) at org.jvnet.hudson.reactor.Reactor$2.run(Reactor.java:214) at org.jvnet.hudson.reactor.Reactor$Node.run(Reactor.java:117) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748)Caused by: java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at hudson.init.TaskMethodFinder.invoke(TaskMethodFinder.java:104) ... 8 moreCaused by: io.jenkins.plugins.casc.ConfiguratorException: No configurator for root element <credentials> at io.jenkins.plugins.casc.ConfigurationAsCode.invokeWith(ConfigurationAsCode.java:642) at io.jenkins.plugins.casc.ConfigurationAsCode.checkWith(ConfigurationAsCode.java:666) at io.jenkins.plugins.casc.ConfigurationAsCode.configureWith(ConfigurationAsCode.java:650) at io.jenkins.plugins.casc.ConfigurationAsCode.configureWith(ConfigurationAsCode.java:549) at io.jenkins.plugins.casc.ConfigurationAsCode.configure(ConfigurationAsCode.java:277) at io.jenkins.plugins.casc.ConfigurationAsCode.init(ConfigurationAsCode.java:269) ... 13 more
Jun 05, 2019 5:27:03 PM hudson.util.BootFailure publishSEVERE: Failed to initialize Jenkinshudson.util.HudsonFailedToLoad: org.jvnet.hudson.reactor.ReactorException: java.lang.Error: java.lang.reflect.InvocationTargetException at hudson.WebAppMain$3.run(WebAppMain.java:250)Caused by: org.jvnet.hudson.reactor.ReactorException: java.lang.Error: java.lang.reflect.InvocationTargetException at org.jvnet.hudson.reactor.Reactor.execute(Reactor.java:282) at jenkins.InitReactorRunner.run(InitReactorRunner.java:48) at jenkins.model.Jenkins.executeReactor(Jenkins.java:1130) at jenkins.model.Jenkins.<init>(Jenkins.java:932) at hudson.model.Hudson.<init>(Hudson.java:85) at hudson.model.Hudson.<init>(Hudson.java:81) at hudson.WebAppMain$3.run(WebAppMain.java:233)Caused by: java.lang.Error: java.lang.reflect.InvocationTargetException at hudson.init.TaskMethodFinder.invoke(TaskMethodFinder.java:110) at hudson.init.TaskMethodFinder$TaskImpl.run(TaskMethodFinder.java:175) at org.jvnet.hudson.reactor.Reactor.runTask(Reactor.java:296) at jenkins.model.Jenkins$5.runTask(Jenkins.java:1096) at org.jvnet.hudson.reactor.Reactor$2.run(Reactor.java:214) at org.jvnet.hudson.reactor.Reactor$Node.run(Reactor.java:117) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748)Caused by: java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at hudson.init.TaskMethodFinder.invoke(TaskMethodFinder.java:104) ... 8 moreCaused by: io.jenkins.plugins.casc.ConfiguratorException: No configurator for root element <credentials> at io.jenkins.plugins.casc.ConfigurationAsCode.invokeWith(ConfigurationAsCode.java:642) at io.jenkins.plugins.casc.ConfigurationAsCode.checkWith(ConfigurationAsCode.java:666) at io.jenkins.plugins.casc.ConfigurationAsCode.configureWith(ConfigurationAsCode.java:650) at io.jenkins.plugins.casc.ConfigurationAsCode.configureWith(ConfigurationAsCode.java:549) at io.jenkins.plugins.casc.ConfigurationAsCode.configure(ConfigurationAsCode.java:277) at io.jenkins.plugins.casc.ConfigurationAsCode.init(ConfigurationAsCode.java:269) ... 13 more
Jun 05, 2019 5:27:03 PM jenkins.model.Jenkins cleanUpINFO: Stopping JenkinsJun 05, 2019 5:27:03 PM jenkins.model.Jenkins$18 onAttainedINFO: Started terminationJun 05, 2019 5:27:03 PM jenkins.model.Jenkins$18 onAttainedINFO: Completed terminationJun 05, 2019 5:27:03 PM jenkins.model.Jenkins _cleanUpDisconnectComputersINFO: Starting node disconnectionJun 05, 2019 5:27:03 PM jenkins.model.Jenkins _cleanUpShutdownPluginManagerINFO: Stopping plugin managerJun 05, 2019 5:27:03 PM jenkins.model.Jenkins _cleanUpPersistQueueINFO: Persisting build queueJun 05, 2019 5:27:03 PM jenkins.model.Jenkins _cleanUpAwaitDisconnectsINFO: Waiting for node disconnection completionJun 05, 2019 5:27:03 PM jenkins.model.Jenkins cleanUpINFO: Jenkins stopped
Add Comment Add Comment
 
This message was sent by Atlassian Jira (v7.11.2#711002-sha1:fdc329d)

o.v.nenashev@gmail.com (JIRA)

unread,
Jun 5, 2019, 11:41:03 AM6/5/19
to jenkinsc...@googlegroups.com

manuelramonleonjimenez@gmail.com (JIRA)

unread,
Jun 5, 2019, 12:57:02 PM6/5/19
to jenkinsc...@googlegroups.com

manuelramonleonjimenez@gmail.com (JIRA)

unread,
Jun 6, 2019, 1:48:02 PM6/6/19
to jenkinsc...@googlegroups.com

Also if the yaml file is removed you have to edit io.jenkins.plugins.casc.CasCGlobalConfig.xml to remove the file.

sk_rw@yahoo.com (JIRA)

unread,
Jun 10, 2019, 11:40:02 AM6/10/19
to jenkinsc...@googlegroups.com

[Originally posted on the associated GitHub issue, replicating here for visibility.]

I have personally worked around this by applying CasC configs through a job, and disabling CasC for Jenkins startup by pointing it to an empty file.

That is, I have a job that does a SCM checkout, and then runs something like this as a system-groovy script (from the groovy plugin):

import jenkins.model.GlobalConfiguration
import io.jenkins.plugins.casc.ConfigurationAsCode
import io.jenkins.plugins.casc.CasCGlobalConfig
def workspacePath = build.environment.WORKSPACE
def jcascConfig = GlobalConfiguration.all().get(CasCGlobalConfig.class)
try {
	jcascConfig.setConfigurationPath(workspacePath)
	jcascConfig.save()
	ConfigurationAsCode.get().configure()
} finally {
	jcascConfig.setConfigurationPath("${workspacePath}/empty.yaml")
	jcascConfig.save()
}

(Note that below CasC version 1.20, you need to have at least one setting in empty.yaml, a completely empty file generates a null pointer exception.)

soundcracker@gmail.com (JIRA)

unread,
Jun 15, 2019, 8:14:05 AM6/15/19
to jenkinsc...@googlegroups.com
Daniel Estermann updated an issue
 
Change By: Daniel Estermann
While testing the CasC plugin I've found that if the yaml is wrong, Jenkins stop restarting, leaving you with an unoperational instance.

Steps to reproduce:
* Create a yaml with ssh credentials
* Import this yaml
* Remove credentials and ssh-credentials
* Restart Jenkins

Expected:
* Some settings are established, others not.

Current behavior:
* Jenkins doesn't start.

 
{code:java}
Jun 05, 2019 5:27:03 PM jenkins.InitReactorRunner$1
onTaskFailedJun onTaskFailed
Jun
05, 2019 5:27:03 PM jenkins.InitReactorRunner$1 onTaskFailedSEVERE onTaskFailed SEVERE : Failed ConfigurationAsCode. initjava init
java
.lang.Error: java.lang.reflect.InvocationTargetException
at hudson.init.TaskMethodFinder.invoke(TaskMethodFinder.java:110)
at hudson.init.TaskMethodFinder$TaskImpl.run(TaskMethodFinder.java:175)
at org.jvnet.hudson.reactor.Reactor.runTask(Reactor.java:296)
at jenkins.model.Jenkins$5.runTask(Jenkins.java:1096)
at org.jvnet.hudson.reactor.Reactor$2.run(Reactor.java:214)
at org.jvnet.hudson.reactor.Reactor$Node.run(Reactor.java:117)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498) at hudson.init.TaskMethodFinder.invoke(TaskMethodFinder.java:104) ... 8 moreCaused more
Caused
by: io.jenkins.plugins.casc.ConfiguratorException: No configurator for root element <credentials>
at io.jenkins.plugins.casc.ConfigurationAsCode.invokeWith(ConfigurationAsCode.java:642)
at io.jenkins.plugins.casc.ConfigurationAsCode.checkWith(ConfigurationAsCode.java:666)
at io.jenkins.plugins.casc.ConfigurationAsCode.configureWith(ConfigurationAsCode.java:650)
at io.jenkins.plugins.casc.ConfigurationAsCode.configureWith(ConfigurationAsCode.java:549)
at io.jenkins.plugins.casc.ConfigurationAsCode.configure(ConfigurationAsCode.java:277)
at io.jenkins.plugins.casc.ConfigurationAsCode.init(ConfigurationAsCode.java:269) ... 13 more
Jun 05, 2019 5:27:03 PM hudson.util.BootFailure publishSEVERE publish SEVERE : Failed to initialize Jenkinshudson Jenkins
hudson
.util.HudsonFailedToLoad: org.jvnet.hudson.reactor.ReactorException: java.lang.Error: java.lang.reflect.InvocationTargetException
at hudson.WebAppMain$3.run(WebAppMain.java:250)
Caused by: org.jvnet.hudson.reactor.ReactorException: java.lang.Error: java.lang.reflect.InvocationTargetException
at org.jvnet.hudson.reactor.Reactor.execute(Reactor.java:282)
at jenkins.InitReactorRunner.run(InitReactorRunner.java:48)
at jenkins.model.Jenkins.executeReactor(Jenkins.java:1130)
at jenkins.model.Jenkins.<init>(Jenkins.java:932)
at hudson.model.Hudson.<init>(Hudson.java:85)
at hudson.model.Hudson.<init>(Hudson.java:81)
at hudson.WebAppMain$3.run(WebAppMain.java:233)
Caused by: java.lang.Error: java.lang.reflect.InvocationTargetException
at hudson.init.TaskMethodFinder.invoke(TaskMethodFinder.java:110)
at hudson.init.TaskMethodFinder$TaskImpl.run(TaskMethodFinder.java:175)
at org.jvnet.hudson.reactor.Reactor.runTask(Reactor.java:296)
at jenkins.model.Jenkins$5.runTask(Jenkins.java:1096)
at org.jvnet.hudson.reactor.Reactor$2.run(Reactor.java:214)
at org.jvnet.hudson.reactor.Reactor$Node.run(Reactor.java:117)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at hudson.init.TaskMethodFinder.invoke(TaskMethodFinder.java:104) ... 8 moreCaused more
Caused
by: io.jenkins.plugins.casc.ConfiguratorException: No configurator for root element <credentials>
at io.jenkins.plugins.casc.ConfigurationAsCode.invokeWith(ConfigurationAsCode.java:642)
at io.jenkins.plugins.casc.ConfigurationAsCode.checkWith(ConfigurationAsCode.java:666)
at io.jenkins.plugins.casc.ConfigurationAsCode.configureWith(ConfigurationAsCode.java:650)
at io.jenkins.plugins.casc.ConfigurationAsCode.configureWith(ConfigurationAsCode.java:549)
at io.jenkins.plugins.casc.ConfigurationAsCode.configure(ConfigurationAsCode.java:277)
at io.jenkins.plugins.casc.ConfigurationAsCode.init(ConfigurationAsCode.java:269) ... 13 more
Jun 05, 2019 5:27:03 PM jenkins.model.Jenkins cleanUpINFO cleanUp INFO : Stopping JenkinsJun Jenkins
Jun
05, 2019 5:27:03 PM jenkins.model.Jenkins$18 onAttainedINFO onAttained INFO : Started terminationJun termination
Jun
05, 2019 5:27:03 PM jenkins.model.Jenkins$18 onAttainedINFO onAttained INFO : Completed terminationJun termination
Jun
05, 2019 5:27:03 PM jenkins.model.Jenkins _cleanUpDisconnectComputersINFO _cleanUpDisconnectComputers INFO : Starting node disconnectionJun disconnection
Jun
05, 2019 5:27:03 PM jenkins.model.Jenkins _cleanUpShutdownPluginManagerINFO _cleanUpShutdownPluginManager INFO : Stopping plugin managerJun manager
Jun
05, 2019 5:27:03 PM jenkins.model.Jenkins _cleanUpPersistQueueINFO _cleanUpPersistQueue INFO : Persisting build queueJun queue
Jun
05, 2019 5:27:03 PM jenkins.model.Jenkins _cleanUpAwaitDisconnectsINFO _cleanUpAwaitDisconnects INFO : Waiting for node disconnection completionJun completion
Jun
05, 2019 5:27:03 PM jenkins.model.Jenkins cleanUpINFO cleanUp INFO : Jenkins stopped
{code}
Reply all
Reply to author
Forward
0 new messages