近十年来,持续集成(Continuous Integration,CI)和持续交付(Continuous Delivery,CD)领域都取得了很大的进步。DevOps 测试的兴起致使了对 CI/CD 工具的快速需求。现有的解决方案老是随着时间的推移而改进,大量新产品或新版本正在进入 QA 领域。当你手头有这么多选项时,选择正确的工具确实会有一点儿挑战。git
在全部可选的用于测试的 CI/CD 工具中,Jenkins 和 GitLab CI/CD 是你确定应该考虑的两款工具。Jenkins 在 GitHub 上有 16,000+ 点赞,而 GitLab CI/CD 有 2012 个点赞。Jenkins 的点赞数是 GitLab CI/CD 的点赞数的 8 倍多。程序员
然而,这些数字并非选择一款 CI/CD 工具时须要查看的惟一东西。这也是尽管在点赞数上有巨大的差距,Jenkins vs GitLab CI/CD 在多个评审平台上还有着激烈的竞争。以 G2 为例,Jenkins 在 G2 上平均评分为 4.3 星,有 288 条评论;GitLab CI/CD 在 G2 上的平均评分为 4.4 星,有 270 条评论。能够说,Jenkins vs GitLab CI/CD 是一场旗鼓至关的竞争。有趣的是,Jenkins 是在 2011 年发布的,并且在 CI/CD 业务上,它一直是测试人员的首选。然而,自 2014 年发布以来,GitLab CI/CD 一直凭借尖端的功能而高居榜首。咱们在发布这篇文章时,在社交媒体上进行了一次民意调查。安全
另外一个被提到最多的工具是 GitLab CI/CD。做为一个 DevOps 测试专家,你须要根据你本身的项目、预算和其它需求来仔细审查这些工具。为了帮助你,我将对 Jenkins vs GitLab CI/CD 作一个深刻的评估,帮助你肯定合适的 CI/CD 工具来知足你的项目需求。服务器
Jenkins 是一款著名的可扩展的用于自动化部署的开源 CI/CD 工具。Jenkins 是彻底用 Java 编写的,是在 MIT 许可下发布的。它有一组强大的功能,能够将软件的构建、测试、部署、集成和发布等相关任务自动化。这款用于测试的自动化 CI/CD 工具能够在 macOS、Windows 和各类 UNIX 版本(例如 OpenSUSE、Ubuntu、Red Hat 等)系统上使用。除了经过本地安装包安装,它还能够在任何安装过 Java 运行时环境(Java Runtime Environment,JRE)的机器上单独安装或者做为一个 Docker 安装。Jenkins 团队还有一个子项目叫作 Jenkins X,专门运行一个与 Kubernetes 无缝衔接的开箱即用的 pipeline。Jenkins X 巧妙地集成了 Helm、Jenkins CI/CD 服务器、Kubernetes 以及其它一些工具,来提供一个内置最佳实践的规范的 CI/CD 工具 pipeline,例如使用 GitOps 来管理环境。使用 Jenkins 的一个加分点是,其脚本结构良好、易于理解而且可读性很强。Jenkins 团队已经开发了近 1000 个插件,使得应用程序能够与其它熟悉的技术混合使用。除此以外,还可使用 Credentials Command 之类的插件。这使得向脚本中添加隐藏的身份验证凭证等变得简单可行。一旦 Jenkins pipeline 开始运行,你还能够验证每一个阶段经过与否以及每一个阶段的总数。可是,你不能在提供的图形化概览中检查特定做业的状态。你能够作的是跟踪终端中的做业进度。并发
Jenkins 以其易于配置、自动化构建过程和它向用户提供的大量文档而闻名。当谈到 DevOps 测试时,Jenkins 被认为是很是可靠的,并且不必监视整个构建过程,而对于其它 CI/CD 工具则不会这么放心。分布式
让咱们看看 Jenkins 提供的一些最重要的特性:ide
Jenkins 在 macOS、Unix、Windows 等平台上都很是容易安装。它能够与 Docker 结合,为自动化做业带来更高的一致性和额外的速度。它能够能够做为一个 servlet 运行在 Apache Tomcat 和 GlassFish 这样的 Java 容器中。你能够找到许多支持和文档来指导整个安装过程。工具
这个工具的插件生态系统相比于其它 CI/CD 工具来讲更成熟。目前,这个生态系统提供了 1500+ 插件。因为这些插件的范围从特定语言开发工具到构建工具,这使得定制化变得很是简单便利。所以,你不须要购买昂贵的插件。Jenkins 插件集成也适用于一些 DevOps 测试工具。布局
这个工具的配置过程很是简单,只须要在安装时操做一些步骤。Jenkins 的升级过程也不麻烦且很是直接。并且其提供的支持文档对于你根据本身的需求配置工具也帮助很大。开发工具
如你所知,这是一个开源项目,拥有一个庞大的插件生态系统,全部插件的功能都获得了大量社区贡献的支持。伴随 Jenkins 的惊人的社区参与度也是促进其成熟的一个主要缘由。
Jenkins 提供了 REST 风格的应用程序接口来便于扩展。Jenkins 的远程接入 API 有三种不一样的风格——Python、XML 以及 JSON(支持 JSONP)。Jenkins 网站中有一个页面有关于 Jenkins API 的描述性文档,有助于扩展。
Jenkins 支持并行测试。你能够轻松将它与不一样的工具集成并获得构建是否成功的通知。开发者甚至能够在不一样的虚拟机上并行执行多个构建来加速测试过程。
它能够绝不费力地运行分布式工做,即任务在不一样的机器上运行,而不会对 GUI(用户图形界面)形成影响。值得一提的是,与其它 CI/CD 工具相比,只有这款工具可以使用与运行 GUI 相关任务的同一个实例。
在全部用于测试的 CI/CD 工具中,GitLab CI/CD 毫无疑问是最新且最受赞扬的选择。它是一款免费且自托管的内置于 GitLab CI/CD 的持续集成工具。GitLab CI/CD 有一个社区版本,提供了 git 仓库管理、问题跟踪、代码评审、wiki 和活动订阅。许多公司在本地安装 GitLab CI/CD,并将它与 Active Directory 和 LDAP 服务器链接来进行安全受权和身份验证。GitLab CI/CD 先前是做为一个独立项目发布的,并从 2015 年 9 月发布的 GitLab 8.0 正式版开始集成到 GitLab 主软件。一个单独的 GitLab CI/CD 服务器能够管理 25000 多个用户,它还能够与多个活跃的服务器构成一个高可用性的配置。GitLab CI/CD 和 GitLab 是用 Ruby 和 Go 编写的,并在 MIT 许可下发布。除了其它 CI/CD 工具关注的 CI/CD 功能以外,GitLab CI/CD 还提供了计划、打包、源码管理、发布、配置和审查等功能。GitLab CI/CD 还提供了仓库,所以 GitLab CI/CD 的集成很是简单直接。在使用 GitLab CI/CD 时,phase 命令包含一系列阶段,这些阶段将按照精确的顺序实现或执行。在实现后,每一个做业都被描述和配置了各类选项。每一个做业都是一个阶段的一个部分,会在类似的阶段与其它做业一块儿自动并行运行。一旦你那样作,做业就被配置好了,你就能够运行 GitLab CI/CD 管道了。其结果会稍后演示,并且你能够检查某个阶段你指定的每个做业的状态。这也是 GitLab CI/CD 与其它用于 DevOps 测试的 CI/CD 工具的不一样之处。
GitLab CI/CD 是最受欢迎的用于 DevOps 测试的 CI/CD 工具之一。GitLab CI/CD 文档丰富、易于控制且用户体验好。若是你刚接触 GitLab CI/CD,我列举了 GitLab CI/CD 的主要功能,会有助于你了解它。来看看吧。
它被普遍采用,是最新可用的开源 CI/CD 工具之一。GitLab CI/CD 的安装和配置都很简单。它是内置于 GitLab 的免费且自托管的持续集成工具。GitLab CI/CD 逐渐发展成最受欢迎的用于自动化部署的免费 CI/CD 工具之一。
2.Jekyll 插件支持
Jekyll 插件是一个静态网站生成器,对 GitHub Pages 有比较好的支持,它使得构建过程更简单。Jekyll 插件支持使用 HTML 文件和 Markdown,基于你的布局偏好,建立一个彻底静态的站点。你能够经过编辑你的 _config.yml 文件来很容易地配置大部分 Jekyll 设置,例如,你的网站的插件和主题。
工具中的里程碑设置是跟踪问题、改进系列问题、绘制仓库的请求的一种很好的方法。你能够轻易将项目里程碑分配给任何问题,或者合并项目中不常见的请求,或者将组里程碑分配给一组问题,或者合并该组中任何项目的请求。
自动伸缩的 GitLab 持续集成运行器能够轻松管理和节省 90\% EC2 成本。这真的很是重要,特别是对于并行测试环境。并且,对于组件级别或者项目级别的运行器,能够跨代码库使用。
因为其强大的问题跟踪和问题讨论功能,GitLab 是无数开源项目首选的 CI/CD 工具。它巧妙地容许你并行测试拉取请求和分支。为了简单方便地监控,测试结果被显示在 GitHub UI 上。因为简单的用户界面,相比于 Jenkins,它使用起来更加友好。
你能够经过访问权限轻松管理 git 仓库。你能够轻松地向单个仓库的协做者授予写入 / 读取访问权限,甚至特定组织的成员也能够对组织的仓库进行更细粒度的访问控制。
活跃且进步的社区是 GitLab CI/CD 的一个主要加分点。提供的全部支持都是开箱即用的,不须要在额外的插件安装中进行修改。
GitLab CI/CD 不只仅用于构建代码,还用于评审代码。它容许使用简单的合并请求和合并管理系统来进行改进协做。它几乎支持全部的版本控制系统和构建环境。在 GitHub 项目下实现了大量协做方案,这些项目有助于 GitLab CI/CD 的扩展。
Jenkins 和 GitLab CI/CD 都有它们很是擅长的领域和各自的技术追随者。然而,在讨论 Jenkins vs GitLab CI/CD 之争时,会讨论许多功能。下图是这两个 CI/CD 工具提供的全部功能的比较。
既然你已经看了 Jenkins vs GitLab CI/CD 之间的功能对比,那也是时候来看看这两个 DevOps 测试工具之间的差异。这些差异将帮助你理解 Jenkins vs GitLab CI/CD 之争背后的真正缘由。在 GitLab CI/CD 的帮助下,你能够经过对分支和其它一些方面的彻底控制来控制 Git 仓库,从而使你的代码免受忽然的威胁。然而,使用 Jenkins 时,你虽然能够控制代码库,但只有几个方面。Jenkins 不容许彻底控制分支和其它方面。Jenkins 是“内部托管的”和“免费开源的”,这也是程序员选择它的缘由。另外一方面,GitLab CI/CD 是“自托管的”和“免费的”,这就是为何开发人员更喜欢它。在 GitLab CI/CD 中,每个项目都有一个跟踪程序,它将跟踪问题并进行代码评审来提升效率。而在 Jenkins 工具中,它改变了一些设置支持和一个简单的安装配置过程。
我但愿你如今理解 Jenkins vs GitLab CI/CD 这两个工具。为了更进一步,我列举了与 Jenkins vs GitLab CI/CD 有关的主要优势和缺点。我知道你已经决定了你要使用的 DevOps 测试工具,本节将帮您加强选择正确的 CI/CD 工具的信念。
Jenkins 的优势
很是直观
Jenkins 的缺点
缺乏对整个 pipeline 跟踪的分析
GitLab CI/CD 的优势
良好的安全和隐私政策
GitLab CI/CD 的缺点
Jenkins 和 GitLab CI/CD 都有它们各自的优势和缺点,你在这两个工具之间的最终选择取决于项目需求和规格。其中每个 CI/CD 工具都有它本身的优点和劣势,发布时都实现了彻底相同的需求:自动化 CI/CD(持续集成和交付)的过程。Jenkins 用于持续集成,而 GitLab CI/CD 用于代码协做和版本控制。在选择最佳的用于 DevOps 测试的 CI/CD 工具时,除了突出的特性,你还应该查看价格列表和内部熟练度。
做者介绍:Rahul Jain 是 LambdaTest 的一名数字营销专家,热爱阅读和写做关于最新技术趋势、SEO、体育和旅行相关的内容。
做者 | Rahul Jain策划 | 田晓旭文章转自:InfoQ