本文共 3592 字,大约阅读时间需要 11 分钟。
虽然云平台的到来让开发者免于安装和维护物理服务器,但测试和部署代码过程依旧需要人为完成,持续集成可以自动消除构建、测试和部署代码的大部分痛苦。如果希望最大限度提高效率,持续集成和交付工具是最好的选择。
实际上,所有开发者都可在软件开发中使用CI/CD,但团队使用可以获得更大优势,尤其是大型团队,因为他们通常在处理相同的互锁代码块。持续集成最全面的实现是在测试之前构建代码,寻找未被发现的错误和不兼容问题,这些可能是由不同的团队成员写入代码时创建的,持续集成服务器可以同步所有程序员的工作,并帮助团队检测所有问题。
虽然CI/CD热度不退,但完全自动化的部署方式会让团队管理者感到不踏实,因此很多团队习惯在此过程中添加一些手动暂停,并增加问责制和其他保证代码在可控范围内的规则,这种混合方法被称为持续交付,因为它将代码提供给某一阶段或测试集群,并等待开发者最终推向生产。
如果在服务器机房中持续集成非常好,那么在云中可以实现更快交付和更高效率。在最好的情况下,云可以拆分任务并行运行。服务从大量硬件开始,然后在许多团队之间共享,只要所有人不同时推送代码,构建和测试将运行得很快。
或许,唯一令团队担心的问题就是失去控制。所有云服务都需要将代码交给第三方,这种选择可能让某些人感到不自由。即便所有的云服务都在努力强调安全性,但依旧让人担心。以下是在云中进行持续集成的10种不同选项,可以帮助开发者更好得适应这一过程。
CloudBees核心源自Jenkins,这是著名的持续集成开源项目,添加了测试支持以及代码运行保证。该公司将所有实验插件清理干净,添加了一些自研实验插件,然后打磨正确以便在需要时如期工作。
CloudBees雇用了80%的Jenkins开发团队,为开源项目贡献代码,因此可以确信他们对这个平台有很好的理解。为了加快速度,CloudBees还添加了大量并行化工具跟踪开发过程。
CloudBees提供各种价位,从免费到入门套件和全年服务,并为需要该工具但不需要云计算的开发者提供Jenkins支持。
亚马逊用于持续集成和部署的工具AWS CodePipeline经过优化,可以将代码交付给AWS服务器,同时为代码和数据提供更复杂的路径。基本工具为主要编程语言(Java,Python,Node.js,Ruby,Go,Android,.Net Core for Linux)提供了一个很好的预配置构建环境,发送之前将结果转储到S3中并关闭服务器就可以开始运行。
CodeBuild在CodePipe由CodePipeline触发时从CodeCommit中获取最新结果,并将其交给CodeDeploy。如果需要配置大量Code代码,可以直接跳到CodeStar,这提供了另一层面的自动化。在技术上并不需要支付任何代码层费用,亚马逊收取的费用主要是沿途使用的计算和存储资源。
Atlassian是流行的Jira和代码库Bitbucket背后的公司,决定创建Bitbucket Pipelines(Bitbucket云中的持续集成工具)以包括更多集成。构建机制和Atlassian其他工具之间的连接形式成为重点,因此这只作为Bitbucket中项目的一个选项,另一个选项指向部署。
如果开发者选择为主要语言(Java,JavaScript,Python,PHP,.Net等)定义的模板,则只需单击几下即可构建和部署代码,除此之外的选项不存在。Atlassian确实鼓励一个似乎是图表和webhook混合到其他服务的应用程序市场。在我写这篇文章时,图表上的顶级应用程序会将Bitbucket与Jenkins连接起来,大概是为了做一些无法在墙内快速完成的事情。
Pipelines的主要优点是速度,Atlassian已预先设计从代码到运行部署的大多数主要途径,只需花费几美元就可以使用。很难比较使用Bitbucket的成本,因为构建只需几分钟,就像大多数无服务器模型一样,团队通常会使用一组实例来处理Jenkins构建。
Atlassian最大的竞争对手之一是GitLab。GitLab的构建,测试和部署机制同样直接连接到其Git存储库,因此可以根据规则触发。该过程主要围绕Docker容器构建,可以大大简化围绕Jenkins构建必须完成的一些配置工作。
构建任务可以针对任何语言,但必须由GitLab Runner触发,GitLab Runner是一个用Go编写的自动缩放工具,适用于大多数平台。这种灵活性意味着可以在其他计算机上触发任何任务,这对于精心设计的架构而言可能非常有用,这些架构不仅仅提供微服务。
定价与级别捆绑在一起以满足需求,最高级别可以获得最佳功能,比如安全仪表板和在共享机器集群上构建50,000分钟,部分流程中使用自己的计算机或在其他云中使用单独的实例是免费的。
许多持续集成工具专注于在Linux环境中构建代码。CircleCI既可在Linux环境中构建和提供,也可以构建Android应用程序以及Xcode(适用于iOS,MacOS,tvOS或watchOS)。
CircleCI使用Docker,在其所有层次中为代码配置测试环境。构建从新容器开始,所有测试也是如此,Mac工作在类似的虚拟机中,避免了配置中的一些问题。
定价主要集中在构建的CPU数量上。用户数和存储库数量上限为无穷大,但构建分钟数和容器数是计量的。第一个容器是免费的,可以在其中运行一个构建,如果想要更多并行性或更高吞吐量,需要收费。
如果构建需要在Windows机器上测试的代码,那么Travis CI可以提供一站式服务。该公司已经提供了一段时间的MacOS和Linux选项,刚刚推出Windows选项,让生成更多代码变得更加简单。
目前,Linux代码支持Ubuntu基本版本,Mac代码以OS X,Xcode和JDK的十几种组合之一运行。Windows代码只支持一个版本的Windows Server(1803)。Travis CI提供30多种语言支持列表,并构建预先配置且可以运行的规则。
定价基于一次执行的并发任务数,但这些构建可以占用的分钟数没有正式限制。定制化工作没有免费选项,但开源项目永远免费,这可能是尝试Travis CI最简单的方法。
虽然,Azure可能没有太多提供ENIAC程序员,但确实为代码提供Microsoft、Linux和MacOS路径。该堆栈包含Docker容器和Azure硬件。如果更喜欢命令行,则可以使用YAML指定。
有免费并行任务试用,1800分钟的构建时间。如果想要更多的并行性或更多构建时间则需要付费。
使用持续集成工具时,配置任务列表通常是最大的挑战。CodeShip在两个服务级别采用两种不同的方法。基础版本计划包括大量自动化和预配置以及图形用户界面,用于设置任务的大致轮廓。高级版本允许配置和用于定义构建环境的Docker容器,可以选择将多少个构建专用于任务以及可能的配置。
基础版本提供免费套餐,包括一台构建机器,无限制项目和人员,但每月只有100个构建。如果超过100个项目,并希望在一个月内完成所有项目,则需要付费。一旦付费,就没有构建数量或者花费多少时间的上限,只需选择构建和测试即可处理任务。
以上大多数工具集中在编排从存储库到部署的代码流,Sauce Labs则专注于测试。基于云的服务提供了各种各样的组合,以确保一切正常。如果想在Windows 10上运行的Firefox 58上进行测试,或者在MacOS上的Firefox 56,只要选择Java,Node,Ruby或PHP等其中之一,测试脚本就可以用选择的语言编写,云将并行定位每个处理器。 Sauce Labs专门将测试与其他CI工具或管道集成,因此可以在本地运行Jenkins,然后将测试委托给Sauce Labs。
在云中启动持续集成最简单的方法之一是租用服务器实例并启动Jenkins或Hudson。二者很久以前就开始用作测试Java代码的程序,当开发人员和Oracle之间出现争议时,其分成了两个阵营,开发人员需要认真查看开源许可。
虽然Jenkins和Hudson可能已经开始作为构建Java项目的工具,但其早已超越这个利基市场,并可处理几乎所有语言,有数千个插件来处理构建、打包、测试和部署。代码是开源的,因此使用时不需要额外付费,只需支付服务器费用和配置时间。
参考链接:
转载地址:http://unzox.baihongyu.com/