我有 Jenkins Slave 节点,如果某些节点关闭,则需要设置电子邮件警报。设法获取离线节点列表,但与电子邮件部分作斗争。
int exitcode = 0
for (slave in hudson.model.Hudson.instance.slaves) {
if (slave.getComputer().isOffline().toString() == "true"){
println('Slave ' + slave.name + " is offline!");
exitcode++;
}
}
if (exitcode > 0){
println("We have a Slave down, failing the build!");
return 1;
send_email_notification()
}
def send_email_notification(String body) {
emailext body: "$body",
to: "username@domainname.com",
subject: "Offline Slave",
presendScript : "msg.addHeader('X-Priority', '1 (Highest)')"
}
Jenkins 脚本控制台内没有错误:
结果从属节点 NODE01 处于离线状态!我们有一个奴隶倒下了,建造失败了!结果:1
但我没有收到电子邮件。
你有什么错误吗?你能收到任何电子邮件吗?电子邮件服务器是否在 https://{JENKINS_URL}/configure 中配置?
如果运行以下命令会发生什么:
emailext body: "Testing",
to: "username@domainname.com",
subject: "Offline Slave",
presendScript : "msg.addHeader('X-Priority', '1 (Highest)')"
在我看来,您没有将主体传递给 send_email_notification(( 调用。 试试这个:
def send_email_notification(String body) {
emailext body: "${body}",
to: "username@domainname.com",
subject: "Offline Slave",
presendScript : "msg.addHeader('X-Priority', '1 (Highest)')"
}
for (slave in hudson.model.Hudson.instance.slaves) {
if (slave.getComputer().isOffline().toString() == "true"){
msg = "Slave " + slave.name + " is offline!";
send_email_notification("${msg}")
}
}