如何配置Jenkins“创建作业高级”插件通过groovy? [英] How do you configure the Jenkins "Create Job Advanced" plugin via groovy?
问题描述
我的主要目标是使用groovy来配置Jenkins和所有插件,这样我就不需要通过web界面手动配置Jenkins了,如这里正在尝试。 p>
具体来说,我正在尝试配置插件
当我在Jenkins脚本控制台中尝试以下代码时:
import org.codehaus.groovy.runtime.NullObject;
// Jenkins实例
def描述符= jenkins.model.Jenkins.getInstance()。getDescriptorByType(hudson.plugins.createjobadvanced.CreateJobAdvancedPlugin.class);
org.kohsuke.stapler.StaplerRequest stapler = null
//插件参数
net.sf.json.JSONObject jsonObject = new net.sf.json。的JSONObject();
jsonObject.put(security,false);
jsonObject.put(jobspacesinname,true);
println(是订书机请求吗?$ {订书机实例org.kohsuke.stapler.StaplerRequest}。);
descriptor.configure(stapler,jsonObject);
我一直得到这个错误无法在null对象上调用方法configure() / code>并且不知道为什么。
是订书机要求吗?真正。
java.lang.NullPointerException:无法在null对象上调用方法configure()org.codehaus.groovy.runtime.NullObject.invokeMethod上的
(NullObject.java:77)$ or $ $ $ b $ org.codehaus .groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:45)$ or $ $ b $ org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:42)
at org.codehaus .groovy.runtime.callsite.NullCallSite.call(NullCallSite.java:32)
在org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:42)
在org.codehaus .groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:120)
at Script1.run (Script1.groovy:14)
at groovy.lang.GroovyShell.evaluate(GroovyShell.java:580)
at groovy.lang.GroovyShell.evaluate(GroovyShell.java:618)
at groovy.lang.GroovyShell.evaluate(GroovyShell.java:589)
在hudson.util.RemotingDiagnostics $ Script.call(RemotingDiagnostics.java:142)
at hudson.util.RemotingDiagnostics $ Script.call(RemotingDiagnostics.java:114)
at hudson.remoting.LocalChannel.call (LocalChannel.java:45)
at hudson.util.RemotingDiagnostics.executeGroovy(RemotingDiagnostics.java:111)
at jenkins.model.Jenkins._doScript(Jenkins.java:3542)
at jenkins.model.Jenkins.doScript(Jenkins.java:3514)
at sun.reflect.GeneratedMethodAccessor215.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)$在java.lang.reflect.Method.invoke(Method.java:497)
在org.kohsuke.stapler.Function $ InstanceFunction.invoke(Function.java:298)
。 kohsuke.stapler.Function.bindAndInvoke(Function.java:161)
at org.kohsuke.stapler.Function.bindAndInvokeAndServeResponse(Function.java:96)
at org.kohsuke.stapler.MetaClass $ 1.doDispatch (MetaClass.java:121)
at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:53)
at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:746)
at org.kohsuke .stapler.Stapler.invoke(Stapler.java:876)
at org.kohsuke.stapler.Stapler.invoke(Stapler.java:649)
at org.kohsuke.stapler.Stapler.service(订书机.java:238)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:686)
at org.eclipse.jetty.servlet.ServletHandler $ CachedChain.doFilter(ServletHandler.java:1494)
at hudson.util.PluginServletFilter $ 1.doFilter(PluginServletFilter.java:123)
at hudson .plugins.audit_trail.AuditTrailFilter.doFilter(AuditTrailFilter.java:95)
在hudson.util.PluginServletFilter $ 1.doFilter(PluginServletFilter.java:120)
在hudson.plugins.greenballs.GreenBallFilter.doFilter( GreenBallFilter.java:58)
在hudson.util.PluginServletFil之三$ 1.doFilter(PluginServletFilter.java:120)
在hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:114)
在org.eclipse.jetty.servlet.ServletHandler $ CachedChain.doFilter(ServletHandler .java:1482)
at hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:48)
at org.eclipse.jetty.servlet.ServletHandler $ CachedChain.doFilter(ServletHandler.java:1482 )
在hudson.security.ChainedServletFilter $ 1.doFilter(ChainedServletFilter.java:84)
在hudson.security.ChainedServletFilter.doFilter(ChainedServletFilter.java:76)
在hudson.security.HudsonFilter .doFilter(HudsonFilter.java:168)
at org.eclipse.jetty.servlet.ServletHandler $ CachedChain.doFilter(ServletHandler.java:1482)
at org.kohsuke.stapler.compression.CompressionFilter.doFilter (CompressionFilter.java:49)
at org.eclipse.jetty.servlet.ServletHandler $ CachedChain.doFilter(ServletHandler.java:1482)
at hudson.util.CharacterEncodingFilter。的doFilter(CharacterEncodingFilter.java:81)
在org.eclipse.jetty.servlet.ServletHandler $ CachedChain.doFilter(ServletHandler.java:1482)
在org.kohsuke.stapler.DiagnosticThreadNameFilter.doFilter(DiagnosticThreadNameFilter。 java:30)
at org.eclipse.jetty.servlet.ServletHandler $ CachedChain.doFilter(ServletHandler.java:1474)
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java: 499)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137)
at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:533)
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1086)
org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231)
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:428)
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193)$ b $ org.eclip se.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1020)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)
at org。 eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)$ or $。$ b $在org.eclipse.jetty.server.Server.handle(Server.java:370)
在org.eclipse。在org.eclipse.jetty.server.AbstractHttpConnection.content(AbstractHttpConnection.java:960)上
在org.eclipse.jetty.server上
。 AbstractHttpConnection $ RequestHandler.content(AbstractHttpConnection.java:1021)
at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:865)
at org.eclipse.jetty.http.HttpParser。 parseAvailable(HttpParser.java:240)
at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82)
at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle( SelectChannelEndPoint.java:668)
在org.eclipse.jetty.io.nio.SelectChannelEndPoint $ 1.run(SelectChannelEndPoint.java:52)
在winstone.BoundedExecutorService $ 1.run(BoundedExecutorService.java:77)$ b $在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)
CreateJobAdvancedPlugin类似乎没有描述符。您需要从PluginManager获取插件实例,例如
import hudson.PluginWrapper
import hudson.plugins。 createjobadvanced.CreateJobAdvancedPlugin
进口jenkins.model.Jenkins
PluginWrapper包装= Jenkins.instance.pluginManager.getPlugin(CreateJobAdvancedPlugin)
CreateJobAdvancedPlugin插件= wrapper.getPlugin()作为CreateJobAdvancedPlugin
My main goal is to use groovy to configure Jenkins and all the plugins, so that I don't need to manually configure Jenkins through the web interface, as the the post here was trying.
Specifically, I'm trying to configure the Create Job Advanced plugin in Jenkins through groovy.
When I try this code in the Jenkins Script Console:
import org.codehaus.groovy.runtime.NullObject;
// Jenkins instance
def descriptor = jenkins.model.Jenkins.getInstance().getDescriptorByType(hudson.plugins.createjobadvanced.CreateJobAdvancedPlugin.class);
org.kohsuke.stapler.StaplerRequest stapler = null
// Plugin Parameters
net.sf.json.JSONObject jsonObject = new net.sf.json.JSONObject();
jsonObject.put("security", false);
jsonObject.put("jobspacesinname", true);
println ("Is it a stapler request? ${stapler instanceof org.kohsuke.stapler.StaplerRequest}.");
descriptor.configure(stapler, jsonObject);
I keep getting this error Cannot invoke method configure() on null object
and don't know why.
Is it a stapler request? true.
java.lang.NullPointerException: Cannot invoke method configure() on null object
at org.codehaus.groovy.runtime.NullObject.invokeMethod(NullObject.java:77)
at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:45)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:42)
at org.codehaus.groovy.runtime.callsite.NullCallSite.call(NullCallSite.java:32)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:42)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:120)
at Script1.run(Script1.groovy:14)
at groovy.lang.GroovyShell.evaluate(GroovyShell.java:580)
at groovy.lang.GroovyShell.evaluate(GroovyShell.java:618)
at groovy.lang.GroovyShell.evaluate(GroovyShell.java:589)
at hudson.util.RemotingDiagnostics$Script.call(RemotingDiagnostics.java:142)
at hudson.util.RemotingDiagnostics$Script.call(RemotingDiagnostics.java:114)
at hudson.remoting.LocalChannel.call(LocalChannel.java:45)
at hudson.util.RemotingDiagnostics.executeGroovy(RemotingDiagnostics.java:111)
at jenkins.model.Jenkins._doScript(Jenkins.java:3542)
at jenkins.model.Jenkins.doScript(Jenkins.java:3514)
at sun.reflect.GeneratedMethodAccessor215.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.kohsuke.stapler.Function$InstanceFunction.invoke(Function.java:298)
at org.kohsuke.stapler.Function.bindAndInvoke(Function.java:161)
at org.kohsuke.stapler.Function.bindAndInvokeAndServeResponse(Function.java:96)
at org.kohsuke.stapler.MetaClass$1.doDispatch(MetaClass.java:121)
at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:53)
at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:746)
at org.kohsuke.stapler.Stapler.invoke(Stapler.java:876)
at org.kohsuke.stapler.Stapler.invoke(Stapler.java:649)
at org.kohsuke.stapler.Stapler.service(Stapler.java:238)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:686)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1494)
at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:123)
at hudson.plugins.audit_trail.AuditTrailFilter.doFilter(AuditTrailFilter.java:95)
at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:120)
at hudson.plugins.greenballs.GreenBallFilter.doFilter(GreenBallFilter.java:58)
at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:120)
at hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:114)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
at hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:48)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:84)
at hudson.security.ChainedServletFilter.doFilter(ChainedServletFilter.java:76)
at hudson.security.HudsonFilter.doFilter(HudsonFilter.java:168)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
at org.kohsuke.stapler.compression.CompressionFilter.doFilter(CompressionFilter.java:49)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
at hudson.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:81)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
at org.kohsuke.stapler.DiagnosticThreadNameFilter.doFilter(DiagnosticThreadNameFilter.java:30)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1474)
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:499)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137)
at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:533)
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231)
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1086)
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:428)
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193)
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1020)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
at org.eclipse.jetty.server.Server.handle(Server.java:370)
at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:489)
at org.eclipse.jetty.server.AbstractHttpConnection.content(AbstractHttpConnection.java:960)
at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.content(AbstractHttpConnection.java:1021)
at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:865)
at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:240)
at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82)
at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:668)
at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:52)
at winstone.BoundedExecutorService$1.run(BoundedExecutorService.java:77)
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)
How can the Create Job Advanced plugin be configured via groovy?
The CreateJobAdvancedPlugin class seems to have no Descriptor. You need to get the plugin instance from the PluginManager instead, e.g.
import hudson.PluginWrapper
import hudson.plugins.createjobadvanced.CreateJobAdvancedPlugin
import jenkins.model.Jenkins
PluginWrapper wrapper = Jenkins.instance.pluginManager.getPlugin(CreateJobAdvancedPlugin)
CreateJobAdvancedPlugin plugin = wrapper.getPlugin() as CreateJobAdvancedPlugin
这篇关于如何配置Jenkins“创建作业高级”插件通过groovy?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!