运维眼中的CI流程

软件开发中的测试构建就是一个不断循环的过程,软件就是在这个过程中不断地迭代更新,这里就会涉及一个软件持续构建的流程,就是我们通常说的CI(Continus Intergration)持续集成。

在软件开发过程中,良好的CI/CD流程是提高团队协作效率的重要因素。通过使用一些集成工具,如Jenkins、Github Action和Buildkite,我们可以实现强大的功能,并为公司提供一个高效的CICD平台。虽然这些工具在实现方式上有所不同,但对于流程来说,它们的作用是相似的。然而,实施一个成功的CI/CD流程需要团队成员具备良好的代码验证和测试意识。本文将讨论开发新功能和BUG修复、Hotfix和产品回滚等不同情况下的CI/CD流程,并探讨它们在提高团队协作效率方面的作用。

开发新功能以及BUG修复

ci_new_feature_pipeline

  • 开发提交PR以后会触发验证和单元测试的JOB。
  • 验证成功并通过测试的分支还需要团队成员的检查并合并到开发分支中。
  • 开发分支的变化会触发构建并上传构建品到仓库。
  • 测试环境会部署新的构建产品并执行E2E测试。
  • 通过集成测试后整个CI流程就结束了(接下来的就是CI流程了)。

不同的公司可能在CI/CD流程中有不同的变体,但总体上都应该遵循验证、测试、构建和集成测试的基本流程。上述图示了两种不同情况的简化示例。

Hotfix

对于Hotfix(紧急修复)情况,我们可以采用以下流程:

  • 从主分支签出hotfix分支,并提交PR。
  • 触发验证和单元测试的JOB。
  • 验证成功并通过测试的分支需要团队成员进行检查,并合并到开发分支中。
  • 开发分支的变化会触发构建,并将构建产物上传到仓库。
  • 测试环境将部署新的构建产品,并进行端到端(E2E)测试。
  • 测试成功后,从hotfix分支向主分支提交新的PR,并忽略所有测试,直接合并到主分支中。

产品回滚

— 在需要回滚产品的情况下,我们可以快速部署回滚的PR到产线中,而不需要参与任何测试流程。

结论

良好的CI/CD流程是软件开发中不可或缺的一部分,它能够显著提高团队的协作效率。通过使用适合公司需求的集成工具,并遵循验证、测试、构建和集成测试的基本流程,团队可以更加高效地开发新功能、修复BUG,并快速部署产品。然而,成功实施CI/CD流程需要团队成员具备良好的代码验证和测试意识。只有在全员积极参与和遵循流程的前提下,CI/CD才能发挥其最大的价值,为团队带来持续的增长和成功。