如何在电子邮件中使用Hudson“Parameterized Build”值

时间:2011-03-03 13:45:23

标签: email configuration continuous-integration hudson

我们在项目内部运行Hudson构建服务器。每次服务器部署新版本时,我们都会发送电子邮件。

我希望此电子邮件包含更多信息,包括用户名和构建原因。

Parameterized builds上的hudsons文档中,已经为构建添加了文本参数。我在这里尝试两个不同的(为了看看哪些有效):

在作业配置This build is parameterized中,我添加了以下两个变量

Name:          USER 
Default value: userCAPITALIZED

Name:          user
Default value: userstandard

查看parameterized settings http://justaddwater.dk/wp-content/uploads/2011/03/hudson-parameterize-settings-243x300.png的屏幕截图。

现在,在“可编辑电子邮件通知”的底部,我已经尝试了一切来检索这些值。

什么有效:所有标准Hudson构建变量都有效。与$CHANGES$SVN_REVISION

相同

但是我试图在没有运气的情况下访问变量userUSER。这是一个不起作用的列表:

subject: test of parametrized mail 1user:${env.user}, 2USER:${USER}, 3$USER, 4${ENV, USER}, 5%USER%,stop

more tests
${env, user}
${env, USER}
${ENV, user}
${ENV, USER}
${user}
${USER}
${env.user}
${ENV.user}
${env.USER}
${ENV.USER}
$user
$USER
%user%
%USER%

changes $CHANGES
changes ${CHANGES}
subversion revision: $SVN_REVISION
subversion revision: ${SVN_REVISION}

Screenshot of email configuration http://justaddwater.dk/wp-content/uploads/2011/03/hudson-email-configuration-parameters-300x171.png

这只会产生一封包含以下内容的电子邮件:

test of parametrized mail 1user:${env.user}, 2USER:${USER}, 3$USER, 4${ENV, USER}, 5%USER%,stop

more tests
${env, user}
${env, USER}
${ENV, user}
${ENV, USER}
${user}
${USER}
${env.user}
${ENV.user}
${env.USER}
${ENV.USER}
$user
$USER
%user%
%USER%

changes
changes
subversion revision: 400
subversion revision: 400

如您所见,只有subversion版本才能正确扩展。对于此特定作业,更改为空,因此请忽略它。

您如何在电子邮件中定义参数?有什么建议? 我正在使用Hudson版本1.395

3 个答案:

答案 0 :(得分:14)

您需要使用类似这样的参数:${ENV, var="USER"}

'USER'与'user'相同 - 你需要给出不同的名字。

答案 1 :(得分:3)

除了Rene建议(也就是使用${ENV, var="USER"})之外,我相信你需要安装另一个plugin called 'email-ext'。 我在some other question中找到了这些信息(虽然没有接受的答案)。

答案 2 :(得分:0)

我知道这是一个老问题,但要求用户输入他们的用户名有点多余,而且可能会被欺骗。

Hudson已经知道是谁触发了构建(你可以在构建的页面中看到它),但它并没有将它暴露给变量。有一个Job-Exporter插件可以将此信息(以及更多)导出到工作区中的文件中。它将在build.user.name属性下。

从那里,你可以使用EnvInject插件,为它提供这个导出的属性文件(hudsonBuild.properties),你将有一个名为build.user.name的环境变量可用于电子邮件为${ENV, var="build.user.name"}