簡體   English   中英

使用Groovy腳本插件從Jenkins運行Groovy命令

[英]Running Groovy command from Jenkins using Groovy script plugin

我想在Jenkins中強制執行以下場景:

  1. 我有工作A和工作B.
  2. 我想在執行作業B時禁用作業A,並且在執行作業B之后,我想再次啟用作業A.

要啟用/禁用作業A,我使用了Groovy插件: Groovy插件

Groovy插件提供了兩種可能性: 執行Groovy腳本執行系統Groovy腳本

我在作業B的執行開始時添加了以下代碼片段:

Jenkins.instance.getItem("job_A").disable()

並在執行工作B后:

Jenkins.instance.getItem("job_A").enable()

使用Execute Groovy腳本

當我運行作業B時,它失敗並出現以下異常:

Caught: groovy.lang.MissingPropertyException: No such property: Jenkins for class: hudson7198966217090520732
    at hudson7198966217090520732.run(hudson7198966217090520732.groovy:1)

使用Execute系統Groovy腳本

當我運行作業B時,它失敗並出現以下異常:

FATAL: No such property: Jenkins for class: Script1
groovy.lang.MissingPropertyException: No such property: Jenkins for class: Script1
    at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.java:50)
    at org.codehaus.groovy.runtime.callsite.PogoGetPropertySite.getProperty(PogoGetPropertySite.java:49)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callGroovyObjectGetProperty(AbstractCallSite.java:231)
    at Script1.run(Script1.groovy:1)
    at groovy.lang.GroovyShell.evaluate(GroovyShell.java:682)
    at groovy.lang.GroovyShell.evaluate(GroovyShell.java:666)
    at hudson.plugins.groovy.SystemGroovy.perform(SystemGroovy.java:80)
    at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:19)
    at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:804)
    at hudson.model.Build$BuildExecution.build(Build.java:199)
    at hudson.model.Build$BuildExecution.doRun(Build.java:160)
    at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:586)
    at hudson.model.Run.execute(Run.java:1576)
    at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46)
    at hudson.model.ResourceController.execute(ResourceController.java:88)
    at hudson.model.Executor.run(Executor.java:241)

知道可能是什么問題嗎? 此外,從Jenkins腳本控制台運行此代碼片段時,它可以正常工作。 提前致謝。

對於未來的讀者,Tim上面的評論是解決方案:

import jenkins.model.Jenkins

我遇到了同樣的問題“無法解析類jenkins.model.Jenkins”,如@iloveretards評論,直到我意識到我曾嘗試使用構建步驟“執行Groovy腳本”。 切換到構建步驟“執行系統Groovy腳本”后,這實際上按預期工作:

import jenkins.model.Jenkins
Jenkins.instance.getItem("job-name").disable()

我想如果你運行System Groovy Script,Jenkins對象默認是可用的。 你正在運行的是groovy腳本。 因此,需要導入包/類。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM