Jenkins的Githook自动触发构建
在Jenkins的内置构建触发器中,轮询SCM实现Gitlab代码更新,项目自动构建,但是该方案的性能不佳,那有没有更佳的方案呢?有的,就是利用Gitlab的webhook实现代码push到仓库。立即触发项目的自动构建
原理: Gitlab代码变更,那么他就会发送一个构建请求到Jenkins,从而实现项目构建,好处在于我们可以控制代码提交的一个频率,不是再使用轮询的方式去扫描全部代码,提高性能
安装Gitlab Hook插件
- Gitlab
- Gitlab Hook
在可选插件中搜索以上两个插件并下载
Jenkins设置自动构建
安装完以上插件后会发现在流水线项目的配置中增加了一个触发器,如下
这里的配置我们默认就好,点击应用保存
Gitlab配置webhook
首先Gitlab默认是没有开放web hook的功能,需要先去开放 ,然后在配置请求的地址url,当然这里的配置需要使用root账户来完成
开放webhook功能
点击设置 -----> settings --------->Network ----------> Outbound requests
为项目配置 请求地址url
在项目下点击settings,然后选择Webhooks,如果没有Webhooks就选择Integrations
添加之后我们可以来测试一个push事件:
发现测试结果返回403:
这是因为Jenkins默认接受请求需要认证,那么这个时候就要去Jenkins页面配置接受请求时取消认证
在jenkins的系统配置中找到 Gitlab 配置选项
点击应用,保存,接下来我们再来到Gitlab 测试push 事件,发送测试请求,结果如下:
200,请求成功,而且在jenkins页面中还发现触发了一次项目构建
代码变更测试
在项目中增加如下改动并提交
来到Jenkins页面,发现自动构建并部署成功
访问tomcat压面: 完美运行,测试成功
!