持续集成工具
在软件项目中自动变更代码的工具。
Max Rehkopf
特约作家
持续集成 (CI) 是一种敏捷的 DevOps 最佳实践,它使多个开发人员能够在共享代码库中快速贡献和协作。如果没有持续集成,开发人员协作是一个协调代码更新和合并的繁琐手动流程。
持续集成支柱
CI 基于敏捷和 DevOps 软件开发最佳实践构建,包括自动测试、版本控制、构建自动化和自动部署。这些持续集成支柱中的每一个都有自己的工具和理念生态系统。软件开发工具提供商已开始提供完整的 CI 即服务产品,将这些支柱捆绑成一个完整的软件包。为了更好地了解捆绑产品,我们来回顾一下基础知识
源代码控制版本管理
持续集成最重要的基础支柱可能是源代码控制版本管理。它用于沟通和解决在同一个代码库中工作的多个开发人员之间的编辑冲突。源代码控制版本管理有多种工具,最受欢迎的是 Git 和 Subversion。CI 即服务产品以版本控制系统为中心。
自动化测试
大多数严肃的软件项目都包含一个额外的代码库,该代码库对商业产品和功能没有明确的责任。这个辅助代码库是一个测试套件,充当一组判定,确保主代码库正常运行,没有错误。在开发过程中,这些测试由开发人员运行,以验证新代码没有导致现有功能出现任何回归。这些测试用例也可以由外部工具运行,以自动执行此验证流程。CI 服务产品将在用户指定的事件上自动运行项目的测试用例。通常,当开发人员使用版本控制系统推送代码时,事件将触发整个测试套件自动运行。
查看解决方案
使用 Open DevOps 构建和操作软件
讨论的产品
协作、测试和部署代码
构建自动化
“构建”是为快照软件项目的当前发布版本而创建的构件。版本通过各种网络分发给最终用户。项目通常需要采取一组脚本步骤来创建版本构件。CI 工具通过使用版本控制系统的自动触发器来帮助简化此构建流程。一个示例触发器是,当新代码合并到代码库的生产分支时,将版本上传到远程服务器供用户下载。
自动化部署
当版本准备好分发时,它们将经历部署流程。根据项目的不同,部署可能会产生各种结果。例如,Web 项目部署到可公开访问的 Web 服务器上。在此部署期间,在构建阶段生成的构件将复制到 Web 服务器上。移动设备和台式机的部署流程各不相同,可能涉及上传到“商店”,因此用户可以下载应用。
持续集成工具比较
1. Bitbucket Pipelines
摘要:Bitbucket Pipelines 是一款直接集成到 Atlassian 提供的云版本控制系统 Bitbucket 中的 CI 工具。如果您的项目已经在 Bitbucket 上,Bitbucket Pipelines 是启用 CI 的简单下一步。Bitbucket Pipelines 作为代码进行管理,因此您可以轻松提交管道定义并启动构建。Bitbucket Pipelines 还提供 CD。这意味着使用 Bitbucket Pipelines 构建的项目也可以部署到生产基础架构
功能:
- 轻松设置和配置
- 统一的 Bitbucket 体验
- 第三方云端
2. Jenkins
摘要:Jenkins 是一款资深的 CI 工具,有着长期的良好记录。它是开源的,由社区更新驱动。Jenkins 主要用于本地安装。当您的组织需要本地支持来处理敏感客户(例如 HIPAA 合规数据)时,Jenkins 是一个不错的选择。
功能:
- 本地
- 开源
- 强大的附加项/插件生态系统
3. AWS CodePipeline
摘要:Amazon Web Services 是市场上最主要的云基础架构提供商之一。它们为各种基础架构和代码开发任务提供工具和服务。CodePipeline 是他们的 CI 工具产品。CodePipeline 可以直接与其他现有的 AWS 工具交互,提供无缝的 AWS 体验。
功能:
- 完全云端
- 与 Amazon Web Services 集成
- 自定义插件支持
- 强大的访问控制
网站:https://aws.amazon.com/codepipeline/
4. CircleCI
摘要:CircleCI 是 CI 工具,它与最受欢迎的版本控制系统云托管工具之一 Github 完美配对。CircleCI 是最灵活的 CI 工具之一,因为它支持版本控制系统、容器系统和交付机制矩阵。CircleCI 可以在本地托管,也可以通过云产品使用。
功能:
- 来自 CI 事件的通知触发器
- 性能经过优化,可快速构建
- 通过 SSH 和本地构建轻松调试
- 用于衡量版本性能的分析
5. Azure Pipelines
摘要:Azure 是微软的云基础架构平台,相当于 Amazon Web Services。与前面提到的 AWS CodePipeline 一样,Azure 提供了一款完全集成到 Azure 托管工具套件中的 CI 工具。
功能:
- Azure 平台集成
- Windows 平台支持
- 容器支持
- Github 集成
网站:https://azure.microsoft.com
6. GitLab
摘要:Gitlab 是一款全新的 CI 工具,可提供完整的 DevOps 体验。Gitlab 的创建旨在改善 Github 的整体体验。Gitlab 提供支持容器的现代用户体验。
功能:
- 本地或云托管
- 持续的安全测试
- 易于学习的用户体验
7. Atlassian Bamboo
摘要:Atlassian 推出的另一款 CI 产品。Bitbucket Pipelines 纯粹是云托管选项,而 Bamboo 则提供了自托管的替代方案。
功能:
- 与 Atlassian 产品套件的最佳集成
- 附加选项和插件的广阔市场
- 使用 Docker 代理来支持容器
- 用于 IFTTT 功能的触发 API
网站:https://www.atlassian.com/software/bamboo
什么是最适合您的公司的 CI 工具?
为团队选择 CI 工具时,需要考虑几个重要的决策因素。
版本控制系统支持
CI/CD 系统的核心支柱是底层版本控制系统 (VCS) 的支持和集成。最热门的 VCS 是 Git、Subversion、Mercurial 和 Perforce。云 CI 工具可能为部分或全部 VCS 提供支持。选择能为您的项目 VCS 提供支持的 CI 工具至关重要。
本地与云
前面提到的一些 CI 工具(例如 Jenkins)可以安装在本地。这意味着您的团队负责在自己的基础架构上配置和管理 CI 系统。出于隐私和安全原因,这可能是有益的。例如,如果您有客户数据隐私问题需要满足合规标准,则可能需要在内部部署。此外,本地实例可以提供更深入的自定义和配置选项。
本地部署可能是额外的工作,不符合您的核心业务需求。云选项将 CI 工具的管理外包给第三方供应商。然后,云托管公司负责处理 CI 工具的正常运行时间、支持和扩展,让您的团队能够专注于核心业务需求。对于预算紧张的团队或需要积极关注产品市场契合度目标的小型公司来说,这大有裨益。
容器支持
容器化是现代软件发展趋势。容器化允许分发应用的不可变、可重复、隔离的副本。容器化是通过 Docker 和 Kubernetes 等工具实现的。现代 CI 工具将为将容器集成到 CI/CD 流程提供支持。容器解决了“在我的计算机上工作”的问题。确保将应用代码打包在系统级依赖关系的冻结快照中。这可以保证,当您的团队的代码在 CI 工具上执行时,它是本地环境的复制品。这消除了在没有容器的情况下出现的一整类环境奇偶校验故障排除问题。
插件和第三方集成
通过与您的技术堆栈的其余部分集成,CI 工具会变得更加有用。有关工程团队效率和绩效的分析可以从 CI 工具中收集。冲刺计划应用可以绑定到 CI 工具,以便在代码交付后自动更新冲刺状态。这些集成可用于指导工程团队 KPI 和路线图。
CI 入门
分享这篇文章
下一个主题
推荐阅读
将这些资源加入书签,以了解 DevOps 团队的类型,或获取 Atlassian 关于 DevOps 的持续更新。