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

WEBHOOK实现自动发布 - 图1

注意:输入要查找的插件后会有显示,因已安装故上图无显示,选中点击install without restart 即可; B:部署项目源码地址 找到之前构建的项目->配置->源码管理

WEBHOOK实现自动发布 - 图2

C:构建触发器 查看jenkins生成回调地址。在任务重构建触发器下获取回调URL。下面的URL那一行只有Gitlab Hook Plugin插件下载成功后才能显示。

WEBHOOK实现自动发布 - 图3

D:设置代码发布的推送脚本

WEBHOOK实现自动发布 - 图4

注意:脚本见上一文档,在这里我们选择的是“构建运行后通过 SSH 发送文件或执行命令”,目的是为了保证先拉取在构建。

2.Gitlab部署

A:登陆Gitlab上的项目中,添加webhook(用上面Jenkins中生成的回调url)

WEBHOOK实现自动发布 - 图5

WEBHOOK实现自动发布 - 图6

WEBHOOK实现自动发布 - 图7

WEBHOOK实现自动发布 - 图8

WEBHOOK实现自动发布 - 图9

注意:看到200状态码说明设置成功。

3.常见错误

问题:

jenkins配置gitlab的webhook,完成配置,测试结果显示 Hook executed successfully but returned HTTP 403

解决方案:

设置匿名用户拥有可读权限

Manage jenkins->Security->Configure Global Security

WEBHOOK实现自动发布 - 图10

WEBHOOK实现自动发布 - 图11

去掉Gitlab enable authentication 点选 放开

系统管理 -> 系统设置 -> Enable authentication for ‘/project’ end-point

WEBHOOK实现自动发布 - 图12

三:自动化演示

1.Gitlab更新代码 原始代码:

WEBHOOK实现自动发布 - 图13

访问结果:

WEBHOOK实现自动发布 - 图14

更新后代码:

WEBHOOK实现自动发布 - 图15

更改后点击提交到master分支 观看Jenkins是否产生新的构建:

WEBHOOK实现自动发布 - 图16

注意:上图中自动完成了构建 浏览器访问web-server:

WEBHOOK实现自动发布 - 图17

注意:看到上图结果说明自动化成功。