参考:持续集成流程如何运作

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

参考:持续集成流程如何运作
/flickr/ 阿尔图格·卡拉科奇 / CC BY / 照片已修改

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

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

持续集成这个术语首次出现于 1991 年。 它是由 UML 语言的创建者引入的 格雷迪·布奇 (格雷迪·布奇)。 这位工程师在自己的开发实践中引入了CI的概念—— 布奇法。 它意味着在设计面向对象系统时对体系结构进行增量细化。 Gradi 没有描述任何持续集成的要求。 但后来在他的书中“面向对象的分析和设计与应用程序他表示,该方法的目标是加快“内部版本”的发布速度。

故事

1996 年,CI 被该方法论的创建者采用 极限编程 (XP)- 肯特·贝克 (肯特·贝克)和 罗恩·杰弗里斯 (罗恩·杰弗里斯)。 持续集成成为他们方法的十二个关键原则之一。 XP 的创始人阐明了 CI 方法的要求,并指出需要每天多次构建项目。

2000年代初,敏捷联盟创始人之一开始推广持续集成方法论 马丁·福勒 (马丁·福勒)。 他对 CI 的实验催生了该领域的第一个软件工具 - CruiseControl。 该实用程序是由 Martin 的同事 Matthew Foemmel 创建的。

该工具中的构建周期作为守护程序实现,定期检查版本控制系统以了解代码库中的更改。 今天就可以下载解决方案 - 它 分发者 在类似 BSD 的许可证下。

随着 CI 软件的出现,越来越多的公司开始采用这种做法。 根据 Forrester 研究 [第 5 页 报告],2009年,接受调查的86家科技公司中有XNUMX%使用或实施了CI方法。

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

怎么开动这个

持续集成基于两个工具:版本控制系统和 CI 服务器。 后者可以是物理设备,也可以是云环境中的虚拟机。 开发人员每天上传一次或多次新代码。 CI 服务器会自动复制它以及所有依赖项并构建它。 然后,它运行集成和单元测试。 如果测试成功通过,CI 系统就会部署代码。

总体流程图可以表示如下:

参考:持续集成流程如何运作

CI 方法对开发人员提出了许多要求:

  • 立即纠正问题。 这个原则是从极限编程中引入 CI 的。 修复错误是开发人员的首要任务。
  • 自动化流程。 开发人员和管理人员必须不断寻找集成过程中的瓶颈并消除它们。 例如,集成经常存在瓶颈 事实证明 测试。
  • 尽可能经常举行集会。 每天一次同步团队的工作。

实施困难

第一个问题是运营成本高。 即使一家公司使用开放的 CI 工具(我们稍后会谈到),它仍然需要在基础设施支持上花钱。 然而,云技术可能​​是解决方案。

它们简化了不同规模计算机配置的组装。 公司的加分项 得到报酬 仅针对所使用的资源,这有助于节省基础设施。

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

第三个困难是自动化问题。 拥有大量未被自动化测试覆盖的遗留代码的组织面临着这个问题。 这导致在完全实施CI之前,代码被简单地重写了。

参考:持续集成流程如何运作
/flickr/ 泰尔 / 创用CC BY-SA

谁使用

IT 巨头是最先认识到该方法的好处的人之一。 谷歌 使用 自 2000 年代中期以来持续集成。 CI的实现是为了解决搜索引擎的延迟问题。 持续集成有助于快速发现并解决问题。 现在CI已经被IT巨头的所有部门所使用。

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

工具

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

  • 詹金斯 是最流行的 CI 系统之一。 它支持一千多个插件,可与各种VCS、云平台和其他服务集成。 我们还使用 1cloud 的 Jenkins:工具 包含在我们的 DevOps 系统中。 他定期检查用于测试的 Git 分支。
  • 建造机器人 — 用于编写您自己的持续集成流程的 Python 框架。 该工具的初始设置相当复杂,但广泛的自定义选项弥补了这一点。 在该框架的优点中,用户强调其资源强度低。
  • 大堂CI 是来自 Pivotal 的使用 Docker 容器的服务器。 Concourse CI 与任何工具和版本控制系统集成。 开发人员指出,该系统适用于任何规模的公司。
  • 亚特实验室持续集成 是内置于 GitLab 版本控制系统中的工具。 该服务在云中运行并使用 YAML 文件进行配置。 像 Concourse、Gitlab CI 适用 Docker 容器有助于将不同的进程相互隔离。
  • 代号 是一个与 GitHub、GitLab 和 BitBucket 配合使用的云 CI 服务器。 该平台不需要长时间的初始设置 - Codeship 中提供了标准的预安装 CI 流程。 对于小型(每月最多 100 个构建)和开源项目,Codeship 是免费的。

来自我们公司博客的材料:

来源: habr.com

添加评论