背景:持续集成过程如何工作

今天,我们回顾该术语的历史,讨论实施CI的困难,并提供一些流行的工具来帮助您使用它。


/ Flickr / Altug Karakoc / CC BY /照片已更改

学期


持续集成-一种应用程序开发方法,涉及项目的频繁组装和代码测试。

目的是使集成过程可预测,并在早期发现潜在的错误和错误,以便有更多的时间来修复它们。

持续集成一词最早出现在1991年。 它由UML语言的创建者Grady Booch引入。 工程师在他自己的开发实践中引入了CI概念-Butch方法 。 它暗示了在面向对象系统的设计中对体系结构的逐步完善。 Grady没有描述持续集成的任何要求。 但是后来在他的《 带有应用程序的面向对象的分析和设计 》一书中他说方法论的任务是加快“内部版本”的发布。

故事


在1996年,CI被极限编程方法论(XP)的创建者Kent BeckRon Jeffries所采用 。 持续集成已成为其方法的十二个关键原则之一。 XP的创始人澄清了CI方法的要求,并指出每天需要组装几次该项目。

在2000年代初期,敏捷联盟的创始人之一马丁·福勒Martin Fowler)开始推广持续集成方法。 他对CI的实验导致了业界第一个软件工具CruiseControl。 该实用程序是由马丁-马修·福梅尔(Matthew Foemmel)的同事创建的。
该工具中的构建周期是作为守护程序实现的,它会定期检查版本控制系统中代码库的更改。 该解决方案今天就可以下载-根据类似BSD的许可证进行分发。
随着用于CI的软件的出现,越来越多的公司开始采用这种做法。 根据Forrester的一项研究[ 报告的第5页],2009年,接受调查的50家技术公司中有86%使用或实施了CI方法。

如今,各种行业的组织都在实践持续集成。 2018年,一家大型云提供商对来自服务,教育和金融领域的公司的IT专家进行了一项调查。 在六千名受访者中,有58%的人说他们在工作中使用CI工具和原则。

如何运作


持续集成的基础是两个工具-版本控制系统和CI服务器。 后者可以是物理设备,也可以是云环境中的虚拟机。 开发人员每天上传一次或几次新代码。 CI服务器会自动将其与所有依赖项一起复制并执行组装。 之后-启动集成和单元测试。 如果测试成功,则CI系统将部署代码。

该过程的一般方案可以表示如下:



CI方法对开发人员有许多要求:

  • 立即解决问题。 CI的这种原理来自极限编程。 错误修复是开发人员的重中之重。
  • 自动化流程。 开发人员和管理人员应在集成过程中不断寻找瓶颈,并消除它们。 例如,测试通常是集成的“瓶颈”。
  • 尽可能频繁地构建。 每天进行一次同步团队工作。

实施困难


第一个问题是高运营成本。 即使该公司使用开放的CI工具(我们将在后面讨论),它仍将不得不花钱在支持基础架构上。 但是,云技术可能​​是解决方案。

它们简化了多尺度计算机配置的组装。 此外,公司只需为使用的资源付费 ,这有助于节省基础架构。

根据调查[ 文章的第14页],持续整合增加了公司员工的负担(至少是第一次)。 他们必须学习新的工具,而同事并不总是在培训方面提供帮助。 因此,您必须随时随地处理新的框架和服务。

第三个困难是自动化问题。 组织面临着大量遗留代码的组织,这些遗留代码没有被自动化测试覆盖。 这导致了这样一个事实,即在完全实施CI之前仅需重写代码。


/ Flickr / theilr / CC BY-SA

谁使用


该方法的第一个优点之一是IT巨头赞赏。 从2000年代中期开始,Google就一直在使用持续集成。 CI的实现是为了解决搜索引擎中的延迟问题。 持续集成有助于快速发现问题并进行故障排除。 现在,CI已被IT巨头的所有部门使用。

持续集成还有助于小型公司,金融和医疗组织也使用CI工具。 例如,在Morningstar,持续集成服务可帮助漏洞修复速度提高70%。 飞利浦医疗保健医疗平台能够使测试更新速度提高一倍。

工具


以下是一些用于CI的流行工具:

  • Jenkins是最受欢迎的CI系统之一。 它支持上千个插件,可与各种VCS,云平台和其他服务集成。 我们也在1cloud中使用Jenkins:该工具包含在我们的DevOps系统中 。 他定期检查Git分支进行测试。
  • Buildbot是一个Python框架,用于编写您自己的连续集成过程。 该工具的初始设置非常复杂,但这被定制的广泛可能性所抵消。 在该框架的优点中,用户可以区分其资源强度低。
  • Concourse CI是Pivotal的服务器,使用Docker容器。 Concourse CI与任何工具和版本控制系统集成。 开发人员注意到,该系统适用于任何规模的公司。
  • Gitlab CI是内置在GitLab版本控制系统中的工具。 该服务在云中运行,并使用YAML文件进行配置。 与Concourse一样,Gitlab CI 使用 Docker容器来帮助将不同的进程彼此隔离。
  • Codeship是基于云的CI服务器,可与GitHub,GitLab和BitBucket一起使用。 该平台不需要很长的初始设置-Codeship中提供了标准的预定义CI流程。 对于小型(每月最多构建100个)和开源项目,可以免费使用Codeship。

我们公司博客中的资料:

Source: https://habr.com/ru/post/zh-CN447090/


All Articles