CI / CD工具比较:Jenkins,GitLab CI,Buildbot,Drone和大厅

持续的集成,交付和部署是旨在帮助提高开发速度和发布经过良好测试的可用...的策略。

介绍

持续集成,交付和部署是旨在帮助提高开发速度和经过良好测试的可用产品的发布的策略。 持续集成鼓励开发团队尽早测试并将其更改集中到共享代码库,以最大程度地减少集成冲突。 通过消除部署或发布方式上的障碍,持续交付从此基础上构建。 通过部署自动通过测试套件的每个构建,进一步扩展连续部署。

虽然上述术语主要涉及策略和实践,但软件工具在允许组织实现这些目标方面发挥重要作用。 CI / CD软件可以帮助团队通过一系列的阶段自动推进新的变化,以减少反馈时间和消除过程中的摩擦。

在本指南中,我们将比较一些受欢迎的免费和开源连续集成,交付和部署服务器,旨在使协作软件开发更加轻松。 我们将看看Jenkins,GitLab CI,Buildbot,Drone和大厅。

Jenkins

Jenkins是最早的开源连续集成服务器之一,仍然是当今最常用的选项。 原始开发商Sun Microsystems最初是哈德逊项目的一部分,社区和代码库在与Oracle收购商标冲突之后分拆。 哈德森最初于2005年发行,而Jenkins则于2011年首次发行。

多年来,Jenkins已经演变成一个强大而灵活的软件相关任务自动化系统。 Jenkins本身主要作为自动化框架,通过一个插件库实现了许多重要的逻辑。 通过插件处理从监听网络挂钩或查看存储库到构建环境和语言支持的一切。 虽然这提供了很大的灵活性,但您的CI流程可能依赖于许多第三方插件,这可能是脆弱的。

Jenkins的管道工作流程(也通过插件提供)是一个相对较新的添加,可从2016年开始。可以使用Groovy语言在存储库本身中或通过Jenkins Web中的文本框来声明或强制定义CI进程UI。 对Jenkins的一个常见批评是,以插件为中心的配置模型和在存储库之外定义流水线或构建过程的能力有时可能难以轻松地复制不同Jenkins实例上的配置。

新新新旗新新新旗新新旗新新旗新新旗新新旗新新旗新新旗新新旗新新旗新新旗新新旗新旗新新旗新新旗新新旗新新旗新新旗旗新新旗新旗新新旗新新旗新新旗新新旗新新旗 请关注如何在Ubuntu 16.04上安装Jenkins为您的项目配置Jenkins服务器。

GitLab CI

GitLab CIGitLab内置的持续集成工具, GitLab是git存储库托管和开发工具平台。 最初作为独立项目发布,GitLab CI被集成到主要的GitLab软件中,并于2015年9月发布了GitLab 8.0。

GitLab CI中的CI / CD进程使用YAML配置语法在代码存储库本身的文件中定义。 然后将该工作发送到称为跑步者的机器,这些机器易于设置,并可在许多不同的操作系统上进行配置。 配置赛跑者时,您可以选择不同的执行者,如Docker,Shell,VirtualBox或Kubernetes,以确定如何执行任务。

GitLab CI与GitLab存储库平台的紧密耦合对软件的使用方式有明确的影响。 GitLab CI不是使用其他存储库托管平台的开发人员的选择。 积极的方面,集成功能允许GitLab用户在不安装和学习附加工具的情况下设置CI / CD环境。 自动测试可以通过启用Web界面中的几个选项,注册跑步机和将管道定义文件添加到存储库中来开始。 密切的关系还允许您在项目之间共享跑步者,自动查看存储库中的当前构建状态,并使用生成它们的代码保留构建工件。

GitLab和GitLab CI是用Ruby和Go编写的,并根据MIT许可证发布。 您可以按照我们的指南, 了解如何使用GitLab CI设置连续集成管道,以了解如何在GitLab服务器上配置此功能。

Buildbot

200 200 200 X- 200 200 200 X- 200 200 X- 200 200 200 200 200 200 200 200 200 200 X- 200 作为Mozilla Tinderbox项目的替代品,2003年首次发布,Buildbot主要设计为在各种平台上自动化构建测试的一种方式。

Buildbot发布了GPL许可,并使用Twisted库以Python编写。 为了简化配置,Buildbot的配置不是抽象出底层语言,而是完全用Python编写的。 这意味着配置往往比其他系统复杂得多,但管理员有更多的空间来设计其理想的工作流和流程。 构建的每个阶段都是明确分开和可编程的。 Buildbot将自己定位为一个框架,用于构建自己的自定义进程,与Web框架允许您构建自定义网站的方式相当。

Buildbot作为构建测试平台的历史意味着它支持许多不同的操作系统和版本控制系统。 同样,由于它是以开源测试为基础设计的,因此其体系结构允许用户轻松地将工作人员与其首选平台交付给项目,以扩展可用的测试基础。 用户只需要在系统上安装几个Python软件包,然后提供项目的凭据。

要开始使用Buildbot自动化构建过程,请遵循如何在Ubuntu 16.04上安装Buildbot的指南。

Drone

X- 尽管上面讨论的工具都包括使用Docker运行构建的选项,但是基于容器的工作流程是Drone设计的核心。 Drone是在Go中撰写的,并在2014年根据Apache许可证首次发布。

Drone作为Docker和存储库提供商之间的中间协调层。 无需启动CI / CD服务器,然后再挂接到托管服务器的版本控制系统中,Drone需要先备份存储库帐户信息才能引导其自己的身份验证,用户和权限模型。 与其所有CI流程一样,Drone本身也作为容器运行。 它支持多个数据库后端和存储库提供程序,并内置了对设置TLS / SSL证书的支持, 让我们加密传输加密。

Drone在管道定义的仓库内寻找特殊的YAML文件。 语法设计为易于阅读和表达,所以使用存储库的任何人都可以理解持续的集成过程。 Drone提供了一个插件系统,但它的使用方式与Jenkins不同。 在Drone中,插件是用于将预配置任务丢弃到常规工作流程中的特殊Docker容器。 这使得通过使用几个参数调用插件来更容易地完成常见任务,而不是手动脚本化整个过程。 在这个意义上,Drone插件有点类似于Unix实用程序命令,旨在完成一个狭隘的工作。

要了解如何设置Drone服务器以自动测试您的提交,请按照[如何在Ubuntu 16.04上安装和配置Drone]


[4:31]
广泛的办公室真的很容易


[4:31]
一站两站


https://www.howtoing.com/how-to-install-and-configure-drone-on-ubuntu-16-04/ )指南。

中央大厅

Concourse是一个相对较新的持续集成平台,最初于2014年发布。Concourse对CI / CD空间的方法与我们所看到的其他工具有很大的不同,它试图尽可能地摆脱方程式,最小化将每个外部因素抽象为所谓的“资源”。 这个理念的目标是使整合服务器完全可以一次性,这样可以在任何Concourse服务器上轻松地运行相同的过程。

连续整合过程的每一部分都是由系统的不同元素的基本原语组成的。 过程的每个部分明确地定义其依赖。 例如,第一个任务可能需要对VCS存储库的最新提交,而进程的后续部分可能需要通过先前阶段的最新提交。 通过映射每个步骤的确切依赖关系构建管道的这种方法导致严格定义的行为。

为了从进程中进一步消除附带的状态,Concourse不会在任务之间隐含地传递任何内容,也不提供存储构建工件的任何内部方式。 必须明确定义下一阶段所需的所有信息,并可能将其推送到外部存储以进入下一步。 通过要求明确的定义,Concourse希望尽可能减少系统必须考虑的假设和未知变量的数量。

大厅由Go编写,根据Apache许可证发布。 如果您想了解如何设置一个Concourse服务器来自动化您的持续集成过程,请参阅我们的指南, 了解如何在Ubuntu 16.04上安装Concourse CI

结论

持续集成,交付和部署软件是旨在使您的流程可靠和可重复的复杂自动化系统。 从上面的描述可以看出,关于自动化测试和发布如何最大程度地实现,有很多不同的想法,重点放在方程的不同部分。 没有一个工具可以满足每个项目的需求,但是通过这么多高品质的开源解决方案,您很有可能找到一个符合团队需求的系统。