镜像仓库构建完成主动通知需三步:选支持构建事件的平台(如阿里云ACR、腾讯云TCR),用almin/webhook等工具接收并解析JSON中的status、repository.name等字段,再转发至企业微信、钉钉或Slack等工具。

直接让镜像仓库在构建完成时主动“喊你一声”,比盯着控制台或等邮件快得多。关键不是配个URL就完事,而是选对平台、接得住通知、再把消息送到该去的地方。
先看你的仓库支不支持构建事件
不是所有平台都提供“构建成功”这种细粒度通知:
- 阿里云 ACR:原生支持。进“构建规则”就能勾选 Build Success 或 Build Failure,填好目标 URL 即可
- 腾讯云 TCR:支持“镜像构建完成”事件,在“事件通知”里新建规则,还能按命名空间或仓库名过滤
- Docker Hub:Automated Builds 功能已下线,只剩基础的 push 事件,无法得知构建是否成功
- Harbor:本身不触发构建,但如果你用 Jenkins 或 GitLab CI 来构建,可以让 CI 工具在结束时调用你自己的 Webhook 地址
接收端不用从零写代码
用现成轻量工具快速落地,比如 almir/webhook 镜像:
- 运行命令:
docker run -d -p 9000:9000 -v $(pwd)/hooks.json:/etc/webhook/hooks.json almir/webhook -hooks=/etc/webhook/hooks.json -verbose - 在
hooks.json里定义动作,例如匹配成功事件后执行脚本发钉钉 - 确保你填的 Webhook URL 是公网可访问的(内网部署需配合反向代理或内网穿透)
解析通知内容,抓住关键字段
不同平台推送的 JSON 结构略有差异,但核心字段基本一致,用来判断状态和生成通知:
-
status 或 build_status:值为
success、failed或cancelled -
repository.name:镜像名,如
myapp-api -
image 或 digest:生成的标签或摘要,如
v1.2.0或sha256:abc123... -
trigger:触发方式,如
git-push或manual - build_id 和 start_time:便于追踪和识别超时构建
把通知发到常用工具里
接收端拿到数据后,直接转成对应格式发出去即可:
-
企业微信:WEBHOOK_URL 填机器人地址,如
https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxx - 钉钉:同样用机器人 Webhook,注意加签名验证(推荐 SHA256 + secret)
- Slack:填 Incoming Webhook 地址,支持富文本和 @ 提醒
- 自建服务:用 Python/Node.js 写个简单 HTTP 接口,解析 JSON 后记录日志、发短信或调用其他系统











