根据Jenkins中的脚本输出或控制台输出启动电子邮件

时间:2018-12-03 20:37:16

标签: jenkins jenkins-plugins

我有一个基本上可以获取http响应代码的脚本。我想触发电子邮件以获取响应代码(除200以外的任何值)。我不想使用脚本来触发邮件。有什么方法可以在后期构建操作中发送邮件吗?

请协助。

#!/bin/bash
date
if [ $# -eq 0 ]; then
   cat /home/ubuntu/check_kibana/lists.txt | while read output
do
    RESP=$(curl -sL $output -w "%{http_code} \n" -o /dev/null)
    if [ $RESP -eq 200 ]; then
        echo "ResponseCode: $RESP, Service is active."
    else
        echo "ResponseCode: $RESP, $output is not active."
        echo "ResponseCode: $RESP for $output. Please check as the service may be down or not listening to the designated port." | mail -s "Error triggered for unavailable kibana service" xxxxxxxxx@gmail.com
    fi
done
fi

2 个答案:

答案 0 :(得分:1)

如果将其作为构建步骤运行,则需要在响应代码检查的else部分中添加exit 1;。这会将构建步骤标记为失败,然后您可以使用“电子邮件通知”作为构建后步骤来设置电子邮件触发器。如果您想拥有个性化的电子邮件,则可以使用“可编辑的电子邮件通知”插件。

所以,您的脚本应该是这样的

#!/bin/bash
date
if [ $# -eq 0 ]; then
   cat /home/ubuntu/check_kibana/lists.txt | while read output
do
    RESP=$(curl -sL $output -w "%{http_code} \n" -o /dev/null)
    if [ $RESP -eq 200 ]; then
        echo "ResponseCode: $RESP, Service is active."
    else
        exit 1; # Any exit code except 0 will mark the build step as the failure 
        echo "ResponseCode: $RESP, $output is not active."
        echo "ResponseCode: $RESP for $output. Please check as the service may be down or not listening to the designated port." | mail -s "Error triggered for unavailable kibana service" pruthvi.basagodu@gmail.com
    fi
done
fi

答案 1 :(得分:0)

要解决上述问题,我们需要知道Jenkins仅在构建失败或从失败变为成功的情况下才会触发电子邮件通知。 (取决于您要如何通过Jenkins触发电子邮件)。

我找到了解决上述问题的方法。代替shell脚本,python对我来说是正确的选择,因为它可以灵活地处理各种库和变量。因此,那些想根据脚本中的循环条件触发电子邮件的人,请使用python或任何OOP语言。

Shell脚本将仅运行该脚本并设置构建状态。如果我错了,我很乐意收到建议。