2

我有一个脚本,它基本上获取 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
4

2 回答 2

1

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

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

#!/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
于 2018-12-03T21:30:00.280 回答
0

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

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

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

于 2018-12-07T19:44:05.157 回答