想象一下这样的工作场景:
你是团队里的“打包小能手”,整天盯着 Git 仓库:
- develop 分支有新提交?记一下,要打个测试包
- release 分支打了 tag?嗯,这要打一版预发布
- 某人合并了一个大功能?最好自动跑一遍测试
如果全靠你“人盯人”刷新 Git 网页,迟早疯。
于是大家会用 Jenkins 配个 Job,选一条配置:
“当 Git 仓库有变化时,自动触发构建。”
然后奇迹发生了:
- 某人一 push
- 几秒钟后 Jenkins 就开始自动拉代码、打包、跑测试
- 你根本没参与,连 Jenkins 页面都没打开
那问题来了:
Jenkins 是怎么“知道” Git 仓库变动的?
它天天自己刷吗?
还是 Git 主动告诉它的?
底层原理到底是怎么样的?
这篇我们就用大白话,把“Jenkins 监听 Git 仓库变动的底层原理”从头到尾讲清楚。
一、先把大框架说白:就两种思路
Jenkins 想知道 Git 仓库有没有新提交,本质上只有两条路:
- Jenkins 主动去问:轮询(Polling)
- “每隔 X 分钟,我去仓库看一