Jenkins工作DSL问题

时间:2016-01-27 06:09:31

标签: jenkins groovy jenkins-plugins jenkins-job-dsl

我创建了以下groovy脚本,以便在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日星期三16:54:20 AEDT运行   groovy.lang.MissingMethodException:没有方法签名:   Script1.freeStyleJob()适用于参数类型:   (java.lang.String,Script1 $ _run_closure1)值:[ARCHIE_DSL_TEST,   Script1 $ _run_closure1 @ 9761fdb] at   org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.java:55)     在   org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.callCurrent(PogoMetaClassSite.java:78)     在   org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:46)     在   org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:133)     在   org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:145)     在Script1.run(Script1.groovy:13)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:139)     在   hudson.util.RemotingDiagnostics $ Script.call(RemotingDiagnostics.java:111)     在hudson.remoting.LocalChannel.call(LocalChannel.java:45)at   hudson.util.RemotingDiagnostics.executeGroovy(RemotingDiagnostics.java:108)     在jenkins.model.Jenkins._doScript(Jenkins.java:3556)at   jenkins.model.Jenkins.doScriptText(Jenkins.java:3540)at   sun.reflect.GeneratedMethodAccessor205.invoke(未知来源)at   sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)     在java.lang.reflect.Method.invoke(Method.java:606)at   org.kohsuke.stapler.Function $ InstanceFunction.invoke(Function.java:298)     在org.kohsuke.stapler.Function.bindAndInvoke(Function.java:161)at   org.kohsuke.stapler.Function.bindAndInvokeAndServeResponse(Function.java:96)     在org.kohsuke.stapler.MetaClass $ 1.doDispatch(MetaClass.java:121)at at   org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:53)     在org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:746)at   org.kohsuke.stapler.Stapler.invoke(Stapler.java:876)at at   org.kohsuke.stapler.Stapler.invoke(Stapler.java:649)at at   org.kohsuke.stapler.Stapler.service(Stapler.java:238)at at   javax.servlet.http.HttpServlet.service(HttpServlet.java:848)at at   org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:686)     在   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)     在   com.smartcodeltd.jenkinsci.plugin.assetbundler.filters.LessCSS.doFilter(LessCSS.java:46)     在   hudson.util.PluginServletFilter $ 1.doFilter(PluginServletFilter.java:120)     在   hudson.plugins.audit_trail.AuditTrailFilter.doFilter(AuditTrailFilter.java:95)     在   hudson.util.PluginServletFilter $ 1.doFilter(PluginServletFilter.java:120)     在   hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:114)     在   org.eclipse.jetty.servlet.ServletHandler $ CachedChain.doFilter(ServletHandler.java:1482)     在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.UnwrapSecurityExceptionFilter.doFilter(UnwrapSecurityExceptionFilter.java:51)     在   hudson.security.ChainedServletFilter $ 1.doFilter(ChainedServletFilter.java:87)     在   jenkins.security.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:117)     在   hudson.security.ChainedServletFilter $ 1.doFilter(ChainedServletFilter.java:87)     在   org.acegisecurity.providers.anonymous.AnonymousProcessingFilter.doFilter(AnonymousProcessingFilter.java:125)     在   hudson.security.ChainedServletFilter $ 1.doFilter(ChainedServletFilter.java:87)     在   org.acegisecurity.ui.rememberme.RememberMeProcessingFilter.doFilter(RememberMeProcessingFilter.java:142)     在   hudson.security.ChainedServletFilter $ 1.doFilter(ChainedServletFilter.java:87)     在   org.acegisecurity.ui.AbstractProcessingFilter.doFilter(AbstractProcessingFilter.java:271)     在   hudson.security.ChainedServletFilter $ 1.doFilter(ChainedServletFilter.java:87)     在   jenkins.security.BasicHeaderProcessor.success(BasicHeaderProcessor.java:140)     在   jenkins.security.BasicHeaderProcessor.doFilter(BasicHeaderProcessor.java:82)     在   hudson.security.ChainedServletFilter $ 1.doFilter(ChainedServletFilter.java:87)     在   org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter(HttpSessionContextIntegrationFilter.java:249)     在   hudson.security.HttpSessionContextIntegrationFilter2.doFilter(HttpSessionContextIntegrationFilter2.java:67)     在   hudson.security.ChainedServletFilter $ 1.doFilter(ChainedServletFilter.java:87)     在   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)     在   org.kohsuke.stapler.compression.CompressionFilter.doFilter(CompressionFilter.java:49)     在   org.eclipse.jetty.servlet.ServletHandler $ CachedChain.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.servlet.ServletHandler $ CachedChain.doFilter(ServletHandler.java:1474)     在   org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:499)     在   org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137)     在   org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:533)     在   org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231)     在   org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1086)     在   org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:428)     在   org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193)     在   org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1020)     在   org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)     在   org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)     在org.eclipse.jetty.server.Server.handle(Server.java:370)处   org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:489)     在   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.jetty.http.HttpParser.parseAvailable(HttpParser.java:235)     在   org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82)     在   org.eclipse.jetty.io.nio.SslConnection.handle(SslConnection.java:196)     在   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)     在   java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)     在   java.util.concurrent.ThreadPoolExecutor中的$ Worker.run(ThreadPoolExecutor.java:615)     在java.lang.Thread.run(Thread.java:745)

我在这里做错了什么?

非常感谢。

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

最直接的做法是:

  • 使用&#34;处理作业DSL&#34;创建一个Jenkins作业构建从SCM加载create_tabs.groovy的步骤
  • 远程启用&#34;触发器构建(例如,从脚本)&#34;在作业中构建触发器选项
  • 通过卷曲触发该作业,例如curl http://someserver/job/dsl_job/build