GBase 8a目前版本构建和回归测试是一套完整的CI/CD流水线。
一、什么是CI/CD
CI、CD其实是三个概念,它包含了一个CI和两个CD,CI全称Continuous Intergration,表示持续集成,CD包含Continuous Delivery和Continuous Deployment,分别是持续交付和持续部署。这三个概念之间是由前后依赖关系的。CI/CD不是一个工具,它是一种软件开发实践,核心是通过引入自动化的手段来提高软件交付效率。
二、持续集成
持续集成是指在代码开发过程中,可以频繁的将代码部署到主干,并进行自动化测试。目前持续集成工具中以jenkins使用最为广泛,由Jenkins来作业化持续集成过程,利用Gitlab来管理程序版本,利用Gerrit来做代码审核,利用Sonar进行代码质量扫描,利用Junit来进行单元测试,利用Docker compose来构建镜像,利用Docker来部署容器,利用K8S、Rancher等来进行服务编排。
三、持续交付
持续交付是指在持续集成的基础上,完成了构建、单元测试和集成测试这些自动化流程后,持续交付可以自动把已验证的代码发布到预生产环境,持续交付旨在建立一个可随时将开发环境的功能部署到生产环境的代码库。在流程结束时,运维团队可以快速、轻松的将应用部署到生产环境中。
四、持续部署
持续部署作为持续交付的延伸,持续部署可以自动将应用发布到生产环境。持续部署的场景包括:单系统部署结构、普通集群部署结构、微服务系统部署结构、租户隔离结构。
CI/CD应用场景
1)开发人员将本地代码上传gitlab版本服务器
2)jenkins通过webhook插件自动到gitlab服务器拉取最新代码
3)通过docker-maven-plugin插件自动编译代码
4)将自定义镜像上传docker私服仓库
5)k8s集群自动拉取最新版本镜像
6)自动化部署整个项目
7)用户通过nginx负载均衡访问整个项目
五、为什么需要CI/CD
定期集成的主要好处之一是,您可以快速检测到错误并更轻松地定位它们。由于引入的每个更改通常很小,因此可以快速查明引入缺陷的特定更改。
近年来,CI已成为软件开发的最佳实践,并遵循一系列关键原则。其中包括版本控制,构建自动化和自动化测试。
此外,持续部署和持续交付已成为最佳实践,可让您随时随地部署应用程序,甚至在每次引入新更改时甚至将主代码库自动推入生产环境。这使您的团队可以快速行动,同时保持可以自动检查的高质量标准。