如何使用if-else条件(在下游作业中)检查jenkins中从上游作业传递的参数?

时间:2019-05-20 13:07:35

标签: email groovy jenkins-pipeline

我正在尝试使用Jenkins作业的成功/失败状态配置邮件通知。我有一个单独的工作来触发邮件。

对于失败和成功场景,我需要触发两个不同的邮件。为此,我有下面的代码

import javax.mail.*
import javax.mail.internet.*

def  d_email = "noreply@kpn.com",
     d_uname = "noreply@kpn.com",
     d_password = "",
     d_host = "safemail.kpnxchange.com",
     d_port  = "25", //465,587
     m_to = "abc@kpn.com",
     m_subject = "Deployment status Jenkins Job: ${params.JobID}#${params.BuildNumber}- ${params.Status}",
     m_text_success = "Success mail"
     m_text_fail = " failure mail "

def props = new Properties();
props.setProperty("mail.smtp.host", d_host)
def session = Session.getDefaultInstance(props)
session.setDebug(true);

try {
    def msg = new MimeMessage(session)

    if (${params.status} == "Success") {
        msg.setText(m_text_success)
    } else {
        msg.setText(m_text_fail)
    }
    msg.setSubject(m_subject)
    msg.setFrom(new InternetAddress(d_email))
    msg.addRecipient(Message.RecipientType.TO, new InternetAddress(m_to))
    Transport.send(msg);
    System.out.println('message sent');
} catch (MessagingException mex) {
    mex.printStackTrace(); 
}

以上作业${params.Status}中的变量是从上游作业传递的变量。而且我需要检查${params.Status}的值是否为Success到下游,那么它应该设置msg.setText(m_text_success)以及${params.Status}的值是否为Fail到下游它应该设置msg.setText(m_text_success)

我无法在工作状态下获得if-else条件。

1 个答案:

答案 0 :(得分:0)

如果您status是字符串,则应该可以使用

if (params.status.equalsIgnoreCase('success')) {

还有一个注意事项,已知参数/参数区分大小写,请检查是否使用完全相同的名称。