用对工具,CI事半功倍

Hi!我们是DevSecOps研发安全运营解决方案提供商、Atlassian全球白金合作伙伴——龙智。在过去的十多年间,传统软件研发模式发生巨变,从瀑布式开发到敏捷再到DevOps,开发和运维之间曾经明确的界限正在慢慢变得模糊。

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

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

用对工具,CI事半功倍_第1张图片

支撑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邮箱:[email protected]

你可能感兴趣的:(ci)