CI/CD

201 阅读2分钟
定义

CI/CDCI/CD/CD的简写,全称为Continuous Integration/Continuous Delivery/Continuous Deployment,即持续集成/持续交付/持续部署,它是一种项目研发的方法,使用CI/CD可将新功能或问题修复自动的快速可靠的推送给用户。

相关概念

持续集成(Continuous Integration,CI)

  • 可以帮助开发人员更加频繁地(有时甚至每天)将代码更改合并到共享分支或"主干"中,而不是独立地开发每个功能模块并在开发周期结束时一一提交。一旦开发人员对应用所做的更改被合并,系统就会通过自动构建应用并运行不同级别的自动化测试(通常是单元测试和集成测试)来验证这些更改,确保这些更改没有对应用造成破坏。这意味着测试内容涵盖了从类和函数到构成整个应用的不同模块。
  • 一旦 CI 管道成功完成,部署的应用程序可以由“用户”或 QA 团队进行手动测试,以确保它符合客户的要求,
  • 这往往需要依赖测试套件和自动化测试,否则往往会加大集成成本。

持续交付(Continuous Delivery,CD)

  • 持续交付是持续集成的拓展,其中软件交付流程进一步自动化,以便随时轻松地部署到生产环境中。持续交付依赖于部署流水线,在流水线的每个阶段,如果构建无法通过关键测试会向团队发出警报。否则,将继续进入下一个测试, 并在连续通过测试后自动进入下一个阶段。
  • 流水线的最后一个部分会将构建部署到和生产环境等效的环境中。这是一个整体的过程,因为构建、部署和环境都是一起执行和测试的,它能让构建在实际的生产环境可部署和可验证。

持续部署(Continuous Deployment,CD)

  • 持续部署拓展了持续交付,使得软件能够在所有测试通过时自动部署,而不需要人为决定何时及如何投入生产环境。
  • 在这样的流程中, 不需要人为决定何时及如何投入生产环境。CI/CD 系统的最后一步将在构建后的组件/包退出流水线时自动部署。 此类自动部署可以配置为快速向客户分发组件、功能模块或修复补丁,并准确说明当前提供的内容。

    市面上常见的工具如jenkinsCircleCICodeshipShippable,它们通常于各种开发工具配合,如 githubjira