【发布时间】:2018-10-25 02:16:52
【问题描述】:
我有一个脚本化的管道。在我的一个步骤中,我想根据测试结果发送不同的邮件。这是我现在的做法:
if (buildResult == 'SUCESSS'
def email_body="TEST_SUCESS.template"
else
def email_body="TEST_FAILURES.template"
emailext(
subject: "Job '${env.JOB_NAME} [${env.BUILD_NUMBER}] finished",
body: "${SCRIPT,template=$email_body}", // LINE A
recipientProviders: [[$class: 'DevelopersRecipientProvider']],
to: 'XXXX',
from: 'YYYY',
replyTo: 'ZZZZ',
mimeType: 'text/html',
)
我不能让 Jenkins 扩展变量 email_body 的值。我在 A 行尝试了各种方法:
- "${SCRIPT,template=$email_body}"
- "${SCRIPT,template=${email_body}}"
- '''${SCRIPT,template=$email_body}'''
- '''${SCRIPT,template=${email_body}}'''
它们都不起作用。我在电子邮件中得到的只是:
在 $JENKINS_HOME/email-templates 中找不到 Groovy 模板文件 [$email_body]。
或
${SCRIPT,template=$email_body}。
如果电子邮件内容存储在变量中,设置电子邮件内容的正确方法是什么?
【问题讨论】:
-
@xxxvodnikxxx,我看不出它对我有什么帮助。我不想在 bash 脚本中看到变量,而是在 groovy 管道中。
-
${SCRIPT,template=${email_body}}''' 正在 $JENKINS_HOME/email-templates 中搜索模板文件。所以,这不是身体。阅读here
-
@JoaoVitorino,我已经读过它。我在 $JENKINS_HOME/email-templates 目录中放置了一个模板,如果我不使用 email_body 变量,我可以使用它。以下对我很有效:正文:'''${SCRIPT,template="PM_TEST_FAILURES.template"}'''。但是,我希望能够根据测试结果动态设置电子邮件的正文(模板)。
-
我认为最好把这个逻辑放在模板上。将构建的状态传递给模板,并在模板中根据需要设置主体。 Email template example
标签: string variables jenkins groovy jenkins-pipeline