我有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中的参数可以传递给下游项目。
这是预期的行为吗?如何在飞行中添加参数?
答案 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”,
并从
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”的值,而不是添加新参数。