Jenkins的Githook自动触发构建

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

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

安装Gitlab Hook插件

  • Gitlab
  • Gitlab Hook

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

Jenkins的Githook自动触发构建

Jenkins设置自动构建

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

Jenkins的Githook自动触发构建

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

Gitlab配置webhook

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

开放webhook功能

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

Jenkins的Githook自动触发构建

Jenkins的Githook自动触发构建

为项目配置 请求地址url

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

Jenkins的Githook自动触发构建

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

Jenkins的Githook自动触发构建

发现测试结果返回403:

Jenkins的Githook自动触发构建

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

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

Jenkins的Githook自动触发构建

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

Jenkins的Githook自动触发构建

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

Jenkins的Githook自动触发构建

代码变更测试

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

Jenkins的Githook自动触发构建

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

Jenkins的Githook自动触发构建

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

Jenkins的Githook自动触发构建

结语:现在Jenkins的自动化构建已经讲解完毕,即开发人员只要提交自己的代码到版本库就能实现自动打包以及部署功能。无需手动的去打war/jar包再去部署。大大提高开发效率!!!

只要学不死,就往死里学!!!

相关文章: