2017-08-02 35 views
1

我有两个作业:Job_a和Job_b。我想在Job_a中使用一个变量来决定是否应该在JOb_b中发送一封电子邮件。
简化作业:JENKINS中电子邮件触发器脚本中使用的属性文件的变量

在Job_a:

步骤1:执行Windows批处理命令:

echo GO=Y > testme.txt 

这将在工作区中创建testme.txt与GO = Y。

步骤2:触发/呼叫建立在其他项目:

项目建设:从属性文件Job_b
参数:testme.txt

在Job_b:

步骤1

echo Go = %GO% 

生成后操作 可编辑的电子邮件通知

触发:脚本 - 建立后
触发脚本

build.envVars["GO"] == 'Y' 

现在,运行Job_a,不会触发电子邮件,而在Job_b中的第1步,确实打印Go = Y

证明触发脚本本身是正确的,我添加了一个字符串参数在Job_a:

Name: GO1 
Default Value: Y 

和Job_b改变触发脚本:

build.envVars["GO1"] == 'Y' 

运行Job_a,从而JOb_b并且邮件按预期发送。

似乎只有在上游作业中定义的参数可以在电子邮件触发器脚本中使用,属性文件中的参数不可用。

我知道我可以从与EnvInject插件飞属性文件注入参数,和/或与系统Groovy脚本,我可以添加新的参数,但我的编译环境是紧控制,没有系统的Groovy ,不能安装新的额外插件。

我詹金斯的版本是1.622

+0

使用是否安装参数化触发器插件,如果已安装,则在构建后操作中将参数值从Job_a传递到Job_b。 – Suresh

+0

@Suresh,我说参数确实是从Job_a传递到Job_b,问题是电子邮件触发器脚本无法访问它。 – Heinz

+0

您在可编辑电子邮件中做了什么配置? – Suresh

回答

0

要和大家一起分享。我发现什么地方出了问题。

属性文件有一行:GO=Y
在Job_a创建的属性文件中的参数“走出去”确实是传给Job_b。

Groovy测试build.envVars["GO"] == 'Y'未返回“真”,因此不会发送电子邮件。

我打印参数的长度:

println build.envVars["GO"].length() 

println 'Y'.length() 

它打印

2 
1 

显然,有当我们创建属性文件的内容所附一个新行滑架

echo GO=Y > testme.txt 

我必须修剪掉新的线架,所以更改触发器脚本可编辑的邮件,脚本 - 建立后

build.envVars["GO"].trim() == 'Y' 

它按预期工作。

相关问题