本文已参加「新人创作礼」活动,一起开启掘金创作之路。
简介
问题
错误发现不及时 很多 错误在项目的早期可能就存在,到最后集成的时候才发现问题。
人工低级错误发生 产品和服务交付中的关键活动全都需要手动操作。
团队工作效率低 需要等待他人的工作完成后才能进行自己的工作。
解决方法
搭建CI/CD实现持续集成与持续交付
软件开发的连续方法基于自动执行脚本,以最大程度地减少在开发应用程序时引入错误的机会。从开发新代码到部署新代码,他们几乎不需要人工干预,甚至根本不需要干预。
它涉及到在每次小的迭代中就不断地构建,测试和部署代码更改,从而减少了基于错误或失败的先前版本开发新代码的机会。
CICD的价值体现
- 减轻运维工作压力。
- 尽早反馈,尽早发现错误。
- 减少集成问题,每次发现问题当时解决,避免问题堆积。
架构图
自动化上线流程: 开发人员通过git上传代码到gitlab,在gitlab和jenkins设置webhook,jenkins通过webhook发现新代码上传,然后拉取代码到本地并启动构建,jenkins通过ssh插件执行自动部署脚本,部署脚本打包后使用dockerfile创建满足部署环境的镜像并上传到harbor镜像仓库中,最后通过ansible远程控制被部署的机器从harbor上拉取镜像并创建容器,构建完成后可以通过sonarqube查看代码质量。
实验环境
| 服务器名称 | IP |
|---|---|
| gitlab | 192.168.111.101 |
| jenkins | 192.168.111.102 |
| harbor | 192.168.111.103 |
| docker | 192.168.111.104 |
| sonarqube | 192.168.111.105 |
系统版本:CentOS Linux release 7.6.1810 (Core)
实现效果:持续集成交付war包和jar包