GitLab + Jenkins + Webhook 实现Push代码后自动更新

2019年1月2日14:50:09 发表评论 564 views

一、介绍

通常是开发后的代码先推到Gitlab上管理,然后在Jenkins里通过脚本构建代码发布。这种方式每次在发版的时候,需要人工去执行jenkins上的构建动作,有时显得过于繁琐。

Gitlab的Webhook功能,通过Webhook的相关设置,可以实现代码Push后,自动去触发jenkins上的构建动作,这样就不需要人工干预去执行操作了。

二、环境信息

主机名 IP地址 功能
GitLab 172.20.6.11 GitLab-ce 8.8.0
Jenkins 172.20.6.12 Jenkins 2.150.1
Web 172.20.2.10 Nginx

三、环境搭建

1. Jenkins部署

On 172.20.6.12

导入 yum 源

安装及启动服务

GitLab + Jenkins + Webhook 实现Push代码后自动更新

web访问

GitLab + Jenkins + Webhook 实现Push代码后自动更新

2. GitLab本地化部署

On 172.20.6.11

web访问

GitLab + Jenkins + Webhook 实现Push代码后自动更新

3.在GitLab新建项目,并上传代码

GitLab + Jenkins + Webhook 实现Push代码后自动更新

GitLab + Jenkins + Webhook 实现Push代码后自动更新

4.配置 Jenkins

a.安装插件

登录 Jenkins 后台,依次点击“系统管理”-“插件管理”-“Avaliable”

必须安装的插件如下:

b.配置 web 机器

登录 Jenkins 后台,依次点击“系统管理”-“系统设置"

只有 Publish over SSH插件安装成功,即出现下方配置项,填写 web  的服务器信息即可

GitLab + Jenkins + Webhook 实现Push代码后自动更新

c.新建构建任务

通用部分配置

设置工作空间目录为:/data,并修改目录权限为 jenkins

GitLab + Jenkins + Webhook 实现Push代码后自动更新

d.源代码配置

在 Jenkins 服务器上:

在gitlab的项目下, 点击右侧配置菜单 -> Deploy Keys, 用刚才创建的 id_rsa_tho.pub 的内容, 创建一个key, 名称为 Readonly Key for Jenkins, 如果有多个项目都需要这个私钥, 则在每个项目的deploy keys下enable这个key即可。

GitLab + Jenkins + Webhook 实现Push代码后自动更新

选择 Git, 填入gitlab中给的项目地址, 在下面add new credential,

Username: git,

Private Key Enter Directly, 输入刚才创建的 id_rsa 的内容, 注意这个是私钥

GitLab + Jenkins + Webhook 实现Push代码后自动更新

GitLab + Jenkins + Webhook 实现Push代码后自动更新

e.构建触发器配置(Build Triggers)

只有 GitLab 插件安装成功,此处会显示该项,后面提供的 URL 地址即为 webhook 的地址

GitLab + Jenkins + Webhook 实现Push代码后自动更新

f.构建环境(Build Environment)

选择 步骤2 中添加的 web 机器,保存即可

GitLab + Jenkins + Webhook 实现Push代码后自动更新

四、配置 webhook

进入 GitLab,项目,编辑项目,选择"Webhooks"

gitlab 的 webhooks url 是根据 jenkins 构建权限连接设置的,如果必须登录才能构建就必须获取 jenkins 的用户名及 token,可以在 jenkins 用户-设置里面查看到 ,url格式:

http://<username>:<api-token>@<jenkins-server>/

所以,如果你出现如下错误提示:

GitLab + Jenkins + Webhook 实现Push代码后自动更新

 

GitLab + Jenkins + Webhook 实现Push代码后自动更新

点击 Test,出现以下即表示已经成功

GitLab + Jenkins + Webhook 实现Push代码后自动更新

 

五、测试

1、当前页面内容

GitLab + Jenkins + Webhook 实现Push代码后自动更新

2、本地 Pycharm 编写修改 html 代码,并 push

3、查看 Jenkins

GitLab + Jenkins + Webhook 实现Push代码后自动更新

GitLab + Jenkins + Webhook 实现Push代码后自动更新

4、查看网站

GitLab + Jenkins + Webhook 实现Push代码后自动更新

 

 

  • 微信小程序
  • 关注微信小程序
  • weinxin
  • 微信公众号
  • 关注微信公众号
  • weinxin
Wangxiao

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: