web-dev-qa-db-ja.com

Groovyスクリプトプラグインを使用してJenkinsからGroovyコマンドを実行する

ジェンキンスで次のシナリオを強制したい:

  1. 私は仕事Aと仕事Bを持っています
  2. ジョブBの実行時にジョブAを無効にしたいのですが、ジョブBの実行後、ジョブAを再度有効にしたいと思います。

ジョブAを有効/無効にするために、Groovyプラグインを使用しました: Groovyプラグイン

Groovyプラグインは2つの可能性を提供します:Execute GroovyスクリプトおよびExecute Groovyスクリプト

ジョブBの実行開始時に次のコードスニペットを追加しました。

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

そして、ジョブBの実行後:

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

を使用してGroovyスクリプトを実行します

ジョブBを実行すると、次の例外で失敗します。

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

を使用してシステムの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スクリプトコンソールからこのコードスニペットを実行すると、問題なく動作します。前もって感謝します。

14

将来の読者のために、上のティムのコメントが解決策です:

import jenkins.model.Jenkins

27
agentgonzo

System Groovyスクリプトを実行すると、デフォルトでJenkinsオブジェクトが使用可能になると思います。実行しているのは、groovyスクリプトです。したがって、パッケージ/クラスをインポートする必要があります。

1
Vijay

@iloveretardsのコメントと同じ「クラスjenkins.model.Jenkinsを解決できません」という問題に遭遇しましたが、ビルドステップ「Execute Groovyスクリプト」を使用しようとしたことに気づきました。ビルドステップ「システムGroovyスクリプトの実行」に切り替えた後、これは実際には意図したとおりに機能しました。

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