持续集成 ci/cd
云和
持续集成
(CI)是天生的匹配。 尽管云使我们摆脱了安装和维护物理服务器的痛苦,但持续集成可以自动消除构建,测试和部署代码的痛苦。 如果两家公司都希望把工作从开发团队的肩膀上解放出来,那么只有将它们结合起来并一步一步消除更多的麻烦才有意义。
持续集成服务很多,它们至少在抽象的意义上都做同样的事情。 它们以一系列任务(例如编译或测试)开头,这些任务必须被完成,才能使全世界都知道您的新软件的天赋。 在提交代码行时,这些工具将开始通过清单运行,直到遇到障碍。 如果没有障碍,每个人都会高兴。
任何人都可以将持续集成用于任何软件开发项目,但是团队,尤其是从事相同,互锁的代码块的大型团队,可以享受到最大的优势。 持续集成的最彻底的实现是在测试和重新测试代码之前,先构建和重建代码,所有这些都是在寻找新的错误和不兼容之处,这些错误和不兼容可能是由于不同的团队成员检入他们的代码而造成的。 持续集成服务器同步所有程序员的工作,并帮助团队发现任何问题。
CI服务器的一些任务列表以测试结束,但是最近越来越多的团队正在扩展列表,以包括新代码的部署,该过程有时被称为“连续部署”。 完全自动化的部署使某些人感到紧张,他们通常会在此过程中添加一些手动暂停。 再加上一点责任感和人为保证,他们就会有所放松。 他们将这种混合方法称为“连续交付”,因为它将代码交付给一些暂存或测试集群,在此它将等待人工最终投入生产。
如果持续集成在大厅的服务器机房中非常重要,那么在云中可能会更好,因为云中有很多机会可以更快地交付和提高效率。 在最佳情况下,云可以拆分工作并并行运行任务。 服务从大量的硬件开始,然后在许多团队之间共享。 只要每个人都不要同时推送他们的代码,构建和测试就会运行得更快。 在开发人员希望运行所有测试的那一刻,购买相同的大型硬件机架是令人望而却步的,但是如果团队共享机架,他们所有人都可以享受速度的飞速增长。
但是,这里有危险和忧虑,最大的是失去控制。 所有云服务都需要将您的代码移交给第三方,这种选择可能会让某些人感到解放,但对其他人却感到恐惧。 所有云服务都在努力强调安全性,但是当代码在您自己的屋檐下时,感觉会有所不同。
除了对所有主要语言的广泛支持之外,这些服务还覆盖了令人惊讶的少数几种次要语言,还覆盖了一些真正的奇特和不寻常的语言。 这比起初开发人员的任何英勇努力更多地是因为一开始就做出了良好的架构决策。 任务列表几乎总是被编码为某些Shell或命令行的命令,因此,持续集成工具几乎会不断发出命令,直到列表用尽或出现一些无法克服的障碍。 诸如Java之类的某些语言提供了更复杂的选项,但是在大多数情况下,这些工具可以完成您可以使用命令行完成的所有操作。
这是在云中进行持续集成的10个不同选项。
云蜂
CloudBees Core
从著名的开源项目Jenkins开始进行持续集成,然后添加了测试,支持和一定的保证,这些代码将立即运行。 该公司淘汰了所有实验性插件,添加了一些自己的插件,然后完善了正确的插件,以便在您需要它们时可以按预期工作。
CloudBees仍然拥有Jenkins开发团队的80%,他们经常为开源项目贡献代码,因此您可以确保他们对这个主流平台有很好的了解。 为了加快速度,CloudBees还添加了广泛的并行化以及用于跟踪您的开发过程的工具。
CloudBees提供各种价格点,从全年免费服务到“入门套件”。 该公司还向需要该工具帮助但不需要或不需要云计算的任何人提供对Jenkins的支持。
AWS CodePipeline
Amazon的用于持续集成和部署的工具
AWS CodePipeline
已进行了优化,可将代码交付到AWS服务器,同时仍可为您的代码和数据提供更详尽的途径。 基本工具为主要语言(Java,Python,Node.js,Ruby,Go,Android,.Net Core for Linux)提供了不错的预配置构建环境选择,然后在将结果发送之前将其转储到S3存储桶中转到服务器开始运行。
令人惊讶的是,数量众多的图层名称略有不同。
CodeBuild
从抓住你的最新天才
CodeCommit
当它是由CodePipeline再动手触发了结果
CodeDeploy
。 如果您要配置的代码太多,则可以直接跳至
CodeStar
,它提供了另一层自动化功能。 如果只有CodeBugEraserStar,它也可以自动消除所有错误。 值得注意的是,从技术上讲,您无需为任何这些代码层付费。 Amazon仅向您收取沿途使用的计算和存储资源的费用。 尽管确实感觉像,它也不是完全免费的。
位桶管道
Atlassian是受欢迎的工作跟踪委员会Jira和代码存储库Bitbucket的开发人员,他们决定通过创建
Bitbucket Pipelines
(
Bitbucket云中
的持续集成工具)来利用他们对我们工作流程的控制权。 秘密之处在于集成度更高,在这种情况下,构建机制与Atlassian其他工具之间的连接形式更加紧密。 至少从表面上看,管道甚至不是独立的东西。 它只是Bitbucket中每个项目的另一个菜单选项。 另一个菜单选项指向部署,让您选择构建的最终位置。
这些联系是福气,也是一种限制。 如果选择已经为主要语言(Java,JavaScript,Python,PHP,.Net等)定义的模板之一,则只需单击几下即可构建和部署代码。 但是,如果您偏离标准,就会开始发现这些选项不存在。 Atlassian确实鼓励应用程序
市场的发展
,这些应用程序似乎是图表和网络挂钩混合到其他服务中的。 在我写这篇文章时,图表上的顶级应用程序将Bitbucket与Jenkins连接起来,大概是在墙内快速完成的某件事。
管道的主要优点是速度。 Atlassian已经预先设计了从代码到正在运行的部署的大多数主要途径,您只需花几美元就可以跟随公司的脚步。 很难比较使用Bitbucket的成本,因为与大多数无服务器模型一样,这些构建都是按分钟计价的,但是团队通常会专用一堆实例来处理Jenkins构建。 即使您在晚上和周末关闭它们,时间也会累加。
亚搏体育app CI / CD
Atlassian的最大竞争对手之一是
GitLab
,这是另一家希望处理您的手指与运行部署之间的每个步骤的公司。 GitLab的构建,测试和部署机制同样直接连接到其Git存储库,因此可以在承诺时触发它们。 该过程主要围绕Docker容器构建,并且这种缓存可以大大简化一些围绕Jenkins构建必须完成的配置工作。
构建任务可以针对任何语言,但是必须由GitLab Runner触发,该工具是一种用Go语言编写的自动缩放工具,适用于大多数平台。 这种灵活性意味着您可以在其他计算机上触发任何随机作业,这对于精心设计的架构可能会有用,而这些架构所要做的不仅仅是提供微服务。
定价与各个级别捆绑在一起,以近似需求。 举例来说,金牌集团拥有所有最佳功能,例如安全仪表板和在共享计算机集群上构建50,000分钟。 将自己的机器用于部分流程或在其他一些云中的单独实例是免费的。
CircleCI
许多持续集成工具专注于可以在Linux环境中构建的代码。
CircleCI
在Linux世界中构建和交付,但它还提供了一个产品,该产品将构建Android应用程序以及Apple Xcode(适用于iOS,MacOS,tvOS或watchOS)中的所有内容。 如果您正在为这些平台开发应用程序的团队中工作,则可以提交您的代码,并让CircleCI对团队中所有不同的才智强制执行一些测试纪律。
任务列表在YAML文件中详细说明。 CircleCI在其所有的多层荣耀中都使用Docker来配置代码的测试环境。 构建从新容器开始,所有测试也是如此。 Mac工作在寿命较短的虚拟机中运行。 这避免了配置方面的一些问题,因为干净的环境中没有任何剩余的位。 (因此,如果您的问题是由于数字浮游物挥之不去引起的,那是您的错。)
价格集中在您的构建消耗多少CPU上。 用户数量和存储库数量上限为无穷大。 但是,对构建分钟数和进行此构建的容器进行计量。 第一个容器是免费的,您可以在其中运行一个构建。 如果您想要更多的并行性或更大的吞吐量,CircleCI可以赚钱。 Mac用户无法获得相同的免费优惠,但是有任何人可以试用该服务的入门计划。
特拉维斯CI
如果生成的代码需要在Windows机器上进行测试,那么
Travis CI
可以为您提供一站式服务。 该公司已经提供了MacOS和Linux选项一段时间,但是刚刚推出了Windows选项,这使得生成可在更多地方运行的代码更加简单。
任务列表也用YAML阐明,并且作业在具有相当标准配置的干净虚拟机中运行。 Linux代码获得了一些基本的Ubuntu版本,Mac代码则在OS X,Xcode和JDK的十几种组合中运行。 Windows代码目前只能在Windows Server(1803)的一个版本中结束。 Travis CI提供了一长串的30种语言和构建规则,这些语言已经预先配置并且可以立即运行。
定价基于一次可以执行多少个并发作业,但是这些构建所占用的分钟数没有正式的限制。 就像您为工作获得固定数量的专用实例一样,它们一直准备就绪。 专有工作没有免费的选择,但是开源项目“总是免费的”,因此这可能是试用Travis CI的最简单方法。
Azure管道
如果您想知道现代的Microsoft是否具有“不在这里发明”的态度,那就不要错过
Azure Pipelines
。 销售文献说:“任何语言,任何平台。” 尽管几乎可以肯定这有点夸张,Azure可能没有太多可提供给ENIAC程序员,但它确实为代码提供了Microsoft,Linux和MacOS路径。 苹果专区仅针对MacOS构建,而不针对iOS或tvOS或watchOS,但不要挑剔。 这是一个装满一半以上的杯子。
概括而言,该系统与其他系统相似。 有些代理程序会执行构建以生成工件。 如果该选项有用,则其中一些可以自行托管。 堆栈完全包含Docker容器,Azure的硬件随时可以为您运行它们。 可以与内置在网页中的可视设计器一起单击所有这些详细信息,或者,如果您更喜欢生活在命令行世界中,则可以使用YAML进行指定。
定价包含1800分钟的免费构建时间。 如果您想要更多的并行性或更多的构建时间,则可以开始付出代价。 该计划包括一个开放源码项目的免费层级,再次强调了微软希望加入通用开放源码社区的意愿。 但是,如果微软打算
斥资75亿美元
通过收购GitHub来购买席位,那是很有意义的。 所有这些代码将在哪里运行? Azure Pipelines将很乐意将其平稳地迁移到Azure硬件。
持续集成 ci/cd