如何配置Jenkins实现Docker镜像推送至Registry后自动触发部署?
实现Docker Registry推送镜像自动触发Jenkins任务的配置步骤
一、Jenkins端配置
1. 安装必备插件
在Jenkins的「插件管理」中搜索并安装 Generic Webhook Trigger 插件,用于接收Docker Registry发送的Webhook请求并触发任务。
2. 配置任务触发规则
打开已有的部署任务,进入「配置」页面:
- 找到「构建触发器」板块,勾选「Generic Webhook Trigger」
- 在「Token」输入框中设置自定义触发令牌(比如
docker-deploy-token-123),该令牌需和后续Registry的Webhook配置保持一致 - (可选)若需验证请求合法性,可添加「Header参数」或「Secret」做签名校验,新手阶段可先跳过,优先保证基础功能可用
二、Docker Registry端配置
根据你使用的Registry类型选择对应配置方式:
1. Docker Hub
- 进入镜像仓库页面,点击顶部「Webhooks」选项
- 点击「Add webhook」,填写信息:
- Payload URL:
http://<Jenkins服务器IP>:<Jenkins端口>/generic-webhook-trigger/invoke?token=<你设置的令牌> - Trigger events:选择「Push event」(仅镜像推送时触发)
- Payload URL:
- 点击「Save」完成配置
2. 私有Registry(以Harbor为例)
- 登录Harbor控制台,进入目标项目,点击左侧菜单「Webhooks」
- 点击「+ New Webhook」,填写:
- Target URL:上述Jenkins Webhook地址
- Event Type:勾选「Artifact pushed」(镜像推送事件)
- 保存配置即可
3. 自建Docker Registry
- 修改Registry配置文件(通常为
config.yml),添加通知端点配置:
notifications: endpoints: - name: jenkins-trigger url: http://<JenkinsIP>:<JenkinsPort>/generic-webhook-trigger/invoke?token=<你的令牌> timeout: 500ms threshold: 5 backoff: 1s events: - push
- 重启Registry服务使配置生效
三、功能验证
推送新镜像版本到Registry,查看Jenkins任务的「构建历史」,确认任务是否自动触发。若未触发,排查以下点:
- Jenkins服务器端口是否对外开放,Registry能否正常访问Jenkins地址
- Webhook配置的令牌是否和Jenkins任务中的一致
- Generic Webhook Trigger插件是否正常启用
- Registry的Webhook日志(部分Registry提供该功能)是否有请求发送记录
内容的提问来源于stack exchange,提问作者Buddhi Gunarathana
相关产品推荐
相关产品推荐

