持续集成(Continuous Integration),简称 CI。它是软件开发流程的一部分,通常应用于 DevOps 实践中。在这个环节中,用户或团队成员可以利用版本控制系统进行协作,无缝地将新的代码更改或新功能集成到现有的代码库中。
- 通过持续集成(CI),我们和团队成员可以自动化项目工作流,并简化向环境中不同阶段构建、测试和部署软件的过程。这里提到的环境,实际上指的就是 Staging(预发布)、Dev(开发)、Test(测试)、QA(质量保证)和 Prod(生产)。
- 持续集成(CI)将有助于改善沟通、跟踪变更、修复 Bug 并减少代码冲突。
持续集成(CI)是做什么的?
持续集成(CI)遵循规划、编码、做出更改或合并、检查结果和推送的基本实践。要让 CI 适应我们的项目,我们要做的第一件事就是寻找完美的服务和 DevOps 工具。以下是许多组织目前常用的一些优秀的持续集成工具:
- Jenkins
- CircleCI
- GitHub Actions
- Azure Pipelines
- GitLab CI/CD
- Bitbucket Pipelines
借助这些 CI 工具,我们可以管理源代码、版本控制、构建、测试和发布。
让我们快速了解一下持续集成的工作流:
用户/团队 >> 计划 >> 编码 >> 将更改合并到源分支 >> 构建产物 >> 测试功能 >> 提交检查和报告。(重复此过程)
为什么我们需要持续集成?
- 采用持续集成有助于分阶段提高代码和软件质量。通过自动化 CI,软件开发人员可以将更多时间用于添加新代码和修复 Bug 等任务,而不是专注于基础设施部署。
- 通过采用 CI,开发人员或团队可以在代码合并到主代码库并发布到生产环境之前识别并修复 Bug。通过自动化构建和测试过程,这还将减少发布新更新所需的时间。
- 实施了 CI 后,您或您的团队成员可以拥有开发过程的完整可见性和透明度。任何有权访问 CI 的人都可以识别并跟踪构建和测试的过程。凭借这些信息,团队用户可以发现瓶颈并找到需要改进的地方。
示例:
假设我们有一个 CI 仓库(分支为 Release)。每当我们或队友向代码仓库提交任何更改时,CI 服务会自动获取我们或团队所做的提交更改,构建产物,并将其部署到环境中。
持续集成的优势
持续集成(CI)简化了任务自动化的过程。以下是我们应该了解的一些优势。
- 减少手动任务: CI 有助于减少软件开发过程中涉及的手动任务。通过减少项目中的手动活动,可以节省大量的时间和精力。
- 代码集成与改进: 通过自动化代码更改的测试并向开发人员提供有关其更改的反馈,有助于提高代码质量。
- 与团队成员协作:如果您是在与团队成员共同工作的团队中,那么 CI 将帮助您的开发团队共享和集成他们的工作。这将改善沟通并减少代码冲突。
- 可见性与透明度:CI 为开发人员提供了代码更改的可见性。这有助于开发人员快速识别更改并尽快解决问题。
- 更快的发布:当我们设置持续集成并结合持续部署时,只要我们更改代码并将其推送到发布分支,更改就会立即上线。
持续集成 vs 持续部署 vs 持续交付
持续集成(CI)、持续部署或持续交付都是软件开发流程的一部分。
持续集成 (CI)
持续部署 (CD)
—
—
Continuous Integration
Continuous Deployment
频繁集成与测试代码
全自动发布到生产环境
构建 + 测试
构建 + 测试 + 部署到生产环境
否
完全自动(无需人工干预)
手动
全自动
频繁合并更改
每次通过的更改都会进入生产环境
低(仅涉及集成与测试)
较高(但通过优秀的测试来缓解)
开发、测试等
开发、测试、预发布、生产等