1. 背景
作为后台开发,每次我们开发完或者修改一个bug后都要手动合并,打包或者连接服务器执行打包部署命令,每次手动操作,极大的影响了我们的开发效率,那么有没有一款工具能让我们只需要推送/合并代码到远端就能实现服务自动打包,发布,部署,通知呢。因此,今天介绍的jenkins和gitlab就来了。
2. jenkins介绍
这里简介和安装就省略了,各位可以自行百度/谷歌学习下,它在我们的自动部署方案里做的重要角色就是打包,发布,部署,通知
3. gitlab介绍
做为“程序猿”的我们,相信这款工具也不会陌生,代码管理开源项目
4. 自动部署流程
4.1 流程图
4.2 各部分详解
- 开发推送/合并代码到我们的部署分支
- 代码推送到部署分支后,触发我们的推送事件,然后调用jenkins的部署任务
- jenkins收到部署通知后,调用企业微信的webhook发送消息,“XX项目开始部署”
- jenkins通过git插件拉取gitlab对应分支的代码
- maven打包
- 第五步maven打包完成后,如果是部署在宿主机服务器,则通过ssh推送jar包到对应的服务器上,并执行重启命令
- 最后发送企业微信通知部署完成,耗时多少。
4.3 实际操作
-
好了,各部分的已经大致介绍完成了,下面我们通过一个小的demo来完成我们的实际操作
-
推送代码到远程分支这块我们就不用说了
-
gitlab的推送事件介绍
- 我们选择对应项目的webhooks配置
- 触发事件,可以看到有多种事件,这里我们选择的是推送事件,并且我们配置的是develop分支的推送事件
- jenkins任务令牌
- jenkins的任务地址,这个和jenkins的任务令牌后续介绍
4.4 jenkins对应job部署
-
新建任务
-
填入任务名称,这里我们选择一个自由风格的任务
-
配置我们项目的gitlab地址
-
配置远程触发地址
-
选择构建触发器,并把该url填入我们的gitlab的webhooks事件的url中
-
点击高级,生成授权码, 并把授权码填入gitlab的webhooks令牌中
-
-
配置maven构建打包
-
配置ssh发包
-
配置企业微信通知
4.5 推送示例展示
可以看到,我们单个应用自动部署800+次了,开发只需要推送代码到远端,就会自动开始自动部署。
企业微信机器人通知,当然,如果不需要插件模板也可以通过其他可以发送http请求的来自定义发送通知内容。
5. 总结
今天我们介绍了整个jenkins+gitlab的自动部署流程,用了最简单的例子来说明,如果要部署多个服务器,我们也可以在构建的时候添加多个服务器,这里是串行部署的,如果需要并行部署的话我们也可以通过pipeline的parallel ssh_publishers命令执行并行部署;如果你用的是docker或者k8s部署项目的话,我们也可以把发包的步骤换成打包后构建镜像然后推送到harbor中,通过执行远程shell脚本部署docker,执行kuboard的ci/cd api来切换线上标签。
6. 附
- 各个jenkins步骤所用到的插件
- git及jdk配置, manage jenkins -> global tool configuration
- Maven 配置
- 新建maven,填入服务器上maven地址或者安装maven
- 其他插件
- manage jenkins -> Manager Plugin
- 企业微信通知插件 Qy Wechat Notification
- ssh推送插件 Publish Over SSH
- manage jenkins -> Manager Plugin