在Jenkins Pipeline Mailer中使用'recipients:'的环境变量

时间:2016-08-12 16:13:40

标签: email jenkins groovy jenkins-pipeline

我在Jenkins环境变量(emailsdl)中有一个电子邮件ID列表,并试图在Jenkins Pipeline Mailer中将其用于recipients:,如下所示:

mail (to: 'Mailer', recipients: '${env.emailsdl}',
 subject: "Job '${env.JOB_NAME}' (${env.BUILD_NUMBER}) is waiting for input",
 body: "Please go to ${env.BUILD_URL}.")

使用上面的代码我没有收到电子邮件并收到错误:

  

未发送电子邮件。没有指定任何类型的收件人('to','cc','bcc')。

但是当我用真实电子邮件(xyxyx@foo.com)替换${env.emailsdl}时,它确实触发了一封电子邮件。我甚至试过env['emailsdl']但它没有用。

在这种情况下,我是否可以为收件人传递环境变量?

2 个答案:

答案 0 :(得分:1)

在groovy中,如果使用单引号字符串,则不会进行插值,这意味着字符串public function boot() { //your other code Validator::extend('page_count', function($attribute, $value, $parameters, $validator) { $page_count = Printer::find(1)->first()->value('page_count'); //replace this with your method of getting page count. //If it depends on any extra parameter you can pass it as a parameter in the validation rule and extract it here using $parameter variable. return $value >= $page_count; }); //your other code } 中的int将不会替换变量'page_count' => 'required|page_count' 。您需要使用双引号字符串:'${env.emailsdl}'

答案 1 :(得分:0)

@Gergely:您的建议帮助我解决了我的问题。问题是我有一个本地环境变量,它被赋予了来自其他全局环境变量的值:globalVar = xyxyx@foo.comemailsdl=${globalVar}在作业的本地属性中。现在我在管道脚本中调用此emailsdl。这已通过以下方式解决:

env.((env.emailsdl).replaceAll("\$", ""))