此页面将引导您完成一切有了解持续集成。我们将介绍持续集成,持续部署,并连续交付之间的一些细小的差别,说明使用情况和最佳做法沿途自动化建设和软件的测试。


什么是持续集成?

持续集成(CI)是一种软件开发战略,提高发展的速度,同时保证了代码,部署团队的质量。118金宝博娱乐城开发商不断(每日至少,甚至一天几次)提交以小的增量代码,这之前它与共享存储库合并,然后自动构建和测试。

持续集成:概述

  • 每个开发人员每天犯,甚至更多的时候,到一个共享的主线代码库
  • 每个提交触发代码库的自动构建和测试
  • 如果编译或任何测试失败,它很快修复 - 通常在几分钟内

持续集成工程手牵手与敏捷方法。团队成员增量“故事”工作,为这些软件修改的代码是一天逐渐合并到共享软件资源库多次。

持续集成可以用于多种类型的软件项目。例如,我们使用持续集成用于更新CircleCI网站:

  1. 开发人员或内容发布者在GitHub中创建一个新的代码分支,更新页面上的HTML,然后提交更改。

  2. 当开发者已经完成了所有在特定分支的变化,他们再建立在GitHub上拉请求。

  3. GitHub上集成了CircleCI。CircleCI上运行该代码的构建过程,然后运行自动化测试脚本。

  4. 如果CircleCI遇到任何错误(构建状态为红色),将通过电子邮件通知开发人员。

  5. 否则,用户被告知构建成功(绿色)和代码已经被推到了临时服务器。这使得开发人员预览网页。

  6. 一旦经过验证,开发人员就可以将新的代码分支合并到产品中。


什么是持续集成,持续交付和持续部署的区别?


持续集成
自动化的建设和测试应用程序的每个新的提交。

持续交付
你的程序是随时准备的状态进行部署。手动步骤是需要实际部署该应用程序。

持续部署
构建,测试和部署的自动化。如果通过了所有测试,每一个新的承诺将贯穿整个开发流程推新代码来生产,没有人工干预。

持续交付和持续部署的区别的插图。的主要区别在于,连续递送需要手动干预来部署。持续部署是完全自动的。

相关文章:
持续交付由Martin Fowler
持续交付VS持续部署通过杰斯谦卑
持续部署由蒂莫西·菲茨
持续交付维基百科
什么是持续集成?通过列弗Lazinskiy
什么是持续部署,无论如何?劳拉Franzese
DevOps的简史,第三部分:自动化测试和持续集成通过阿列克夏尔马
DevOps的简史,第四部分:持续交付和持续部署通过阿列克夏尔马


持续集成(CI)与持续部署(CD)


持续集成自动化软件的构建和测试。持续部署是这种自动化的扩展,允许后每代码提交该经过测试套件要部署您的软件。最成功的开发团队通常会部署他们的软件。

软件开发过程包括三个主要的工作中心:

  1. 代码创建:这是软件开发团队是最有创意的。他们正在转向用户故事变成优雅的代码。

  2. 编制新代码为软件:这就是持续集成的核心所在。一旦开发人员提交代码,持续集成构建服务器将自动完成构建、测试和部署过程。

  3. 后勤:这是出货新的软件到生产的最后一步。在这个过程中显示器的这一部分工具和管理生产的软件。

在创建过程中最重要的工具是用来存放代码库。CircleCI集成了GitHub上和到位桶。我们的服务器解决方案还集成了GitHub的企业。金宝博娱乐官网网址

CircleCI住在工作的协调中心。它确实开启代码到工作软件的重任。用户配置代码是如何通过YAML文件处理。在YAML文件允许配置通过代码和几乎无限的可配置性,允许团队构建和测试他们的方式。

软件开发过程中的物流部分包括得到了测试和认可的代码投入生产。这包括设置,配置和生产服务器的管理。为了获得持续集成的全部优势,持续部署是必要的。


如何开始使用CI/CD


获得持续集成(CI)管道在你的应用程序的开发设立尽早这一点很重要。一旦测试添加到您的CI管道,你可以不断创新,有信心打造知道你不能合并代码掌握不通过你的测试。此外,发展持续部署的工作流程到您的CI管道提供调配的自动化。随着CircleCI,您可以自动化软件的构建,测试和部署您的工程师可以回去工作,建设功能,用户最关心的。

入门

  1. 确保每个人都在同一页上相对于你试图通过引入新的CI / CD工具来实现的。

  2. 总是从小事做起。不要试图让你的整个组织到模型中的DevOps团队过夜。相反,看到一队化妆过程中的变化,如果他们在组织内工作。如果你看到的改进,不断递增的移动。

  3. 为你做什么工作。要知道,DevOps的可能不是您的组织的解决方案。一些公司已成功为长时间不DevOps的,它可能不适合他们,因为他们的文化和他们的产品的需求。例如,如果保密是贵公司的产品战略的重要组成部分,然后逐步出货得到的反馈也不会为你工作,因为你需要保持在锁和钥188bet娱乐官网匙的所有产品的详细信息,直到一个大的启动。在这种环境下,这将是非常困难的建立一个DevOps的文化。

  4. 经常测量。在你开始任何改进计划之前,获取你当前所处位置的准确指标(例如,我们的开发周期需要X时间)。请在邀请站点可靠性工程师加入开发团队之前完成此工作。一段时间后,你就能看到它是否有效。举个例子:当许多敏捷转型发生时,许多公司采用了站立模式,却没有真正理解其中的原因,也没有衡量它是否对他们的团队产生了积极的影响。这可能浪费了比节省的时间更多的时间。

  5. 不要试图自动化一切。至少不会一下子。关于DevOps的一个误解是,所有的基础设施供应和配置管理必须自动完成。这被称为“基础设施代码。”但有些事情更好的工作时,他们都手册;自动化是不是所有的解决方案。有时候,你不得不开始手动的方式来弄清楚什么自动化的最佳解决方案实际上是。

持续集成不仅仅是实施新的工具。它是关于改变开发团队是如何工作的。这是一个新的思维方式。而且,在一个组织中进行文化的改变是不容易的。开始使用持续集成的最佳方式是从小处着手。

用你的下一个小项目作为一个概念证明,并得到以下基本到位:

  • 严格的检测实践,最理想的是采用自动化测试。
  • 统一的软件环境,从测试到生产。
  • 在持续集成实践方面的培训。
  • 报告衡量的关键指标。

一旦您的团队开始定期地、小步地提交,他们就会看到对bug做出响应是多么容易。而且,随着他们更快地解决bug,他们将更快地交付特性。这将给您的团队在整个组织中扩展持续集成的动力。


什么是最好的持续集成和持续部署(CI / CD)工具?


DevOps的是开发商和运营团队之间的一个非常具体的合作。118金宝博娱乐城在本质上,它表明你已经通过了文化发展的做法到您的基础设施和操作实践到您的开发周期。什么在实践中做到这一点是什么样子?这可能意味着维护基础设施的代码,或通过构建可重用的组件创建不变的基础设施,所以你可以撕掉向上或向下,只要你想,给你的版本控制和您所做更改的历史记录。这也意味着让所有的产品贡献者更关心他们的,如何工作的这是什么世界发挥作用的最终结果?如何与用户进行交互?让人们真正关心质量的手段关心双方的商业价值和可用性。这是真正的DevOps采纳的结果。

这种广泛的买入是特别困难的软件开发团队实现,因为它要求人们具有不同技能和行业专长,有很多合作。拉这一关既需要跨功能团队结构周到通信。For example, if an engineer needs to talk to someone on the business side about a database problem, they need to not just show the data they’re working from, but give necessary context and focus that person’s attention on what they should care about and why.

所以,你应该在这个新工具带来了什么?答案是:也许吧。工具有时似乎是一个速战速决,但他们不是一个放之四海而皆准的解决办法。你在一个新的DevOps工具带来的会增加你成功的机会之前,记住这些注意事项。最好的CI / CD工具是一个为你的团队的作品。

相关文章:
移动到DevOps的:你真的需要什么工具?到六月荣格
如何为你的团队带来一种新工具(并且不会在这个过程中被压扁)通过艾玛·韦伯
更新:CircleCI如何处理超过30万个建立通过抢劫Zuber


托管VS预置持续集成


我们可以在我们的云管理选项(SaaS)的主机持续集成,为您或您可以在您的私人基础设施在防火墙后面运行CircleCI。


我们监督的设置,安全性和维护你的持续集成实例(S),而我们提供的功能发布和自动升级减轻维护的需要即时访问。与GitHub的或到位桶授权,并从注册到绿色在几分钟内建立。

服务器
专用服务器上安装CircleCI你的团队建立和维护安全。这提供了完整的定制完整的系统管理员控制。您的团队确定更新节奏,以适应您的维护计划。


持续集成的好处


持续集成的基本原则很简单:承诺和经常每天至少集成代码。这样在软件开发过程中的小变化可产生巨大的效果。

利用这一发展战略,您可以:

  • 提高团队生产力和效率
  • 加速投放市场
  • 识别产品/市场契合
  • 发布质量更高,更稳定的产品
  • 提高客户满意度
  • 保持愉快的118金宝博娱乐城开发和运输码

如何将这些利益从工作流中的这样一个简单的变化累积?
当你提交更多的时候,你可以识别并解决合并冲突前,或完全避免。因此,而不是写千行代码,并发现错误时,你只写了一百个。在你的代码中发现的错误变成几分钟,而不是数小时的差事。这导致提高团队的工作效率,并帮助开发人员舰更快速地运行的代码。118金宝博娱乐城

航运新功能快速意味着增加你的速度推向市场。这使你的球队在两个关键方面的竞争优势:

  1. 您的客户越来越获得新功能的速度,从而提高客户满意度

  2. 贵公司越做188bet娱乐官网越于新的功能的投资回报快。而不是等待下一个里程碑版本的代码,你可以尽快作为一个新的特点是对市场作好创造价值。


CI / CD开源项目


CircleCI每月为我们的免费计划中的每个组织提供40万积分,用于开源Linux构建。要访问这个,只要保持你的回购公开。如果你在macOS上进行构建,CircleCI也为组织提供了免费计划,每月25,000个免费积分用于开源macOS构建。如欲进入,请致电billing@www.drag240sx.com


持续集成的最佳实践


118金宝博娱乐城谁搞的持续集成开发人员及早并经常犯。这使他们能够部署代码到生产环境之前检测冲突。而且,具有较小的承诺使,如果有任何问题,很容易解决的代码。每天提交的软件,甚至更多的时候,是需要持续集成,但还不够。

要成功地使用持续集成,团队必须:

  • 使测试成为开发过程中不可分割的一部分。测试应该在创建代码时编写。
  • 确保测试环境镜生产。
  • 使用编码的最佳实践,比如结对编程。
  • 自动化部署流程。

培养严格的测试文化是公司成功持续集成所需要的最重要的元素。188bet娱乐官网为了满怀信心地将新代码集成到主线中,团队需要确信代码是可靠的。工程师应该在开发每个特性时编写测试。在CircleCI中,我们对提交的任何新代码运行测试,如果开发人员成功地进行了“绿色”构建,或者由于构建为“红色”而需要修复问题,系统就会向他们发出警报。当然,没有测试,绿色构建是没有意义的。理想情况下,团队使用自动化测试,尽管这不是必需的。QA服务(如Rainforest QA)可以集成到持续集成流程中。

为了支持你的严格测试的文化,这是非常重要的测试环境镜的生产环境。否则,你不能保证你正在测试将在生产工作是什么。这意味着测试环境应该使用相同版本的数据库,Web服务器配置,文物等。

软件开发的另一个最佳实践编码过程中配对。对于功能更复杂的作品,对讨论的一行代码被写入之前的体系结构方法。任何代码合并到生产之前,另一家开发商总是回顾代码。这有助于确保最佳编码方法已被使用,代码不与现有代码或代码,另一个开发人员正在冲突,以及新的功能是可伸缩的。

最后,为了保证整个软件开发管道是快速,高效,部署工作流程也应该是自动化。通过自动化部署流程,团队更迅速地得到了他们完成的代码来生产。因为,毕竟,什么是发展迅速的软件,如果它没有得到客户的意义呢?


跟踪持续集成的关键指标


持续集成是任何软件开发团队的一个值得追求的目标。但是,你怎么知道你是否达到了你的目标呢?这就是关键性能指标的作用所在。您需要度量组成软件开发生命周期的过程,以便对其进行改进。通过这种方式,您将知道对流程的更改是否产生了影响。

这里有4个关键绩效指标(KPI)来衡量你的软件开发:

  • 交货时间:交货期是时间的长度,它需要为您的工作流程,运行从第一个触发完成。这是你很快就能得到一个信号的测量。短的交货时间需要最大限度的自动化软件开发流程。这就是为什么团队使用持续集成的自动化构建和测试。经过几周的CI收缩部署时间管线的自动化个月下降到个小时,如果不是几分钟。
  • 部署频率:多久你的团队揭开序幕的工作流程是怎样工作的许多离散单元通过发展管道移动的指示。有了一个完全自动化的软件开发流程,甚至复杂的更新代码库可以自动部署。修补程序是立即可用 - 他们都要经过同样严格的测试,任何其他更新。
  • 平均恢复时间(MTTR):平均恢复时间是做好采取行动的信息,快速的队伍。得到一个失败的状态迅速恢复将使你从红色到绿色的最短时间。采用CI / CD的做法能够快速反馈回路,并确保你的开发人员快速信号的最佳途径。118金宝博娱乐城一个强大的CI / CD的业务包括实时的工件,如从你的测试套件日志和覆盖报告,并给出开发者在环境等同于生产环境中的能力来解决。
  • 更改失败百分比:性能最高的球队很少触及恶意代码到他们的默认分支。但是,这并不意味着这些球队从来不写代码错误。测试和安全检查都在一个单独的分支进行,只有当一切都传递是允许发生合并。团队应该知道,他们的代码工作以及之前被合并到默认的分支。

有规律的报道节奏是有帮助的。自动化的每日报告有助于确保如果出现错误,团队可以快速地捕获它。并且,通过分析每周的报告,团队可以更深入地研究CI过程,并找到改进的地方。

下载CI数据驱动的案例:什么30万点美元的工作流程揭示出有关实践的DevOps


向CI/CD管道添加测试


我们来谈谈不同类型的测试:

单元/组件测试
这些覆盖的最小可能部件,单元或功能。他们是最便宜和最快速的测试运行,因为他们并不需要很大的依赖性或嘲讽。这些应该早做让他们的出路。

集成测试
这些检查如何从前一阶段各单位的工作原理与其他部件,单元和功能。在更广泛的意义上说,它可以测试服务(如API)的如何相互集成。

UI层测试
这是自动的基于浏览器的测试哪些测试基本用户流。它是建立和减慢运行昂贵的,所以应该在后面的管道发生。

现在让我们讨论一下这些测试如何适合软件开发管道。每个测试都有一个特定的角色和位置。