我正在尝试使用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条件。
答案 0 :(得分:0)
如果您status
是字符串,则应该可以使用
if (params.status.equalsIgnoreCase('success')) {
还有一个注意事项,已知参数/参数区分大小写,请检查是否使用完全相同的名称。