[ 2.235.1 ] Jenkins version
[ 1.41 ] Plugin version
[ Mac ] OS
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
This is an issue with the apache commons-codec library, the credentials plugin put in a workaround here:
https://github.com/jenkinsci/credentials-plugin/pull/152
released in 2.3.8 https://github.com/jenkinsci/credentials-plugin/releases
I'm using credentials:2.3.8 this only happens when I upgrade Jenkins version from 2.222.4 to 2.235.1
Try and reduce your config down, it'll be some character that isn't properly encoded most likely
I didn't change any config and as soon as move back to version 2.222.4 it works. It's only when I switch to 2.235.1 it doesn't work with above error
This is a config specific issue, and most likely not related to this plugin.
I'm running Jenkins 2.241, with the latest credentials version and using credentials and it works for me
Same issue (same behavior as @hybmg57 described above) with:
But creds plugin version is: 2.3.10
I think it's related only this latest LTS version of Jenkins.
Need your actual configuration to reproduce this, it's a config specific issue
I think it only happens when we are trying to use with casc ssm plugin
any update here?
@hybmg57 I'm not using ssm plugin in my config. But I can't share my config for debug...
@jvz any thoughts on the above issue ^^
Well, that stack trace is from commons-codec for base64 which is included in Java, so perhaps that code should be refactored to use the Java 8 class instead.
It relates to these PRs:
https://github.com/jenkinsci/credentials-plugin/pull/152
https://github.com/jenkinsci/jenkins/pull/4636
not actually related to configuration-as-code at all afaik.
also cc @jglick
I have no idea. The commons-codec update addresses a CVE or VULNDB finding which is unrelated.
I am on it.
Should be fixed in https://github.com/jenkinsci/credentials-plugin/releases/tag/credentials-2.3.12
this fixed it
Same thing, can confirm that fix working for me!
Thanks a lot @jglick @timja @jvz @hybmg57
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 馃
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.
Most helpful comment
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.