配置Docker镜像仓库Webhook实现构建通知,需先确认仓库是否支持构建事件(如ACR/TCR支持,Harbor需CI补位,Docker Hub已弃用),再正确配置回调地址与安全验签,或改用Diun轮询替代。

配置 Docker 镜像仓库 Webhook 实现构建通知,关键在于确认仓库是否支持构建事件、正确填写回调地址,并确保接收端能安全解析和响应。注意:只有部分仓库原生支持构建(build)事件,Docker Hub 已弃用该功能,Harbor 本身不触发构建通知,需靠 CI 补位。
先看仓库是否支持构建事件
不是所有镜像仓库都能在构建完成时发 Webhook:
- 阿里云 ACR / 腾讯云 TCR:控制台直接提供“构建成功”“构建失败”事件类型,可一键绑定 Webhook URL
- Harbor:不内置构建事件;需配合 Jenkins、GitHub Actions 等 CI 工具,在构建完成后由 CI 主动调用 Harbor API 或你自己的服务发送通知
- Docker Hub:自 2023 年起已正式停用 Automated Builds 及对应的构建 Webhook 功能,无法使用
Slack / 钉钉直连配置要点
若仓库支持构建事件(如 ACR/TCR),可直接对接消息平台:
- Slack:进工作区 → Apps → 搜索 “Incoming Webhooks” → 添加到频道 → 复制 Webhook URL → 在 ACR/TCR 的事件通知页填入,勾选 “Build Success” 和 “Build Failure”
- 钉钉:群内添加自定义机器人 → 安全设置选“加签” → 记下 secret 和基础 URL → 手动拼出带 timestamp 和 sign 的完整 URL(超时窗口 1 小时),填入仓库配置;若仓库不支持自动加签,必须加一层中转服务
用轻量服务统一处理(推荐)
部署一个 Flask/Express/Go 编写的接收端,能统一验签、解析、定制消息、记录日志、再转发到 Slack/钉钉/Gotify:
- 校验来源:检查 X-Hub-Signature-256(Docker Hub)或自定义 secret(ACR/TCR/Harbor CI 回调)
- 提取字段:从 payload 中读取 build_status、repository.name、build_id、trigger_commit 等
- 按状态分流:构建失败时高亮 @ 相关人,附上构建日志链接;成功时带版本号和镜像 digest
- 返回 200 OK 或明确的 4xx 错误码,避免仓库反复重试
替代方案:不用 Webhook 也能获知构建结果
如果不想暴露公网接口或绕过仓库限制,可用轮询方式主动发现更新:
- Diun:轻量工具,支持 Docker Hub、Harbor、ACR、TCR 等,定时拉取镜像 manifest,检测 tag 或 digest 变化后直接推送通知(邮件/钉钉/Slack/Gotify)
- 优势:无需公网回调地址、免签名验证、不依赖仓库 Webhook 能力、适合离线或安全敏感环境
- 配置示例:在 diun.yml 中声明监控
registry.example.com/myapp:latest,启用钉钉通知模块并嵌入{{ .Entry.Image }}和{{ .Manifest.Created }}


















