2

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

第一步

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

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

第 2 步。

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
}
4

1 回答 1

0

您的第一个构建步骤对我不起作用,它给出了运行时错误,因为正在设置的字符串参数是整数而不是字符串。我将其更改为此并且它可以工作,第二步获取参数(我在整数值周围添加了引号并为当前构建使用了“构建”变量):

import hudson.model.*

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

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

于 2013-07-18T07:15:49.733 回答