当前位置: 首页 > 知识库问答 >
问题:

如何从时髦的脚本运行 jenkins 作业

皮自明
2023-03-14

是否可以从Groovy脚本运行jenkins作业?

我知道这是可能的运行詹金斯的工作从管道像这样

生成作业:“测试”

这也不起作用

构建(“测试”)

错误

生成作业:“测试”

    Caught: groovy.lang.MissingMethodException: No signature of method: hudson8298793087824999032.build() is applicable for argument types: (LinkedHashMap) values: [[job:test]]
Possible solutions: find(), find(groovy.lang.Closure), wait(), run(), run(), dump()
groovy.lang.MissingMethodException: No signature of method: hudson8298793087824999032.build() is applicable for argument types: (LinkedHashMap) values: [[job:test]]
Possible solutions: find(), find(groovy.lang.Closure), wait(), run(), run(), dump()
    at hudson8298793087824999032.run(hudson8298793087824999032.groovy:32)
Build step 'Execute Groovy script' marked build as failure

编辑后执行系统Groovy脚本并添加

def currentBuild = Thread.currentThread().executable
def job = hudson.model.Hudson.instance.getJob("jobname")
println(job)
def params = new StringParameterValue('version', '1.0.0')  
println(params)
def params1 = new StringParameterValue('target', "dev")  
println(params1)
def paramsAction = new ParametersAction(params, params1) 
println(paramsAction)
def cause = new hudson.model.Cause.UpstreamCause(currentBuild)
println(cause)
def causeAction = new hudson.model.CauseAction(cause) 
println(causeAction)
println('test')
Hudson.instance.queue.schedule(job, 0, causeAction, paramsAction)

我在Hudson.instance.queue这条线上出错了。计划(作业,0,causeAction,paramsAction)

java.lang.NullPointerException
at hudson.model.queue.Tasks.getOwnerTaskOf(Tasks.java:60)
at com.cloudbees.hudson.plugins.folder.ItemDeletion.getItemOf(ItemDeletion.java:197)
at com.cloudbees.hudson.plugins.folder.ItemDeletion.shouldSchedule(ItemDeletion.java:174)
at hudson.model.Queue.schedule2(Queue.java:589)
at hudson.model.Queue.schedule2(Queue.java:712)
at hudson.model.Queue.schedule(Queue.java:705)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite$PojoCachedMethodSite.invoke(PojoMetaMethodSite.java:192)
at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite.call(PojoMetaMethodSite.java:56)
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:149)
at Script1.run(Script1.groovy:47)
at groovy.lang.GroovyShell.evaluate(GroovyShell.java:585)
at groovy.lang.GroovyShell.evaluate(GroovyShell.java:623)
at groovy.lang.GroovyShell.evaluate(GroovyShell.java:594)
at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SecureGroovyScript.evaluate(SecureGroovyScript.java:343)
at hudson.plugins.groovy.SystemGroovy.run(SystemGroovy.java:95)
at hudson.plugins.groovy.SystemGroovy.perform(SystemGroovy.java:59)
at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:20)
at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:741)
at hudson.model.Build$BuildExecution.build(Build.java:206)
at hudson.model.Build$BuildExecution.doRun(Build.java:163)
at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:504)
at hudson.model.Run.execute(Run.java:1818)
at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
at hudson.model.ResourceController.execute(ResourceController.java:97)
at hudson.model.Executor.run(Executor.java:429)

构建步骤“执行系统Groovy脚本”将构建标记为失败

共有1个答案

索正豪
2023-03-14

对我来说,我需要在主机上运行的代码,以便快速访问Jenkins对象,并构建一个具有适当权限的作业,以便在获取的信息中发送邮件。

我使用构建模块Execute system Groovy Script来运行脚本,并附加了以下代码

// The job you want to run from groovy
def job = hudson.model.Hudson.instance.getJob("SendEmailJob")

// jobsList is a list of jobs of interest formated as HTML
def body = jobsList

def params = []

params += new StringParameterValue('TO', "<team@example.com>")
params += new StringParameterValue('BODY_AS_HTML', body)
params += new StringParameterValue('SUBJECT', "List of jobs of interest")

def paramsAction = new ParametersAction(params)
def cause = new hudson.model.Cause.UpstreamCause(build)
def causeAction = new hudson.model.CauseAction(cause)
hudson.model.Hudson.instance.queue.schedule(job, 0, causeAction, paramsAction)

这是基于问题如何动态触发下游构建在詹金斯

 类似资料:
  • 我已经编写了一个脚本来自动化Jenkins中的一些过程。到目前为止,我一直在使用脚本控制台来尝试运行我的代码。现在我试图实现的是在父作业工作区中上传脚本文件,并从JenkinsCLI命令运行它。是否可以从作业工作区执行Groovy脚本,或者是否有更好的方法来实现这一点?

  • 问题内容: 我是詹金斯的新手,需要帮助。 我有4个Shell脚本:test1.sh,test2.sh,test3.sh和test4.sh 我希望test2.sh仅在test1.sh成功运行时运行,而test4.sh仅在test3.sh成功运行时运行。我还希望test1.sh和test3.sh并行运行。 我如何在詹金斯实现呢? 我正在使用“使用ssh在远程主机上执行shell脚本”和“有条件的步骤(

  • 我对是否可以在从属节点中使用Groovy脚本运行Jenkins作业感到困惑。我提到了一个 StackOverflow 答案 [1],它说 System Groovy 脚本作业可以在主站而不是从站中运行,并且要在从站中运行作业,它必须是 Groovy 脚本而不是 System Groovy 脚本。有人可以澄清我是否可以使用系统时髦脚本运行从属作业吗?由于我正在尝试通过Groovy脚本,因此无法访问几

  • 我试图在“Execute Shell”中运行命令作为Jenkins的构建步骤。作业失败,并给出以下控制台日志: docker-compose up--build-d无法连接到HTTP+Docker://localUnixSocket上的Docker守护进程-它正在运行吗? Jenkins不在容器中运行,它只是随便安装在主机上,没有VM,没有docker,什么都没有。我尝试删除docker和jenk

  • 问题内容: 之前曾在不同程度上提出过这样的问题,但我觉得还没有以简明的方式回答,因此我再次提出。 我想在Python中运行脚本。可以说是这样的: 它获取文件位置,读取它,然后打印其内容。没那么复杂。 好吧,那我该如何在C#中运行它呢? 这就是我现在所拥有的: 当我传递位置和位置无效时。有人告诉我,我应该通过的,然后作为。 我已经寻找了一段时间,只能找到建议使用IronPython或类似工具的人。但

  • 如何从gradle运行另一个gradle脚本。我有多个gradle脚本在