[完整版]云时代必修课-云原生CI/CD(持续集成与交付)全流程实战

122 阅读5分钟

参考资料地址1:pan.baidu.com/s/1tEE9YtnG… 提取码:6gf4 参考资料地址2:pan.baidu.com/s/12tWSv89B… 提取码:n6db

一、CI/CD概念 CI/CD 是持续集成(Continuous Integration,CI)、持续交付(Continuous Delivery,CD)与持续部署(Continuous Deployment,CD)的简称,注意CD对应了两个名词

CI/CD是实现敏捷开发和Devops理念的一种方法,具体而言,CI/CD 可让持续自动化和持续监控贯穿于应用的整个生命周期(从集成和测试,到交付和部署)。这些关联的事务通常被统称为CI/CD 管道(Pipeline),由开发(RD)、测试(QA)、运维(OP)团队以敏捷方式协同支持

二、CI 持续集成(Continuous Integration) 协同开发是目前主流的开发方式,也就是多位开发人员可以同时处理同一个应用的不同模块或者功能。 但是,如果企业计划在同一天,将所有开发分支代码集成在一起,最终可能会花费很多时间和进行很多重复劳动,费事费力。因为代码冲突是难以避免的。 如果开发人员本地的环境和线上不一致的话,那么这个问题就更加复杂了。 持续集成(CI)可以帮助开发者更加方便地将代码更改合并到主分支。 一旦开发人员将改动的代码合并到主分支,系统就会通过自动构建应用,并运行不同级别的自动化测试(通常是单元测试和集成测试)来验证这些更改,确保这些更改没有对应用造成破坏。 如果自动化测试发现新代码和现有代码之间存在冲突,CI 可以更加轻松地快速修复这些错误。

三、CD 持续交付(Continuous Delivery) CI 在完成了构建、单元测试和集成测试这些自动化流程后,持续交付可以自动把已验证的代码发布到企业自己的存储库。 持续交付旨在建立一个可随时将开发环境的功能部署到生产环境的代码库。 在持续交付过程中,每个步骤都涉及到了测试自动化和代码发布自动化。 在流程结束时,运维团队可以快速、轻松地将应用部署到生产环境中。

四、一个优秀的 CI/CD 研发过程应该是什么样子的? 假设开发同学第一天入职,他打开电脑,通过以下几步完成上线: ● 第一步:从 AntCode clone 代码到本地,修改了几行代码,本地测试后,通过git commit & push到代码仓库 ● 第二步:push 过程自动触发了 CI 流水线,5 min 后,执行结束,通过钉钉通知告诉小蚂某个测试case失败了 ● 第三步:小蚂本地修改失败 case ,重新 commit & push ,再次触发 CI 流水线,自动执行编译、测试、扫描等,收到钉钉消息,执行通过 ● 第四步:小蚂将功能交给测试&产品验收,发现问题或收到建议,重新到第二步修改代码。 ● 第五步:测试&产品验收没有问题后,手动触发预发部署流水线,并自动生成部署产物交付,后面流程就不用管啦。 ● 第六步:持续部署流水线每几分钟自动检测交付产物包,发现更新后,自动将产物部署到线上。发布成功后,小蚂收到通知小蚂的功能生效啦。

五、实操案例(CI持续集成) 环境要求:需要提前安装GitLab、Jenkins、Docker 预期效果:将本地代码提交到GitLab仓库,通过Jenkins拉取代码->编译->生成镜像->部署,最后可以成功访问。 编写代码,在本地正常运行。 一个简单的springboot项目,代码如下: version: '3.1' services: jiangnan: build: context: ./ dockerfile: Dockerfile image: jiangnan:v1.0.0 container_name: jiangnan ports: - 8081:8080 pom.xml重点说明 jiangnan org.springframework.boot spring-boot-maven-plugin

六、持续集成(Continuous Integration)和持续部署(Continuous Deployment)是现代软件开发中的重要实践,它们带来了许多优势,包括:

1、提高软件质量:持续集成和持续部署通过频繁地自动化构建、测试和部署过程,可以及早发现和解决代码错误和问题,从而提高软件质量。 2、快速反馈:持续集成和持续部署使得开发人员可以更快地获得反馈,因为每次提交代码后都会自动构建和测试,开发人员可以立即知道代码是否通过了测试。 3、减少手动操作:持续集成和持续部署通过自动化构建、测试和部署流程,减少了手动操作的需求,降低了人为错误的风险,并提高了效率。 4、提高团队协作:持续集成和持续部署鼓励团队成员频繁地提交代码,并及时解决冲突和问题,促进了团队协作和沟通。 5、快速交付:持续部署使得软件可以更快地交付给用户,因为每次通过测试后都可以自动部署到生产环境,减少了发布的时间和风险。 6、可靠性和可重复性:持续集成和持续部署的自动化流程可以确保每次构建和部署的一致性,减少了人为错误的可能性,提高了软件的可靠性和可重复性。