我在docker hub上设置了几个自动构建。我看到我可以在成功构建时设置一个webhook来POST到URL,但是看到失败的构建通知似乎更有用。有没有办法做到这一点?
我尝试添加webhook然后将故意错误的RUN指令推送到我的Dockerfile。自动构建按预期失败,但没有任何内容发送到我的webhook。
我的一些构建不是由git推送而是由cron作业触发,所以即使我在每次提交之前测试了构建,它也不会捕获这种情况。由于更改了通过ADD下载的URL的内容,有一天成功的构建可能会失败。
那么......有没有办法获得自动构建失败的通知?如果没有,请考虑这是一个功能请求。
答案 0 :(得分:3)
您可以通过进入用户设置选项并单击通知并选中相应的框来打开构建失败的基于电子邮件的通知。 (感谢@docker推特账号;这对我来说也不是很明显!https://twitter.com/DockerSupport/status/555912171792527360)
正如您所观察到的,POST事件的webhook不适用于失败的构建。我想这个想法是,这些更多的是用于触发一些后续事件,例如告诉机器提取新图像,而电子邮件通知对于失败的构建更有意义。
答案 1 :(得分:0)
一种选择是轮询Docker Hub v2 API并在构建历史记录报告失败(-1)或构建保持排队时间过长时模拟丢失的通知。此处描述了解决方案:Docker on-failure Webhook并基于Axibase时间序列数据库沙箱映像。
docker run -d -p 8443:8443 -p 9443:9443 \
--name=atsd-sandbox \
--env NAMESPACE='google' \
--env NOTIFY_URL='https://webhook.site/71fd9feb-8751-4afd-9e13-16072a34b259' \
--env ATSD_IMPORT_PATH='https://raw.githubusercontent.com/axibase/atsd-use-cases/master/how-to/docker/resources/notify.xml,https://raw.githubusercontent.com/axibase/atsd-use-cases/master/how-to/docker/resources/rule.xml' \
--env COLLECTOR_IMPORT_PATH='https://raw.githubusercontent.com/axibase/atsd-use-cases/master/how-to/docker/resources/job.xml' \
axibase/atsd-sandbox:latest
如果构建间歇性失败,您甚至可以将规则编程为'报复'通过使用远程触发器启动重试来对抗Docker Hub。
免责声明:我为Axibase工作。