Jenkins:如何从变量中设置正文内容

时间:2018-05-15 09:39:56

标签: string variables jenkins groovy jenkins-pipeline

我有一个脚本管道。在我的一个步骤中,我想根据测试结果发送不同的邮件。我现在就是这样做的:

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行尝试了各种方法:

  1. “$ {SCRIPT,模板= $ EMAIL_BODY}”
  2. “$ {SCRIPT,模板= $ {EMAIL_BODY}}”
  3. '' '$ {SCRIPT,模板= $ EMAIL_BODY}' ''
  4. '' '$ {SCRIPT,模板= $ {EMAIL_BODY}}' ''
  5. 它们都不起作用。我收到的所有电子邮件都是:

      

    在$ JENKINS_HOME / email-templates中找不到Groovy模板文件[$ email_body]。

      

    $ {SCRIPT,模板= $ EMAIL_BODY}。

    如果电子邮件内容存储在变量中,设置电子邮件内容的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

尝试使用此示例:

String subject = "${env.JOB_NAME} was " + currentBuild.result.toString();
String email_body="TEST_" + currentBuild.result.toString() + ".template"
String body = "SCRIPT,template=" + email_body;
String to="some_mail@mail.com" 
String reply="ZZZ"
emailext(subject: subject, body: body, to: to, replyTo: reply);