怎么使用Docker镜像仓库的Webhook触发Jenkins自动构建

星浩酱_7833

星浩酱_7833

2026-04-29

873人浏览

原创

用镜像仓库Webhook触发Jenkins构建,本质是仓库推送新镜像时主动通知Jenkins启动任务,适用于镜像已构建完成、仅需后续部署或验证的场景;需确认仓库支持(如Harbor v2.0+、TCR支持,ACR需桥接),在Jenkins安装Generic Webhook Trigger插件并配置Token、变量提取与正则过滤,在Harbor/TCR中设置目标URL及pushImage事件,最后在Pipeline中使用提取变量执行拉取、扫描、部署等操作。

怎么使用docker镜像仓库的webhook触发jenkins自动构建

用镜像仓库的 Webhook 触发 Jenkins 构建,本质是让镜像仓库(如 Harbor、TCR)在推送新镜像时,主动“通知” Jenkins 启动一次构建任务。这种方式适合“镜像已构建完成,只需后续部署或验证”的场景,比如:镜像由其他团队构建并推送到你的私有仓库,你希望 Jenkins 自动拉取、校验、部署或触发测试。

确认镜像仓库是否支持推送事件 Webhook

不是所有仓库都原生支持向 Jenkins 发送推送通知:

  • Harbor(v2.0+):完全支持,可在“项目 → Webhook”中配置目标 URL(Jenkins 地址),选择触发事件为 pushImage
  • 腾讯云 TCR:支持自定义 Webhook,可设置推送镜像时回调 Jenkins 的指定地址
  • 阿里云 ACR:不直接支持镜像推送触发 Jenkins;它自身支持源码触发构建,但反向(ACR 推送 → Jenkins)需额外桥接
  • Docker Hub:已弃用 Automated Builds,也不提供推送事件 Webhook 给外部系统

在 Jenkins 中安装并配置 Generic Webhook Trigger 插件

这是最通用、无需 Git 集成的方案,专为接收任意 JSON 格式 Webhook 设计:

  • 进入 Jenkins → Manage Jenkins → Manage Plugins,搜索安装 Generic Webhook Trigger
  • 重启 Jenkins 后,新建一个 Pipeline 任务,在 Configure → Build Triggers 中勾选 GenericTrigger
  • 设置关键参数:
    • Token:设一个密钥(如 harbor-push-notify),后续填入 Harbor Webhook 配置中
    • Generic Variables:提取 Webhook 请求体中的字段,例如:
      harbor_image → $.event_data.resources[0].resource_url
      image_tag → $.event_data.resources[0].tag
      repo_name → $.event_data.repository.name
    • Regexp Filter:加一层过滤,避免误触发,例如只响应 pushImage 事件:
      regexpFilterText: $harbor_type#$repo_name
      regexpFilterExpression: pushImage#myapp

在 Harbor/TCR 中配置 Webhook 并指向 Jenkins

以 Harbor 为例(TCR 类似,后台有“Webhook”或“事件通知”入口):

Docker Image Puller
Docker Image Puller

使用 Python 脚本下载 Docker 镜像并打包为 tar 文件。用户说“下载镜像”“拉取镜像”“pull xxx”“帮我下载 nginx 镜像”等时触发。支持 SOCKS5 代理直连(推荐)和国内镜像站加速两种模式。

下载
  • 登录 Harbor 控制台 → 进入对应项目 → Webhooks → + 新建 Webhook
  • 填写:
    • Name:如 jenkins-deploy-trigger
    • Target URL:格式为 http://jenkins-host:8080/generic-webhook-trigger/invoke?token=harbor-push-notify(token 必须与 Jenkins 中一致)
    • Event types:勾选 Push Image(可选是否包含 Delete Image)
    • Custom headers(可选):添加 Content-Type: application/json
  • 点击 Test 按钮验证是否收到触发(Jenkins 控制台会显示日志)

编写 Jenkins Pipeline 响应镜像推送

在 Pipeline 脚本中,直接使用上一步提取的变量做逻辑判断和操作:

  • 拉取刚推送的镜像进行安全扫描或健康检查
  • 部署到测试环境:sh "docker run -d --name test-${image_tag} ${harbor_image}:${image_tag}"
  • 触发下游部署任务(如发布到生产):build job: 'deploy-to-prod', parameters: [string(name: 'IMAGE_URL', value: "${harbor_image}"), string(name: 'TAG', value: "${image_tag}")]
  • 发送钉钉/企微通知:sh "curl -X POST 'https://oapi.dingtalk.com/...' --data '{"msgtype":"text","text":{"content":"新镜像 ${repo_name}:${image_tag} 已就绪"}}'"

整个链路清晰可靠:镜像一推送 → Harbor 发 HTTP POST → Jenkins 解析 JSON → 执行预设流程。不需要代码仓库权限,也不依赖构建机器是否有 Docker 环境(只要 Jenkins 能访问目标镜像仓库即可)。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

docker jenkins

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
k8s和docker区别
k8s和docker区别

k8s和docker区别有抽象层次不同、管理范围不同、功能不同、应用程序生命周期管理不同、缩放能力不同、高可用性等等区别。本专题为大家提供k8s和docker区别相关的各种文章、以及下载和课程。

2023.07.24

745

4

docker进入容器的方法有哪些
docker进入容器的方法有哪些

docker进入容器的方法:1. Docker exec;2. Docker attach;3. Docker run --interactive --tty;4. Docker ps -a;5. 使用 Docker Compose。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.08

5899

6

docker容器无法访问外部网络怎么办
docker容器无法访问外部网络怎么办

docker 容器无法访问外部网络的原因和解决方法:配置 nat 端口映射以将容器端口映射到主机端口。根据主机兼容性选择正确的网络驱动(如 host 或 overlay)。允许容器端口通过主机的防火墙。配置容器的正确 dns 服务器。选择正确的容器网络模式。排除主机网络问题,如防火墙或连接问题。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.08

6957

6

docker镜像有什么用
docker镜像有什么用

docker 镜像是预构建的软件组件,用途广泛,包括:应用程序部署:简化部署,提高移植性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.08

2713

7

Docker容器化部署与DevOps实践
Docker容器化部署与DevOps实践

本专题面向后端与运维开发者,系统讲解 Docker 容器化技术在实际项目中的应用。内容涵盖 Docker 镜像构建、容器运行机制、Docker Compose 多服务编排,以及在 DevOps 流程中的持续集成与持续部署实践。通过真实场景演示,帮助开发者实现应用的快速部署、环境一致性与运维自动化。

2026.02.11

299

16

Docker 容器部署
Docker 容器部署

本专题整合了Docker容器部署相关内容,阅读专题下面的文章了解更多详细操作教程。

2026.03.31

471

14

Java容器化部署与Docker实践教程合集
Java容器化部署与Docker实践教程合集

聚焦 Java 应用的容器化与云原生部署,讲解 Dockerfile 编写规范与 Java 应用镜像构建、多阶段构建(Multi-stage Build)减小镜像体积、Jib / Buildpacks 免 Dockerfile 镜像构建方案、JVM 容器感知参数(-XX:MaxRAMPercentage)配置、Docker Compose 编排多服务(应用 + MySQL + Redis)、容器健康检查与资源限制、Kubernetes

2026.05.11

420

26

Go Docker与容器化部署教程合集
Go Docker与容器化部署教程合集

聚焦 Go 应用的容器化部署优势与实践,讲解 Go 静态编译特性(CGO_ENABLED=0)与 scratch / distroless 极小基础镜像构建、多阶段 Dockerfile 编写规范、交叉编译生成目标平台二进制、镜像安全扫描(Trivy)与漏洞修复、Docker Compose 本地编排开发环境、Kubernetes Deployment / Service / ConfigMap 部署 Go 服务、健康检查(Livene

2026.05.15

325

24

Hyperf 项目部署运维与性能调优手册
Hyperf 项目部署运维与性能调优手册

聚焦 Hyperf 在生产环境的落地,包含 Docker 高效打包、Swoole 配置优化、常见的内存溢出(OOM)问题排查方法以及热更新方案。

2026.05.19

485

15

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
phpMyAdmin 安装文档
phpMyAdmin 安装文档

共0课时 | 0人学习

Docker 官方文档
Docker 官方文档

共0课时 | 0人学习

宝塔 Docker 模块使用手册
宝塔 Docker 模块使用手册

共0课时 | 0人学习