Jenkins的Githook自动触发构建

在Jenkins的内置构建触发器中,轮询SCM实现Gitlab代码更新,项目自动构建,但是该方案的性能不佳,那有没有更佳的方案呢?有的,就是利用Gitlab的webhook实现代码push到仓库。立即触发项目的自动构建

原理: Gitlab代码变更,那么他就会发送一个构建请求到Jenkins,从而实现项目构建,好处在于我们可以控制代码提交的一个频率,不是再使用轮询的方式去扫描全部代码,提高性能

安装Gitlab Hook插件

  • Gitlab
  • Gitlab Hook

在可选插件中搜索以上两个插件并下载

jenkins告警触发接口 jenkins自动触发构建_jenkins告警触发接口

Jenkins设置自动构建

安装完以上插件后会发现在流水线项目的配置中增加了一个触发器,如下

jenkins告警触发接口 jenkins自动触发构建_docker_02

这里的配置我们默认就好,点击应用保存

Gitlab配置webhook

首先Gitlab默认是没有开放web hook的功能,需要先去开放 ,然后在配置请求的地址url,当然这里的配置需要使用root账户来完成

开放webhook功能

点击设置 -----> settings --------->Network ----------> Outbound requests

jenkins告警触发接口 jenkins自动触发构建_gitlab_03

jenkins告警触发接口 jenkins自动触发构建_Jenkins_04

为项目配置 请求地址url

在项目下点击settings,然后选择Webhooks,如果没有Webhooks就选择Integrations

jenkins告警触发接口 jenkins自动触发构建_gitlab_05

添加之后我们可以来测试一个push事件:

jenkins告警触发接口 jenkins自动触发构建_gitlab_06

发现测试结果返回403:

jenkins告警触发接口 jenkins自动触发构建_Jenkins_07

这是因为Jenkins默认接受请求需要认证,那么这个时候就要去Jenkins页面配置接受请求时取消认证

在jenkins的系统配置中找到 Gitlab 配置选项

jenkins告警触发接口 jenkins自动触发构建_jenkins_08

点击应用,保存,接下来我们再来到Gitlab 测试push 事件,发送测试请求,结果如下:

jenkins告警触发接口 jenkins自动触发构建_Jenkins_09

200,请求成功,而且在jenkins页面中还发现触发了一次项目构建

jenkins告警触发接口 jenkins自动触发构建_jenkins_10

代码变更测试

在项目中增加如下改动并提交

jenkins告警触发接口 jenkins自动触发构建_Jenkins_11

来到Jenkins页面,发现自动构建并部署成功

jenkins告警触发接口 jenkins自动触发构建_docker_12

访问tomcat压面: 完美运行,测试成功

jenkins告警触发接口 jenkins自动触发构建_gitlab_13