添加到动态构建的参数未传递给下游作业

时间:2016-04-25 18:16:38

标签: jenkins groovy triggers parameter-passing

我有Job_1和Job_2 在Job_1中,

步骤1:执行系统Groovy脚本

import hudson.model.*
def build = Thread.currentThread().executable
def param = []
param.add(new StringParameterValue('ARTS', "safsaf"))
def pa = new ParametersAction (param)
build.addAction(pa)

第2步:在其他项目上触发/调用构建

Projects to build: JOB_2
Add parameters: Current build parameters

第3步:

Execute Windows batch command
echo arts  = %ARTS%

在Job_2中,

第1步:

Execute Windows batch command
echo arts from Job_1 = %ARTS%

构建Job_1,它打印出来:

  

arts = safsaf

build_2已成功触发,并打印出来:

  

来自Job_1的艺术=(空白)

似乎只有此版本参数化部分中定义的Job_1中的参数可以传递给下游项目。

这是预期的行为吗?如何在飞行中添加参数?

2 个答案:

答案 0 :(得分:0)

尝试Parameterized Trigger Plugin。我的下游工作是通过插件构建步骤Current build parameter开始的,其中This build is parameterized来自插件而不是常规下游作业。 Job_2中void foo() { } bool bar() { return true; } struct S { void operator=(std::function<void()> f){f();}; void operator=(std::function<bool()> f){f();}; }; int main() { S s; s = foo; // ok s = bar; // error: use of overloaded operator '=' is ambiguous } 中定义的任何内容都会获取从Job_1传递的参数。

我可能没有使用这绝对正确,我认为对于可以捕获的内容存在限制而不能,但到目前为止,它会从Job_1中捕获所有需要的参数。

答案 1 :(得分:0)

我试过了,这很有效:

在Job_1中,
此版本参数化部分中定义字符串参数“ARTS”
并从

更改Groovy脚本
import hudson.model.*
def build = Thread.currentThread().executable
def param = []
param.add(new StringParameterValue('ARTS', "safsaf"))
def pa = new ParametersAction (param)
build.addAction(pa)

import hudson.model.*
def build = Thread.currentThread().executable
build.replaceAction(
  new ParametersAction(
    new StringParameterValue('ARTS', 'safsaf')))

覆盖“ARTS”的值,而不是添加新参数。