我创建了以下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)
我在这里做错了什么?
非常感谢。
答案 0 :(得分:1)
您可以使用Job DSL Gradle示例中的REST API Runner通过Jenkins REST API创建或更新作业。
答案 1 :(得分:0)
最直接的做法是:
curl http://someserver/job/dsl_job/build