如果 Jenkins Slave 处于脱机状态,请发送电子邮件警报 - 脚本



我有 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}")
    }
}

相关内容

最新更新