5-WEBHOOK实现自动发布

一:项目环境

Gitlab服务器正常运行
Jenkins服务器正常运行,并可实现项目上线
web-server服务器正常运行

ip地址 可用性
Gitlab 10.0.0.20 正常
Jenkins 10.0.0.21 正常
web-server 10.0.0.22 正常

二:项目部署

之前部署了Gitlab的代码托管平台和Jenkins的代码发布平台。通常是开发后的代码先推到Gitlab上管理,然后在Jenkins里通过脚本构建代码发布。这种方式每次在发版的时候,需要人工去执行jenkins上的构建动作,有时显得过于繁琐。于是就想到了Gitlab的Webhook功能,通过Webhook的相关设置,可以实现代码Push后,自动去触发jenkins上的构建动作,这样就不需要人工干预去执行发版操作了。

1.Jenkins部署

通常,jenkins在项目配置时是可以配置远程构建触发器,设置好jenkins的回调url后就可以让jenkins进行自动构建。
A:安装Gitlab Hook Plugin插件
“系统管理”->”插件管理”->”可选插件”,选择Gitlab Hook Plugin
5-WEBHOOK实现自动发布 - 图1
注意:输入要查找的插件后会有显示,因已安装故上图无显示,选中点击install without restart 即可;
B:部署项目源码地址
找到之前构建的项目->配置->源码管理
5-WEBHOOK实现自动发布 - 图2
C:构建触发器
查看jenkins生成回调地址。在任务重构建触发器下获取回调URL。下面的URL那一行只有Gitlab Hook Plugin插件下载成功后才能显示。
5-WEBHOOK实现自动发布 - 图3
D:设置代码发布的推送脚本
5-WEBHOOK实现自动发布 - 图4
注意:脚本见上一文档,在这里我们选择的是“构建运行后通过 SSH 发送文件或执行命令”,目的是为了保证先拉取在构建。

2.Gitlab部署

A:登陆Gitlab上的项目中,添加webhook(用上面Jenkins中生成的回调url)
5-WEBHOOK实现自动发布 - 图5
5-WEBHOOK实现自动发布 - 图6
5-WEBHOOK实现自动发布 - 图7
5-WEBHOOK实现自动发布 - 图8
5-WEBHOOK实现自动发布 - 图9
注意:看到200状态码说明设置成功。

3.常见错误

问题:
jenkins配置gitlab的webhook,完成配置,测试结果显示 Hook executed successfully but returned HTTP 403
解决方案:
设置匿名用户拥有可读权限
Manage jenkins->Security->Configure Global Security
5-WEBHOOK实现自动发布 - 图10
5-WEBHOOK实现自动发布 - 图11
去掉Gitlab enable authentication 点选 放开
系统管理 -> 系统设置 -> Enable authentication for ‘/project’ end-point
5-WEBHOOK实现自动发布 - 图12

三:自动化演示

1.Gitlab更新代码
原始代码:
5-WEBHOOK实现自动发布 - 图13
访问结果:
5-WEBHOOK实现自动发布 - 图14
更新后代码:
5-WEBHOOK实现自动发布 - 图15
更改后点击提交到master分支
观看Jenkins是否产生新的构建:
5-WEBHOOK实现自动发布 - 图16
注意:上图中自动完成了构建
浏览器访问web-server:
5-WEBHOOK实现自动发布 - 图17
注意:看到上图结果说明自动化成功。