configuration-as-code-plugin: Does not work with Jenkins version 2.235.1

  • [ 2.235.1 ] Jenkins version

  • [ 1.41 ] Plugin version

  • [ Mac ] OS

Description

Currently starting with Jenkins version 2.235.1 fails with below error. How can we fix this?

2020-06-23 08:39:17.977+0000 [id=21]	SEVERE	hudson.util.BootFailure#publish: Failed to initialize Jenkins
java.lang.IllegalArgumentException: Last encoded character (before the paddings if any) is a valid base 64 alphabet but not a possible value. Expected the discarded bits to be zero.
	at org.apache.commons.codec.binary.Base64.validateCharacter(Base64.java:803)
	at org.apache.commons.codec.binary.Base64.decode(Base64.java:482)
	at org.apache.commons.codec.binary.BaseNCodec.decode(BaseNCodec.java:481)
	at org.apache.commons.codec.binary.BaseNCodec.decode(BaseNCodec.java:465)
	at org.apache.commons.codec.binary.Base64.decodeBase64(Base64.java:699)
	at com.cloudbees.plugins.credentials.SecretBytes.fromString(SecretBytes.java:283)
	at com.cloudbees.plugins.credentials.SecretBytes$StaplerConverterImpl.convert(SecretBytes.java:365)
	at com.cloudbees.plugins.credentials.SecretBytes$StaplerConverterImpl.convert(SecretBytes.java:359)
	at io.jenkins.plugins.casc.impl.configurators.PrimitiveConfigurator.configure(PrimitiveConfigurator.java:45)
	at io.jenkins.plugins.casc.impl.configurators.DataBoundConfigurator.tryConstructor(DataBoundConfigurator.java:160)
	at io.jenkins.plugins.casc.impl.configurators.DataBoundConfigurator.instance(DataBoundConfigurator.java:77)
	at io.jenkins.plugins.casc.BaseConfigurator.configure(BaseConfigurator.java:267)
	at io.jenkins.plugins.casc.impl.configurators.DataBoundConfigurator.configure(DataBoundConfigurator.java:83)
	at io.jenkins.plugins.casc.impl.configurators.HeteroDescribableConfigurator.lambda$doConfigure$16668e2$1(HeteroDescribableConfigurator.java:277)
	at io.vavr.CheckedFunction0.lambda$unchecked$52349c75$1(CheckedFunction0.java:247)
	at io.jenkins.plugins.casc.impl.configurators.HeteroDescribableConfigurator.doConfigure(HeteroDescribableConfigurator.java:277)
	at io.jenkins.plugins.casc.impl.configurators.HeteroDescribableConfigurator.lambda$null$2(HeteroDescribableConfigurator.java:86)
	at io.vavr.control.Option.map(Option.java:392)
	at io.jenkins.plugins.casc.impl.configurators.HeteroDescribableConfigurator.lambda$configure$3(HeteroDescribableConfigurator.java:86)
	at io.vavr.Tuple2.apply(Tuple2.java:238)
	at io.jenkins.plugins.casc.impl.configurators.HeteroDescribableConfigurator.configure(HeteroDescribableConfigurator.java:83)
	at io.jenkins.plugins.casc.impl.configurators.HeteroDescribableConfigurator.configure(HeteroDescribableConfigurator.java:55)
	at io.jenkins.plugins.casc.impl.configurators.DataBoundConfigurator.tryConstructor(DataBoundConfigurator.java:152)
	at io.jenkins.plugins.casc.impl.configurators.DataBoundConfigurator.instance(DataBoundConfigurator.java:77)
	at io.jenkins.plugins.casc.BaseConfigurator.configure(BaseConfigurator.java:267)
	at io.jenkins.plugins.casc.impl.configurators.DataBoundConfigurator.check(DataBoundConfigurator.java:101)
	at io.jenkins.plugins.casc.BaseConfigurator.configure(BaseConfigurator.java:344)
	at io.jenkins.plugins.casc.BaseConfigurator.check(BaseConfigurator.java:287)
	at io.jenkins.plugins.casc.BaseConfigurator.configure(BaseConfigurator.java:351)
	at io.jenkins.plugins.casc.BaseConfigurator.check(BaseConfigurator.java:287)
	at io.jenkins.plugins.casc.ConfigurationAsCode.lambda$checkWith$8(ConfigurationAsCode.java:755)
	at io.jenkins.plugins.casc.ConfigurationAsCode.invokeWith(ConfigurationAsCode.java:691)
	at io.jenkins.plugins.casc.ConfigurationAsCode.checkWith(ConfigurationAsCode.java:755)
	at io.jenkins.plugins.casc.ConfigurationAsCode.configureWith(ConfigurationAsCode.java:740)
	at io.jenkins.plugins.casc.ConfigurationAsCode.configureWith(ConfigurationAsCode.java:616)
	at io.jenkins.plugins.casc.ConfigurationAsCode.configure(ConfigurationAsCode.java:298)
	at io.jenkins.plugins.casc.ConfigurationAsCode.init(ConfigurationAsCode.java:290)
Caused: java.lang.reflect.InvocationTargetException
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
	at hudson.init.TaskMethodFinder.invoke(TaskMethodFinder.java:104)
Caused: java.lang.Error
	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:1131)
	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:59)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
	at java.base/java.lang.Thread.run(Thread.java:834)
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:1164)
	at jenkins.model.Jenkins.<init>(Jenkins.java:964)
	at hudson.model.Hudson.<init>(Hudson.java:85)
	at hudson.model.Hudson.<init>(Hudson.java:81)
	at hudson.WebAppMain$3.run(WebAppMain.java:262)
Caused: hudson.util.HudsonFailedToLoad
	at hudson.WebAppMain$3.run(WebAppMain.java:279)
2020-06-23 08:39:18.006+0000 [id=21]	INFO	jenkins.model.Jenkins#cleanUp: Stopping Jenkins
2020-06-23 08:39:18.061+0000 [id=21]	INFO	jenkins.model.Jenkins$18#onAttained: Started termination
2020-06-23 08:39:18.092+0000 [id=21]	INFO	jenkins.model.Jenkins$18#onAttained: Completed termination
2020-06-23 08:39:18.092+0000 [id=21]	INFO	jenkins.model.Jenkins#_cleanUpDisconnectComputers: Starting node disconnection
2020-06-23 08:39:18.098+0000 [id=21]	INFO	jenkins.model.Jenkins#_cleanUpShutdownPluginManager: Stopping plugin manager
2020-06-23 08:39:18.126+0000 [id=21]	INFO	jenkins.model.Jenkins#_cleanUpPersistQueue: Persisting build queue
2020-06-23 08:39:18.141+0000 [id=21]	INFO	jenkins.model.Jenkins#_cleanUpAwaitDisconnects: Waiting for node disconnection completion
2020-06-23 08:39:18.142+0000 [id=21]	INFO	jenkins.model.Jenkins#cleanUp: Jenkins stopped

About this issue

  • Original URL
  • State: closed
  • Created 4 years ago
  • Reactions: 1
  • Comments: 20 (14 by maintainers)

Most upvoted comments

Note that if you hit this IllegalArgumentException, AFAIK, it meant you were passing an invalid value to a parameter which expected either an secret encrypted against a Jenkins key (format {…}) or Base64-encoded plaintext. The bug was that this mistake threw an unchecked exception which crashed startup. The fix is for it to behave as it did in earlier Jenkins versions: the invalid input is silently treated like an empty string. So I suspect that waiting for this plugin release was beside the point; you need to fix your JCasC YAML instead. From the stack trace, it seems that the input was neither encrypted, nor well-formed Base64; perhaps you were attempting to pass unencoded plaintext, which is not supported.

Need your actual configuration to reproduce this, it’s a config specific issue

Same thing, can confirm that fix working for me! Thanks a lot @jglick @timja @jvz @hybmg57

don’t thank me I just raised my issue. thanks again to @timja @jvz and especially @jglick as he fixed the issue 🥇

Same thing, can confirm that fix working for me! Thanks a lot @jglick @timja @jvz @hybmg57