写点什么

用对工具,CI 事半功倍

  • 2022 年 7 月 15 日
  • 本文字数:4070 字

    阅读完需:约 13 分钟

用对工具,CI事半功倍

Hi!我们是DevSecOps研发安全运营解决方案提供商、Atlassian全球白金合作伙伴——龙智

。在过去的十多年间,传统软件研发模式发生巨变,从瀑布式开发到敏捷再到 DevOps,开发和运维之间曾经明确的界限正在慢慢变得模糊。


DevOps 由于能够促进开发、运维、测试等不同部门的沟通、协作与整合,正在悄然成为软件研发运营主流趋势。发展至今,DevOps 也结合了新的流程,比如持续集成和持续部署来快速交付价值。


如果您对 DevOps 还知之甚少,或是想要更深入地了解 DevOps 工具链,请不要错过本系列文章。龙智将从 DevOps 的概念、DevOps 工具链、CI 及工具对比、DevOps 监控、DevSecOps 五个方面入手,让您从起源开始,逐步深入了解 DevOps 这个已流行数十年的方法论。


支撑 CI 的基础


CI(Continuous integration 持续集成,下⽂均简称为 CI)建⽴在敏捷和 DevOps 软件开发最佳实践之上,其通过 Pipeline 实现⾃动化测试、版本控制、⾃动化构建和⾃动化部署。支撑 CI 的每⼀个基础都有着⾃⼰的⼯具和理念⽣态系统。软件开发⼯具提供商已经开始提供完整的 CI 即服务(CI-as-a-service)产品,这些产品将支撑 CI 的基础都捆绑到⼀个整体的包中。为了让您更好地理解捆绑产品,让我们回顾⼀下 CI 的基础。


源代码控制版本管理


CI 最重要的基础是 Pipeline,它从获取源代码到完成部署,连接并管理着版本控制系统,测试管理系统,编译构建系统等诸多不同⽬的的⼯具,⽤于沟通和解决在同⼀代码库中⼯作的多个开发⼈员之间的编辑冲突。各种各样的⼯具都提供了源代码版本与配置管理功能,其中,最流行的有 Perforce Helix Core、Git 和 Subversion。CI 即服务产品是以版本控制系统为中心的。


Subversion 作为第⼆代版本控制管理系统,其采⽤的虽然是集中式的版本管理,且仅具有基本合并功能,但其通过元数据管理版本的⽅式相当易于理解和管理,作为⼀名⽼将,⾄今仍活跃在众多较为小型的开发项⽬当中。


Git 是典型的第三代分布式版本控制管理系统,它具有所有 DVCS 的优点,让您可以随时随地提交您的构想与实践。其灵活多样的分⽀策略是众多不同规模开发团队采⽤它的重要原因,但当许多开发人员同时使用 Git 时,性能和生产效率会下降。


Perforce Helix Core 是⼀款⾼效灵活的版本控制软件,它具有集中式或分布式等多种部署样态,可管理大型且复杂的二进制文件。其强⼤的压缩传输与⽂件级别的超细颗粒度权限管理,能给企业带来安全,快速的使⽤体验。


自动化测试


大多数软件项目都包含一个额外的代码库,此代码库并不明确地负责业务产品和功能。这个次要的代码库是一个测试套件,充当一组断言,确保主要代码库在没有错误的情况下正确工作。在开发过程中,这些测试由开发人员运行,用来验证新代码没有对现有功能造成任何回归。


这些测试用例也可以通过无关的工具来运行,以自动化这个验证过程。CI 服务产品将针对用户指定的事件,自动运行项目的测试用例。通常,当开发人员使用版本控制系统推送代码时,一个事件将会触发整个测试套件自动运行。


Bitbucket Pipeline 是 Atlassian 为 Bitbucket Cloud 产品添加的⼀个重要功能,为了构建强⼤的⾃动化⼯作流程。借助 Bitbucket Pipeline,可⾃动执⾏测试。Bitbucket Pipeline 使⽤配置即代码来管理和配置基础架构,并与 Jira 紧密集成。


如果您使⽤的是 Bitbucket 本地部署的 Server 版或 Data Center 版,那么可以通过 Bamboo 来进⾏⾃动化测试。它⽆缝集成 Jira 和 Bitbucket 服务器,带有内置的 Git 分⽀和⼯作流,可以帮助你根据分⽀名称⾃动检测、构建、测试分⽀并合并到(准备或⽣产)服务器。


不仅是 Bitbucket 和 Bamboo,Jira 还集成了许多测试用例管理工具,可以帮助您进行自动化测试,例如 Xray、Zephyr、TestRail 等。


Xray 支持多种自动化测试框架,利用自动化脚本的触发功能,真正实现自动化测试,将 DevOps 的能力提高一个层次。


Zephyr 支持将测试添加到计划、开发、缺陷跟踪和报告过程中,全部在 Jira 内管理。


TestRail 是基于 Web 的测试管理工具,可用于管理、跟踪和组织软件测试工作。它遵循集中的测试管理概念,有助于轻松沟通,并能够跨 QA 团队进行快速开发任务。


自动化构建 


“构建”是为软件项目的当前发布版本创建快照的制品。构建通过各种网络分发给最终用户。项目通常会采取一组脚本化的步骤来创建构建制品。CI 工具通过使用来自版本控制系统的自动触发器,来帮助简化此构建过程。一个示例触发器是当新代码合并到代码库的生产分支时,将构建文件上传到远程服务器以供用户下载。


您可以使⽤Bitbucket Pipeline 来进⾏⾃动化构建。它将在一个 bitbucket-pipelines.yml 文件中存储和管理您的构建配置,只需 7 行代码即可开始使用。


同样的,如果您使用 Bitbucket 的 Server 版或 DC 版,Bamboo 支持创建多阶段构建计划、设置触发器以在提交时开始构建,并将代理分配给关键的构建和部署。


自动化部署


当构建准备好分发时,它们要经过一个部署过程。根据项目部署的不同,可能会有多种结果。例如,web 项目被部署到公开可访问的 web 服务器上。在此部署期间,在构建阶段生成的制品将复制到 web 服务器上。移动端和桌面端的部署过程各不相同,可能需要上传至“应用商店”,以便用户下载应用程序。


在 Bitbucket Pipeline 中管理部署很轻松,它使部署具有可⻅性,并能跟踪和预览部署情况。


本地部署可以使用 Bamboo,单调乏味的部署项目将会自动发布到每个环境中,同时让您能够使用按环境授予的权限来控制流程。


CI 工具比较


Bitbucket Pipeline


简介:Bitbucket Pipeline 是由 Atlassian 提供的云版本控制系统,它是⼀款直接集成到 Bitbucket 中的 CI/CD⼯具。如果你的项⽬已经提交到 Bitbucket 上了,那么 Bitbucket Pipeline 将是开启 CI 的⼀个简单步骤。Bitbucket Pipeline 脚本作为配置既代码的实践,您可以很容易地执⾏当前版本中的 Pipeline 脚本来开始构建。此外,Bitbucket Pipeline 还提供 CD(持续交付),这意味着使⽤Bitbucket Pipeline 构建的项⽬也可以通过脚本来部署到软件开发⽣命周期环节中的各种环境中去。了解更多...


特点:

  • 简单的配置

  • 统一的 Bitbucket 体验

  • 云托管,减少运维开销


Jenkins


简介:Jenkins 是⼀个被⼴泛使⽤的⽼牌 CI/CD⼯具。它是开源的,由社区更新驱动。Jenkins 是本地部署的。当您的企业需要本地⽀持来处理 HIPAA 合规性数据等敏感客户时,Jenkins 是⼀个很好的选择。了解更多...


特点:

  • 本地部署

  • 开源

  • 强大的插件生态系统

Atlassian Bamboo


简介:Atlassian 的另⼀款 CI/CD 产品。Bitbucket Pipeline 纯粹是云托管选项,⽽Bamboo 提供了⼀个⾃托管的替代⽅案。了解更多...


特点:

  • 与 Atlassian 产品套件的最佳集成

  • 一个扩展的附加组件和插件市场

  • Docker 代理的容器支持

  • 触发 IFTTT 功能的 API

CloudBees CI


简介:CloudBees CI 相当于 Jenkins 企业版,同时也是 Jenkins 的重要贡献者,其团队贡献了 Jenkins 中 80%以上的代码。CloudBees 为企业提供灵活、可管控、可扩展的 CI,让开发者拥有灵活性的同时,实现大规模、可视化的集中管理。了解更多...


特点:

  • 建立在 Jenkins 上

  • 大规模的集中管理 Jenkins 实例

  • 开发者拥有灵活性

  • 跟踪控制插件

  • 基于角色的权限控制管理


什么样的才是适合公司的 CI 工具?


在为团队选择 CI 工具时,有几个重要的决策因素需要考虑。


版本控制系统支持


CI/CD 系统的核心支柱是底层版本控制系统(VCS)的支持和集成。最受欢迎的版本控制是 Perforce Helix Core、Git、Subversion 和 Mercurial。云 CI 工具可以为这些 VCS 中的部分或全部提供支持。选择一个为您的项目 VCS 提供支持的 CI 工具是至关重要的。


本地部署 vs.云端部署


前面提到的一些 CI 工具,如 Bamboo、Bitbucket、CloudBees、Jenkins,都可以部署在本地。这意味着您的团队负责在您自己的基础设施上配置和管理 CI 系统,并且本地部署可供二次开发的程度高,方便且不受限,还可提供深入的配置选项。


如果本地部署不是您核心业务需求,而是一个额外工作,那么您还有云这个选项。云将 CI 工具的管理外包给第三方供应商,由云托管公司处理正常运行时间、支持和 CI 工具的扩展,让您的团队专注于核心业务需求。这对于预算紧张的团队或需要积极关注产品市场匹配目标的小公司来说,云端部署是一个不错的选择。


对应用容器化的支持


容器化是现代软件发展的趋势。容器化支持分发应用程序不可变、可重复、隔离的副本。Docker 和 Kubernetes 等工具支持容器化。现代 CI 工具支持将容器集成到 CI/CD 过程中。


容器解决了“在我的电脑上工作”这个问题,并确保应用程序代码打包在系统级依赖项的冻结快照中。这保证了当您的团队的代码在 CI 工具上执行时,它是本地环境的复制品。容器解决了在没有容器的情况下出现的整个环境奇偶性故障排除问题。


插件和第三方集成


当与其他其他技术堆栈集成在一起时,CI 工具将变得更加有用。关于工程师团队效率和绩效的分析,可以从 CI 工具中收集。Sprint 计划应用程序可以绑定到 CI 工具,以便在代码交付后自动更新 Sprint 状态。这些集成可以用于指导工程团队的 KPI 和路线图。


开始使用 CI


现代的 CI 工具是实现高性能工程团队的关键需求。工程师团队可以通过使用 CI 工具来优化他们的沟通和交付速度。市场上有许多流行的 CI 工具,在选择 CI 工具时,需要考虑的主要概念是版本控制系统支持、本地部署与云托管、部署管道和外部应用程序集成。


无论您喜欢使用什么 CI 工具,都可以集成到 Atlassian Open DevOps 中。Cloudbees、Jenkins、Xray...Atlassian 让您可以自由选择熟悉的、喜爱的工具,最大限度提升团队效率。


龙智延续 Atlassian open DevOps 开放的理念,引入更多全球领先工具,包括Helix Core, Whitesource, Sonarqube等,为企业量身定制DevSecOps解决方案


并且,龙智作为 Atlassian 全球白金合作伙伴,为帮助释放及拓展 Atlassian 工具的力量,也自主开发了多款 Atlassian 插件,更适合本土企业使用。包括Jira工时管理插件(TimeWise for Jira)Confluence水印插件(Watermark for Confuence)Jira工作流扩展和并行审批插件(WorkflowWise for Jira)等,欢迎咨询试用。


文章来源:本文编译摘录自 Atlassian 文章《Continuous integration tools》,作者为 MAX REHKOPF,有删改。


想了解更多 Atlassian DevOps 解决方案、工具及客户案例?欢迎您立即咨询Atlassian全球白金合作伙伴—龙智

电话:400-775-5506

邮箱:marketing@shdsd.com

用户头像

还未添加个人签名 2021.05.18 加入

还未添加个人简介

评论

发布
暂无评论
用对工具,CI事半功倍_ci_龙智—DevSecOps解决方案_InfoQ写作社区