我有一个基本上可以获取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
答案 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脚本将仅运行该脚本并设置构建状态。如果我错了,我很乐意收到建议。