CI/CD
概念
CI(Continuous Integration):持续集成。将各个开发人员的工作集合到一个代码仓库中。通常,每天都要进行几次,主要目的是尽早发现集成错误,使团队更加紧密结合,更好地协作。 CD(Continuous delivery):持续交付。其目的是最小化部署或释放过程中固有的摩擦。它的实现通常能够将构建部署的每个步骤自动化,以便任何时刻能够安全地完成代码发布(理想情况下)。 CD(Continuous Deployment):是一种更高程度的自动化,无论何时对代码进行重大更改,都会自动进行构建/部署。 CI / CD的采用改变了开发人员和测试人员如何发布软件。
持续集成
? 定义:频繁地(一天多次)将代码集成到主干。CI是一种通过在应用开发阶段引入自动化来频繁向客户交付应用的方法。CI 的核心概念是持续集成、持续交付和持续部署。作为一个面向开发和运营团队的解决方案,CI 主要针对在集成新代码时所引发的问题(亦称“集成地狱”)。
? 持续集成强调开发人员提交了新代码之后,立刻自动的进行构建、(单元)测试。根据测试结果,我们可以确定新代码和原有代码能否正确地集成在一起。
持续集成的目的
? 就是让产品可以快速迭代,同时还能保持高质量**。**它的核心措施是,代码集成到主干之前,必须通过自动化测试。只要有一个测试用例失败,就不能集成。
? 持续集成过程中很重视自动化测试验证结果,对可能出现的一些问题进行预警,以保障最终合并的代码没有问题。
持续集成的作用
代码库存越是积压,就越得不到生产检验,积压越多,代码间交叉感染的概率越大,下个发布(release)的复杂度和风险越高,持续集成可以保证团队开发人员提交代码的质量,减轻了软件发布时的压力; 持续集成中的任何一个环节都是自动完成的,无需太多的人工干预,有利于减少重复过程以节省时间、费用和工作量; 及早的发现代码中的问题,及早解决,代码越早推送(PUSH)出去,用户能越早用到,快就是商业价值;
CICD实现过程
工厂里的装配线以快速、自动化、可重复的方式从原材料生产出消费品。同样,软件交付管道以快速、自动化和可重复的方式从源代码生成发布版本。如何完成这项工作的总体设计称为“持续交付”(CD)。启动装配线的过程称为“持续集成”(CI)。确保质量的过程称为“持续测试”,将最终产品提供给用户的过程称为“持续部署”
工作流程
1、运维管理员创建gitlab项目,创建Jenkins项目
? 2、开发人员将code提交到对应的gitlab中(可按分支触发)
? 3、gitlab通过webhook触发对应Jenkins项目
? 4、进入CI环节:将code集成进标准的docker镜像中,并进行测试;
? 集成及测试成功,则将集成后的镜像上传至仓库中;
集成或测试失败,则结束本次Jenkins,并将原因通过邮件发送给开发者与运维管理员。
? 5、进入CD环节:
? 通过Ansible将CI集成成功的镜像部署到已定义的所有机子中,并进行测试。
? 如测试通过完成本次部署,如测试失败将判定该项目是否为第一次部署的;
? 如该项目不是第一次部署的,则滚回到上一版本的容器,并将原因通过邮件发送给运维管理员。
如测试失败将判定该项目是否为第一次部署的;
? 如该项目不是第一次部署的,则滚回到上一版本的容器,并将原因通过邮件发送给运维管理员。
|