繁体   English   中英

Jenkins Job DSL问题

[英]Jenkins Job DSL Issue

我创建了以下常规脚本以在Jenkins中创建示例作业。

import hudson.model.*
import hudson.node_monitors.*
import hudson.slaves.*
import java.util.concurrent.*
jenkins = Hudson.instance

now=Calendar.instance;
def project_name = 'ARCHIE_DSL_TEST'

println("The build is run at ${now.time}");

freeStyleJob(project_name) {
        disabled(false)
        logRotator(-1, 10)
        description("Our first DSL Generated ServerSpec Job")
        parameters {
                choiceParam("SERVER_FQDN", ["server1.test.com.au", "server2.test.com.au", "server3.test.com.au", "server4.test.com.au"])
                description 'Select a server from the list to test'
        }
        scm {
                git {
                        remote {
                                github("MY_ORG/my_repo", 'ssh', 'github.aus.mydomain.com')
                                branch("*/master")
                        }
                }
        }
        triggers {
                scm("H/15 * * * *")
        }
        steps {
        }
}

当我在詹金斯(Jenkins)中创建作业以运行此DSL时,它可以正常工作并创建一个名为ARCHIE_DSL_TEST的作业。

但是,我想做的是使用curl运行此作业,并且我一直在运行以下命令。

/usr/bin/curl -k --user 'archie' --data-urlencode "script=$(</var/lib/jenkins/jobs/archie_test/workspace/create_tab.groovy)" https://localhost:8080/scriptText

但是,这给了我一个例外。

该构建于2016年1月27日星期三AEDT运行groovy.lang.MissingMethodException:方法的无签名:Script1.freeStyleJob()适用于参数类型:(java.lang.String,Script1 $ _run_closure1)值: [ARCHIE_DSL_TEST,Script1 $ _run_closure1 @ 9761fdb],位于org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.java:55),位于org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.callCurrent(PogoMetaClassSite.java:78) org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:133)上的org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:46)在org.codehaus.groovy.runtime上。在groovy.lang.GroovyShell.evaluate(GroovyShell.java:580)的Script1.run(Script1.groovy:13)处的callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:145)在groovy.lang.GroovyShell.evaluate(GroovyShell.java)处:618)在groovy.lang.GroovyShell.evaluate(GroovyShell.java:589)在hudson.util.RemotingDiagnostics $ Script.call(Rem hudson.util.RemotingDiagnostics $ Script.call(RemotingDiagnostics.java:111)上的otingDiagnostics.java:139),hudson.util.RemotingDiagnostics.executeGroovy(RemotingDiagnostics.java)上hudson.remoting.LocalChannel.call(LocalChannel.java:45)上的otingDiagnostics.java:139) :108)在jenkins.model.Jenkins._doScript(Jenkins.java:3556)在sun.reflect.GeneratedMethodAccessor205.invoke(unknown Source)在jenkins.model.Jenkins.doScriptText(Jenkins.java:3540)在sun.reflect。 org.kohsuke.stapler.Function $ InstanceFunction.invoke(Function.java:298)上的java.lang.reflect.Method.invoke(Method.java:606)上的DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) org.kohsuke的.stapler.Function.bindAndInvoke(Function.java:161)org.org的org.kohsuke.stapler.Function.bindAndInvokeAndServeResponse(Function.java:96)的org.kohsuke.stapler.MetaClass $ 1.doDispatch(MetaClass.java:121)的组织org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:746)上的.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:53)在org.kohsuke上。 org.kohsuke.stapler.stapler.Stapler.invoke(Stapler.java:649)的org.kohsuke.stapler.Stapler.service(Stapler.java:238)的钉书机.Stapler.invoke(Stapler.java:876) org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:686)的.http.HttpServlet.service(HttpServlet.java:848)org.eclipse.jetty.servlet.ServletHandler $ CachedChain.doFilter(ServletHandler.java) :1494),位于hudson.util.PluginServletFilter $ 1.doFilter(PluginServletFilter.java:123),位于hudson.plugins.greenballs.GreenBallFilter.doFilter(GreenBallFilter.java:59),位于hudson.util.PluginServletFilter $ 1.doFilter(PluginServletFilter.java: 120)at com.smartcodeltd.jenkinsci.plugin.assetbundler.filters.LessCSS.doFilter(LessCSS.java:46)位于hudson.util.PluginServletFilter $ 1.doFilter(PluginServletFilter.java:120)位于hudson.plugins.audit_trail.AuditTrailFilter。 hudson.util.PluginServletFilter处的doFilter(AuditTrailFilter.java:95)$ 1。hudson.util.PluginServletFilter.doFilter(PluginServletFil)中的1.doFilter(PluginServletFilter.java:120) org.eclipse.jetty.servlet.ServletHandler $ CachedChain.doFilter(ServletHandler.java:1482)的hu.son.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:48)的ter.java:114) hudson.security的.servlet.ServletHandler $ CachedChain.doFilter(ServletHandler.java:1482)hudson.security.ChainedServletFilter $ 1.doFilter(ChainedServletFilter.java:84)hudson.security.UnwrapSecurityExceptionFilter.doFilter(UnwrapSecurityExceptionFilter.java:51)位于org.acegisecurity.providers的jenkins.security.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:117)(位于hudson.security.ChainedServletFilter $ 1.doFilter(ChainedServletFilter.java:87)处的.ChainedServletFilter $ 1.doFilter(ChainedServletFilter.java:87)。位于hudson.security.ChainedServletFilter $ 1.doFilter(ChainedServletFilter.java:87)的org.acegisecurity.ui.rememberme.RememberMeProcessingFilter.doFilter(RememberMeProcessingFilter.java:142)的匿名.AnonymousProcessingFilter.doFilter(AnonymousProcessingFilter.java:125) udson.security.ChainedServletFilter $ 1.doFilter(ChainedServletFilter.java:87)在org.acegisecurity.ui.AbstractProcessingFilter.doFilter(AbstractProcessingFilter.java:271)在hudson.security.ChainedServletFilter $ 1.doFilter(ChainedServletFilter.java:87)在jenkins zh.kin.security.BasicHeaderProcessor.success(BasicHeaderProcessor.java:140)在hudson.security.ChainedServletFilter $ 1.doFilter(ChainedServletFilter.java:87)在jenkins.security.BasicHeaderProcessor.doFilter(BasicHeaderProcessor.java:82)在org.acegisecurity.context hudson.security的.HttpSessionContextIntegrationFilter.doFilter(HttpSessionContextIntegrationFilter.java:249)在hudson.security.HttpSessionContextIntegrationFilter2.java:67在hudson.security.ChainedServletFilter $ 1.doFilter(ChainedServletFilter.java:87)在hudson.security.Chain (ChainedServletFilter.java:76)在hudson.security.HudsonFilter.doFilter(HudsonFilter.java:168)在org.eclipse.jetty.servlet.ServletHandler $ CachedCha org.kohsuke.stapler.compression.CompressionFilter.doFilter(CompressionFilter.java:49)处的in.doFilter(ServletHandler.java:1482)org.eclipse.jetty.servlet.ServletHandler $ CachedChain.doFilter(ServletHandler.java:1482)处的in.doFilter(ServletHandler.java:1482)在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),位于org.eclipse.jetty的org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:499)的org.eclipse.jetty.servlet.ServletHandler $ CachedChain.doFilter(ServletHandler.java:1474)。 org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:533)上的server.handler.ScopedHandler.handle(ScopedHandler.java:137)org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler。 org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1086)处的Java:231)。 org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193)的jetty.servlet.ServletHandler.doScope(ServletHandler.java:428)org.eclipse.jetty.server.handler.ContextHandler.doScope( org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)处的ContextHandler.java:1020)org.org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)处的ContextHandler.java org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:489)上的.eclipse.jetty.server.Server.handle(Server.java:370)org.eclipse.jetty.server.AbstractHttpConnection.headerComplete(AbstractHttpConnection) .java:949),位于org.eclipse.jetty.server.AbstractHttpConnection $ RequestHandler.headerComplete(AbstractHttpConnection.java:1011),位于org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:651),位于org.eclipse。 org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82)上的jetty.http.HttpParser.parseAvailable(HttpParser.java:235) 在org.eclipse.jetty.io.nio的lipse.jetty.io.nio.SslConnection.handle(SslConnection.java:196)在org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:668) Winstone.BoundedExecutorService $ 1.run(BoundedExecutorService.java:77)处的SelectChannelEndPoint $ 1.run(SelectChannelEndPoint.java:52)java.util.concurrent.ThreadPoolExecutor处的java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)处的SelectChannelEndPoint $ 1.run(BoundedExecutorService.java:77) $ Worker.run(ThreadPoolExecutor.java:615)在java.lang.Thread.run(Thread.java:745)

我在这里做错了什么?

非常感谢。

您可以使用Job DSL Gradle示例中的REST API Runner通过Jenkins REST API创建或更新作业。

做您想做的最直接的方法是:

  • 使用“ Process Job DSL”构建步骤创建一个Jenkins作业,该步骤从SCM加载您的create_tabs.groovy
  • 在作业中启用“从远程(例如,从脚本)进行触发器构建”构建触发器选项
  • 通过curl触发该作业,例如curl http://someserver/job/dsl_job/build

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM