jenkinsci / nomad-plugin

Nomad cloud plugin for Jenkins
https://plugins.jenkins.io/nomad/
MIT License
56 stars 41 forks source link

add support to namespaces and tokens #32

Closed pserranoa closed 3 years ago

pserranoa commented 6 years ago
pserranoa commented 6 years ago

added secure by storing nomad credentials at jenkins credentials database

jovandeginste commented 6 years ago

I get stack traces when running a build from this PR on top op jenkinci/master:

WARNING: Failed to scout org.jenkinsci.plugins.nomad.NomadSlaveTemplate$DescriptorImpl
java.lang.NoClassDefFoundError: com/cloudbees/plugins/credentials/common/AbstractIdCredentialsListBoxModel
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:348)
        at hudson.ExtensionFinder$Sezpoz.scout(ExtensionFinder.java:669)
        at hudson.ClassicPluginStrategy.findComponents(ClassicPluginStrategy.java:487)
        at hudson.ExtensionList.load(ExtensionList.java:380)
        at hudson.ExtensionList.ensureLoaded(ExtensionList.java:318)
        at hudson.ExtensionList.getComponents(ExtensionList.java:183)
        at jenkins.model.Jenkins$6.onInitMilestoneAttained(Jenkins.java:1099)
        at jenkins.InitReactorRunner$1.onAttained(InitReactorRunner.java:83)
        at org.jvnet.hudson.reactor.ReactorListener$Aggregator.lambda$onAttained$3(ReactorListener.java:102)
        at org.jvnet.hudson.reactor.ReactorListener$Aggregator.run(ReactorListener.java:109)
        at org.jvnet.hudson.reactor.ReactorListener$Aggregator.onAttained(ReactorListener.java:102)
        at org.jvnet.hudson.reactor.Reactor$1.run(Reactor.java:177)
        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.ClassNotFoundException: com.cloudbees.plugins.credentials.common.AbstractIdCredentialsListBoxModel
        at jenkins.util.AntClassLoader.findClassInComponents(AntClassLoader.java:1374)
        at jenkins.util.AntClassLoader.findClass(AntClassLoader.java:1327)
        at jenkins.util.AntClassLoader.loadClass(AntClassLoader.java:1080)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
        ... 17 more

Later:

WARNING: Caught exception evaluating: descriptor.getPropertyType(instance,field).itemTypeDescriptorOrDie in /apps/jenkins/configure. Reason: java.lang.reflect.Inv
ocationTargetException
java.lang.reflect.InvocationTargetException
        at sun.reflect.GeneratedMethodAccessor216.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
[...]
Caused by: java.lang.AssertionError: class org.jenkinsci.plugins.nomad.NomadSlaveTemplate is missing its descriptor in public java.util.List org.jenkinsci.plugins.nomad.NomadCloud.getTemplates(). See https://jenkins.io/redirect/developer/class-is-missing-descriptor
        at hudson.model.Descriptor$PropertyType.getItemTypeDescriptorOrDie(Descriptor.java:208)
        ... 277 more

Then:

javax.servlet.ServletException: org.apache.commons.jelly.JellyTagException: jar:file:/var/cache/jenkins/war/WEB-INF/lib/jenkins-core-2.121.2.jar!/jenkins/model/Jenkins/configure.jelly:51:84: <st:include> org.apache.commons.jelly.JellyTagException: jar:file:/var/cache/jenkins/war/WEB-INF/lib/jenkins-core-2.121.2.jar!/lib/form/section.jelly:48:21: <d:invokeBody> org.apache.commons.jelly.JellyTagException: jar:file:/var/cache/jenkins/war/WEB-INF/lib/jenkins-core-2.121.2.jar!/lib/form/block.jelly:32:22: <d:invokeBody> org.apache.commons.jelly.JellyTagException: jar:file:/opt/jenkins/plugins/nomad/WEB-INF/lib/nomad.jar!/org/jenkinsci/plugins/nomad/NomadCloud/config.jelly:25:158: <st:include> com/cloudbees/plugins/credentials/common/AbstractIdCredentialsListBoxModel
        at org.kohsuke.stapler.jelly.JellyFacet$1.dispatch(JellyFacet.java:105)
        at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:734)
        at org.kohsuke.stapler.Stapler.invoke(Stapler.java:864)
        at org.kohsuke.stapler.Stapler.invoke(Stapler.java:668)
        at org.kohsuke.stapler.Stapler.service(Stapler.java:238)
[...]
Caused by: org.apache.commons.jelly.JellyTagException: jar:file:/var/cache/jenkins/war/WEB-INF/lib/jenkins-core-2.121.2.jar!/jenkins/model/Jenkins/configure.jelly:51:84: <st:include> org.apache.commons.jelly.JellyTagException: jar:file:/var/cache/jenkins/war/WEB-INF/lib/jenkins-core-2.121.2.jar!/lib/form/section.jelly:48:21: <d:invokeBody> org.apache.commons.jelly.JellyTagException: jar:file:/var/cache/jenkins/war/WEB-INF/lib/jenkins-core-2.121.2.jar!/lib/form/block.jelly:32:22: <d:invokeBody> org.apache.commons.jelly.JellyTagException: jar:file:/opt/jenkins/plugins/nomad/WEB-INF/lib/nomad.jar!/org/jenkinsci/plugins/nomad/NomadCloud/config.jelly:25:158: <st:include> com/cloudbees/plugins/credentials/common/AbstractIdCredentialsListBoxModel
        at org.apache.commons.jelly.impl.TagScript.handleException(TagScript.java:726)
        at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:281)
        at org.kohsuke.stapler.jelly.CallTagLibScript$1.run(CallTagLibScript.java:99)
        at org.apache.commons.jelly.tags.define.InvokeBodyTag.doTag(InvokeBodyTag.java:91)
[...]
Caused by: java.lang.RuntimeException: org.apache.commons.jelly.JellyTagException: jar:file:/var/cache/jenkins/war/WEB-INF/lib/jenkins-core-2.121.2.jar!/lib/form/section.jelly:48:21: <d:invokeBody> org.apache.commons.jelly.JellyTagException: jar:file:/var/cache/jenkins/war/WEB-INF/lib/jenkins-core-2.121.2.jar!/lib/form/block.jelly:32:22: <d:invokeBody> org.apache.commons.jelly.JellyTagException: jar:file:/opt/jenkins/plugins/nomad/WEB-INF/lib/nomad.jar!/org/jenkinsci/plugins/nomad/NomadCloud/config.jelly:25:158: <st:include> com/cloudbees/plugins/credentials/common/AbstractIdCredentialsListBoxModel
        at org.kohsuke.stapler.jelly.groovy.JellyBuilder.doInvokeMethod(JellyBuilder.java:280)
        at org.kohsuke.stapler.jelly.groovy.Namespace$ProxyImpl.invoke(Namespace.java:92)
        at com.sun.proxy.$Proxy78.section(Unknown Source)
        at lib.FormTagLib$section$11.call(Unknown Source)
        at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48)
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113)
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:133)
        at jenkins.model.GlobalCloudConfiguration.config.run(config.groovy:10)
        at org.kohsuke.stapler.jelly.groovy.GroovierJellyScript.run(GroovierJellyScript.java:74)
        at org.kohsuke.stapler.jelly.groovy.GroovierJellyScript.run(GroovierJellyScript.java:62)
        at org.kohsuke.stapler.jelly.IncludeTag.doTag(IncludeTag.java:147)
        at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:269)
        ... 143 more
Caused by: org.apache.commons.jelly.JellyTagException: jar:file:/var/cache/jenkins/war/WEB-INF/lib/jenkins-core-2.121.2.jar!/lib/form/section.jelly:48:21: <d:invokeBody> org.apache.commons.jelly.JellyTagException: jar:file:/var/cache/jenkins/war/WEB-INF/lib/jenkins-core-2.121.2.jar!/lib/form/block.jelly:32:22: <d:invokeBody> org.apache.commons.jelly.JellyTagException: jar:file:/opt/jenkins/plugins/nomad/WEB-INF/lib/nomad.jar!/org/jenkinsci/plugins/nomad/NomadCloud/config.jelly:25:158: <st:include> com/cloudbees/plugins/credentials/common/AbstractIdCredentialsListBoxModel
        at org.apache.commons.jelly.impl.TagScript.handleException(TagScript.java:726)
        at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:281)
        at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
        at org.kohsuke.stapler.jelly.CallTagLibScript$1.run(CallTagLibScript.java:99)
        at org.apache.commons.jelly.tags.define.InvokeBodyTag.doTag(InvokeBodyTag.java:91)
        at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:269)
        at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:161)
        at org.apache.commons.jelly.tags.core.WhenTag.doTag(WhenTag.java:46)
        at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:269)
        at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
        at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:161)
        at org.apache.commons.jelly.tags.core.ChooseTag.doTag(ChooseTag.java:38)
        at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:269)

etc. etc.

I rolled back to my previous version; will not try a clean build from jenkinci/master to pin down the problem.

jovandeginste commented 6 years ago

Built the clean jenkinsci/master, no issues now. Seems to be something missing?

pserranoa commented 6 years ago

did you test it? we use this version at our company and looks right

jovandeginste commented 6 years ago

@i4s-pserrano apologies, it was my own mistake. I left the old version, so Jenkins loaded both.

peimanja commented 5 years ago

Any update on this one? We are enabling ACLs and this could really help us.

peimanja commented 5 years ago

@ncorrare Did you also work on a similar PR? Can you help with this one?

SimonVleugels commented 3 years ago

Now that Nomad v1.0.0 is released and namespaces are added to the OSS version. Can we also add the namespace option in the plugin?