不错,4 张图了解 CI/CD 基础~

简介: 任何商业软件项目都希望通过业务流程的自动化来迅速盈利。迭代快、发布快、更新稳定,就意味着项目能走得更远;虽然,这个过程可以手动,但是手动克隆代码库、手动链接远程服务器、手动构建、手动运行命令等,任何一个手动的过程都意味着比自动要承受更大的出错风险!

image.png

本篇译自:levelup.gitconnected.com/basics-of-c…


CI 全名是 Continuous Integration —— 持续集成;

CD 全名是 Continuous Delivery —— 持续交付;


任何商业软件项目都希望通过业务流程的自动化来迅速盈利。迭代快、发布快、更新稳定,就意味着项目能走得更远;


虽然,这个过程可以手动,但是手动克隆代码库、手动链接远程服务器、手动构建、手动运行命令等,任何一个手动的过程都意味着比自动要承受更大的出错风险!


CI



CI 持续集成 描述了存储库变更过程,如图:

image.png


我们可以协同工作,最后的更改都会应用到 master 分支上;但这样一个简单的模型也隐藏着一些问题:


一、 如何知道 master 分支的代码部署成功了?

二、 如何验证单元测试的覆盖率?

三、 如何判断团队成员是否按统一的代码规范来编码?


这些问题也可以手动验证,但就是麻烦、低效、易出错;不如交给自动化的 CI ,它就是来干这个的!


第一点:如何知道 master 分支的代码部署成功了?


image.png


CI 过程如下:


  1. 每次推送更改时,Git 服务器都会向 CI 服务器发送一个通知;
  2. CI 服务器克隆存储库,检出分支,并与主分支合并;
  3. 然后启动构建脚本;
  4. 如果返回 Code 为 0,则表示构建成功。否则,被视为失败;
  5. CI 服务器将带有构建结果的请求发送到 Git 服务器;
  6. 如果构建成功,则允许合并请求。否则,合并被阻止;


这个过程保证合并到主分支的代码不会破坏构建!


第二点:测试覆盖率检测!


在任何时候,master 分支的测试覆盖率都不应低于 50%;我们可以借助 Jacoco plugin 插件来实现这一检测;


但是,如何使用这个插件,也需要去探究:并不是所有代码都该去遍历~

image.png


借助 SonarCloud ,可以实现只检查新增代码的测试覆盖率!

第三点:统一代码风格;


可以借助 Checkstyle 插件!比如代码中有一个未使用的 import ,则直接返回构建失败;当然,这个可以根据项目需求来个性配置;


CD



CD 持续交付 描述了项目新版本自动部署的过程~


一图胜千言:

image.png


之前的 CI 服务器演变成了现在的 CI/CD 服务器,你可以将 CI 作业委派给 GitLab CI,将 CD 作业委派给 Jenkins

CI 部分前面已经说过,下面讲下 CD 细节;


实际上,我们可以在多个阶段进行部署操作:

  1. 请求合并时部署;
  2. 定时器部署;
  3. Pull Request 合到特定分支时进行部署;
  4. 还可组合以上选项;


了解部署过程、选择合适的部署方式很重要,部署就是版本的发布!

这里提供一些常用的 CI/CD 工具:JenkinsGitHub ActionsGitLab CITravis CI


OK,以上就是本篇分享啦~

撰文不易,点赞鼓励👍👍👍👍👍👍


相关文章
|
3月前
|
测试技术 持续交付 开发者
使用Docker构建CI/CD流程:从理论到实践
【8月更文挑战第2天】使用Docker构建CI/CD流程,可以显著提高软件开发的效率和质量。通过容器化技术,开发者可以确保环境的一致性,快速部署和测试应用,并减少人为错误。结合合适的CI/CD工具和最佳实践,可以进一步加速软件交付过程,提高用户满意度。希望本文能为开发者在构建基于Docker的CI/CD流程时提供有价值的参考。
|
4月前
|
存储 监控 jenkins
利用CI/CD实现快速迭代与部署
【7月更文挑战第9天】CI/CD实践通过自动化构建、测试和部署流程,极大地提高了软件开发的效率和质量。通过选择合适的CI/CD工具、配置代码存储库、定义CI/CD管道、自动化测试和反馈以及自动化部署,团队可以更加高效地迭代和部署软件产品。希望本文能为您的CI/CD实践提供一些参考和帮助。
|
监控 安全 测试技术
现在公司都在用的CI/CD框架到底是什么?
现在公司都在用的CI/CD框架到底是什么?
997 1
|
6月前
|
监控 安全 搜索推荐
团队对CI/CD 工具的要求
选择和评估CI/CD工具的关键点包括:易用性和可定制性,需兼顾新手友好与团队个性化需求;强大的自动化能力,能处理复杂流程;良好的集成性,与各类开发工具无缝配合;开源和成本效益,开源选项常受青睐以降低成本;丰富的文档和社区支持,便于问题解决和功能利用;重视安全性,保护代码和部署安全;具备可扩展性,随团队及项目规模增长而扩展;以及提供监控和报告功能,确保及时响应构建、测试和部署的状态。这些因素有助于提升软件开发效率和质量。
89 0
|
测试技术 持续交付
CI/CD 的好处
CI/CD 的好处
83 0
|
运维 Devops 持续交付
软件开发常说的CI/CD是什么
软件开发常说的CI/CD是什么
467 0
|
人工智能 安全 测试技术
课时6:自动化 CI&CD 与灰度发布
自动化 CI&CD 与灰度发布
|
jenkins Java 应用服务中间件
【CI/CD技术专题】「Jenkins实战系列」总结归纳Jenkins的安装使用和配置流程介绍
【CI/CD技术专题】「Jenkins实战系列」总结归纳Jenkins的安装使用和配置流程介绍
365 0
【CI/CD技术专题】「Jenkins实战系列」总结归纳Jenkins的安装使用和配置流程介绍
|
存储 前端开发 jenkins
实践:部署Jenkins服务并开发MERN应用的CI/CD构建管道
为了解决这个问题,我们可以创建一个 CI/CD流水线。因此,每当您添加功能或修复错误时,都会触发此管道。这会自动执行从测试到部署的所有步骤。
282 0
|
敏捷开发 监控 测试技术
持续集成与部署(一):CI/CD简介
持续集成与部署(一):CI/CD简介
持续集成与部署(一):CI/CD简介