为什么这个Groovy脚本在Jenkins中失败以获取作业参数?

时间:2015-08-11 18:44:48

标签: groovy jenkins jenkins-plugins

我找到了这个示例脚本(来自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}"

1 个答案:

答案 0 :(得分:15)

来自Groovy plugin文档:

  

简单" Groovy脚本"在运行构建的从属服务器上的分叉JVM中运行。它与运行" groovy"基本相同。命令并传入脚本。

     

系统groovy脚本OTOH在Jenkins master的JVM中运行。因此,它可以访问Jenkins的所有内部对象,因此您可以使用它来改变Jenkins的状态。它类似于Jenkins脚本控制台功能。

显然,您使用错误的构建步骤(alldocs而不是Execute Groovy script),因此无法访问内部Jenkins'对象。