Skip to content

Jenkins教程 - 4 监听Git代码变化

前面在实现自动构建的时候,是手动来点击页面的按钮触发构建。

还可以让 Jenkins 监听 Git 上代码是否发生变化,发生变化时,让 Jenkins 自动构建。

逻辑是这样的:

其实这里是 Jenkins 提供了一个钩子接口,调用这个接口可以触发 Jenkins 构建。然后给 Git 配置这个接口,当 Git 发生变化的时候,就可以调用这个接口来触发 Jenkins 构建了。

4.1 配置回调接口

现在在前面 HelloWorld 的项目中进行配置。

在项目的配置中,找到构建触发器配置,然后找到触发远程构建选项。

需要填写一个 token,这个token 需要访问接口的时候填写。下面提供了两个链接,可以通过访问者两个链接出发 Jenkins 构建,但是这个两个接口需要登录认证。可以通过安装插件解决。

4.2 安装插件

这里需要安装 Build Authorization Token Root 插件。因为如果直接调用 Jenkins 的触发接口,会提示没有权限,因为没有登录,安装这个插件,调用接口就可以免登录了。

安装插件:

点击查看插件的详情,可以看到触发构建的链接:

所以触发构建的链接,不是之前的链接了,而是 Build Authorization Token Root 插件提供的新的链接地址。

4.3 手动调用接口构建

我们现在先不使用 Git 来触发 Jenkins 构建,我们直接使用浏览器或 Postman 来调用接口来触发 Jenkins 构建。

我的 Jenkins 服务器地址是 192.168.0.102, 构建任务是 hello-jenkins,token是 doubibiji-better,所以链接是:

shell
http://192.168.0.102:8080/job/hello-jenkins/build?token=doubibiji-better
# 或者
http://192.168.0.102:8080/buildByToken/build?job=hello-jenkins&token=doubibiji-better

请求上面的两个接口,都可以看到 Jenkins 页面触发了构建。

4.4 使用Git触发

上面是手动使用浏览器或 Postman 请求接口来触发构建任务执行。

下面使用Git来触发。

1 Gitee

在gitee码云上,找到项目,在管理界面,找到 WebHooks 配置。


很遗憾,这里有一个问题,因为我们的 Jenkins 是本地部署的,是无法被外网访问的,所以这里填写的地址肯定是无法被 Gitee 访问的,除非我们的 Jenkins 可以被外网访问,这里只是演示一下怎么配置。


2 GitLab

如果使用的是 GitLab 在本地部署 Git 服务的话,配置方式和上面基本一样,也是找到项目,在项目的管理页面,找到 Webhooks 配置,然后选择触发的事件。

完善信息后,点击下面的添加。


这里也有一个坑。点击 Add webhook 添加后,可能会提示添加出错,提示不允许访问本地地址。

所以需要修改一下 GitLab 的配置。

选择 菜单 --> 管理员

找到 设置 --> 网络 --> 出站请求 --> 勾选允许来自 web hooks 和服务对本地网络的请求

这样 webhooks 才可以添加成功。

当再进行代码推送的时候,就会自动触发 Jenkins 进行构建。


这种通过 Git 来触发构建的方式在实际生产环境是不推荐使用的,在开发环境勉强可以用。大部分都是通过手动来触发构建,或者使用定时构建,指定某个时间来进行构建。接下来继续学习一些触发器的使用。