Bootstrap

Jenkins + gitlab 自动部署

1. 背景

作为后台开发,每次我们开发完或者修改一个bug后都要手动合并,打包或者连接服务器执行打包部署命令,每次手动操作,极大的影响了我们的开发效率,那么有没有一款工具能让我们只需要推送/合并代码到远端就能实现服务自动打包,发布,部署,通知呢。因此,今天介绍的jenkins和gitlab就来了。

2. jenkins介绍

这里简介和安装就省略了,各位可以自行百度/谷歌学习下,它在我们的自动部署方案里做的重要角色就是打包,发布,部署,通知

3. gitlab介绍

做为“程序猿”的我们,相信这款工具也不会陌生,代码管理开源项目

4. 自动部署流程

4.1 流程图

4.2 各部分详解

  1. 开发推送/合并代码到我们的部署分支
  2. 代码推送到部署分支后,触发我们的推送事件,然后调用jenkins的部署任务
  3. jenkins收到部署通知后,调用企业微信的webhook发送消息,“XX项目开始部署”
  4. jenkins通过git插件拉取gitlab对应分支的代码
  5. maven打包
  6. 第五步maven打包完成后,如果是部署在宿主机服务器,则通过ssh推送jar包到对应的服务器上,并执行重启命令
  7. 最后发送企业微信通知部署完成,耗时多少。

4.3 实际操作

  1. 好了,各部分的已经大致介绍完成了,下面我们通过一个小的demo来完成我们的实际操作

  2. 推送代码到远程分支这块我们就不用说了

  3. gitlab的推送事件介绍

    1. 我们选择对应项目的webhooks配置
    2. 触发事件,可以看到有多种事件,这里我们选择的是推送事件,并且我们配置的是develop分支的推送事件
    3. jenkins任务令牌
    4. jenkins的任务地址,这个和jenkins的任务令牌后续介绍

4.4 jenkins对应job部署

  1. 新建任务

  2. 填入任务名称,这里我们选择一个自由风格的任务

  3. 配置我们项目的gitlab地址

  4. 配置远程触发地址

    1. 选择构建触发器,并把该url填入我们的gitlab的webhooks事件的url中

    2. 点击高级,生成授权码, 并把授权码填入gitlab的webhooks令牌中

  5. 配置maven构建打包

  6. 配置ssh发包

  7. 配置企业微信通知

4.5 推送示例展示

可以看到,我们单个应用自动部署800+次了,开发只需要推送代码到远端,就会自动开始自动部署。

企业微信机器人通知,当然,如果不需要插件模板也可以通过其他可以发送http请求的来自定义发送通知内容。

5. 总结

今天我们介绍了整个jenkins+gitlab的自动部署流程,用了最简单的例子来说明,如果要部署多个服务器,我们也可以在构建的时候添加多个服务器,这里是串行部署的,如果需要并行部署的话我们也可以通过pipeline的parallel ssh_publishers命令执行并行部署;如果你用的是docker或者k8s部署项目的话,我们也可以把发包的步骤换成打包后构建镜像然后推送到harbor中,通过执行远程shell脚本部署docker,执行kuboard的ci/cd api来切换线上标签。

6. 附

  1. 各个jenkins步骤所用到的插件
    1. git及jdk配置, manage jenkins -> global tool configuration
    2. Maven 配置
      1. 新建maven,填入服务器上maven地址或者安装maven

    3. 其他插件
      1. manage jenkins -> Manager Plugin
        1. 企业微信通知插件 Qy Wechat Notification
        2. ssh推送插件 Publish Over SSH​​​​​​​
;