web-dev-qa-db-ja.com

JenkinsでこのGroovyスクリプトがジョブパラメータの取得に失敗するのはなぜですか?

このサンプルスクリプト( https://wiki.jenkins-ci.org/display/JENKINS/Parameterized+System+Groovy+script から)を見つけ、Jenkinsパラメーター化ビルドトリガープラグインをテストしたかったのですが、このスクリプトはエラーをスローします。私はこれがうまくいくと思っていましたが、なぜうまくいかないのですか?

これが私が得るエラーです:

/app/jenkins/workspace/Example-Parameterized-Trigger1/hudson2425966133354362461.groovy: 10: 
  unable to resolve class ParametersAction 
 @ line 10, column 53.
   ?.actions.find{ it instanceof Parameters                     ^
1 error
Build step 'Execute Groovy script' marked build as failure

スクリプトは次のとおりです。

import hudson.model.*

// get current thread / Executor
def thr = Thread.currentThread()
// get current build
def build = thr?.executable

// get parameters
def parameters = build?.actions.find{ it instanceof ParametersAction }?.parameters
parameters.each {
   println "parameter ${it.name}:"
   println it.dump()
   println "-" * 80
}

// ... or if you want the parameter by name ...
def hardcoded_param = "FOOBAR"
def resolver = build.buildVariableResolver
def hardcoded_param_value = resolver.resolve(hardcoded_param)

println "param ${hardcoded_param} value : ${hardcoded_param_value}"
10
djangofan

から Groovyプラグイン ドキュメント:

プレーンな「Groovyスクリプト」は、ビルドが実行されるスレーブ上のフォークされたJVMで実行されます。これは基本的に、「groovy」コマンドを実行してスクリプトを渡すのと同じです。

システムのGroovyスクリプトであるOTOHは、JenkinsマスターのJVM内で実行されます。したがって、Jenkinsのすべての内部オブジェクトにアクセスできるため、これを使用してJenkinsの状態を変更できます。これは、Jenkinsスクリプトコンソールの機能に似ています。

明らかに、間違ったビルドステップを使用しています(Execute Groovy script の代わりに Execute system Groovy script)したがって、内部Jenkinsのオブジェクトにアクセスできません。

19