为什么我不能在下一个groovy构建步骤中看到以编程方式插入的jenkins字符串参数?

时间:2013-07-17 11:01:18

标签: groovy jenkins

我正在从系统groovy脚本(一个构建步骤)向作业添加jenkins参数:

第一步

import hudson.model.*
def pa = new ParametersAction([
    new StringParameterValue("firstParam", 1), new StringParameterValue("secondParam", 2)
])
Thread.currentThread().executable.addAction(pa)

现在,当我尝试执行下一个系统groovy构建步骤时,我正在寻找它们并且它们不在那里:

第二步。

def firstParam = "firstParam"
def secondParam = "secondParam"
def resolver = build.buildVariableResolver
def firstParamValue = resolver.resolve(firstParam)
def secondParamValue = resolver.resolve(secondParam)
println firstParamValue
println secondParamValue  

他们都打印空! 如何在下一次系统groovy构建步骤中获取参数?

奇怪的是,当我尝试执行shell执行后,如果我执行:

echo $firstParam
echo $secondParam

我同时打印了1和2。

即使我尝试使用以下代码打印所有参数,我也不会得到它们:

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

1 个答案:

答案 0 :(得分:0)

你的第一个构建步骤对我不起作用,它给出了运行时错误,因为设置的字符串参数是整数而不是字符串。我把它更改为它并且它可以工作,第二步获取参数(我在整数值附近添加引号并且使用'build'变量进行当前构建):

import hudson.model.*

def pa = new ParametersAction([
    new StringParameterValue("firstParam", '1'), new StringParameterValue("secondParam", '2')
])
build.addAction(pa)

我在Jenkins v1.519上尝试这个。