Jenkins和GitLab CI/CD:CI/CD工具之战

持续集成(CI)和持续交付(CD)在过去十年左右时间里取得了长足的进步。DevOps测试的兴起引发了针对CI/CD工具的强烈需求。现有的解决方案一直在与时俱进,无数的新产品或新版本正在进入质量检查领域。当你有如此多的选择时,选择正确的工具必须慎重。
在所有可用的CI/CD测试工具中,你首先应当考虑的两个工具是Jenkins和GitLab CI/CD工具。Jenkins在GitHub上拥有16,000多颗星,而GitLab CI/CD仅拥有2012颗。Jenkins是GitLab CI/CD的8倍多。但是,这些数字并不是选择CI/CD工具时唯一需要考虑的问题。这也是为什么尽管星的数量存在巨大差异,但Jenkins 和 GitLab CI/CD还是在多个检视平台上并驾齐驱。
以G2[1]为例,Jenkins在G2上的平均评分为4.3星,有288条评论,而GitLab CI/CD在G2上的评分为4.4星,有270条评论。因此我们所说的Jenkins 和 Gitlab CI/CD在平等的基础上相互竞争是没有错的。有趣的是,Jenkins于2011年发布,属于CI/CD业务,它一直是测试人员的首选。然而,自2014年推出以来,GitLab CI/CD一直以其先进的功能进入top位置。我们在Travis CI vs Jenkins[2]上传文章,在社交媒体上进行了民意调查[3],结果如下图:

3108801d6e4179428cc7ab30746c0b24.png


提及最多的另一工具是GitLab CI/CD。作为DevOps测试专家,你需要根据项目、预算和其他要求仔细检查这些工具。为了帮助你,我将对Jenkins和GitLab CI/CD进行深入评估,以帮助你确定适合你项目要求的正确CI/CD工具。让我们从基础开始分析。


Jenkins介绍

747a1082550031a4cd8d818026cd643d.png


Jenkins是著名的可扩展开源CI/CD工具,用于自动化部署。Jenkins完全用Java编写,并在MIT许可下启动。它具有一组强大的功能,可以自动执行软件构建、测试、部署、集成和发布相关的任务。这种用于测试的自动化CI/CD工具可在macOS,Windows和各种UNIX版本(例如OpenSUSE,Ubuntu,Red Hat等)上使用。除了通过本机安装软件包外,它还可以独立安装或作为Docker安装在任何装有Java Runtime Environment(JRE)的计算机上。
Jenkins团队还有一个名为Jenkins X的子项目,专门用于运行Kubernetes的无缝集成流水线,开箱即用。Jenkins X巧妙地集成了Helm、Jenkins CI/CD服务器、Kubernetes和其他工具,以提供具有内置最佳实践的说明性CI/CD工具管道,例如使用GitOps来指导环境。
使用Jenkins的一个优点是脚本结构合理,易于理解并且可读性强。Jenkins团队已经生产了大约1000个插件,使该应用程序可以与其他熟悉的技术融合在一起。此外,还可以使用插件,例如Credentials Command,它使得在脚本中添加隐藏的身份验证凭据等变得容易且可行。
Jenkins管道开始运行后,你还可以验证某个阶段(phase)是否通过或失败,以及每个阶段的总数。你无法在提供的图形概述中检查特定作业的状态,但是你可以跟踪终端中作业的进度。


Jenkins核心功能

747a1082550031a4cd8d818026cd643d.png


Jenkins以易于设置,自动构建过程以及为用户提供大量文档而闻名。在进行DevOps测试时,Jenkins被认为是相当可靠的,并且可能不必监视整个构建过程,而其他CI/CD工具则不会。让我们看一下Jenkins提供的一些最重要的功能。
  • 免费,开源且易于安装。Jenkins可轻松用于macOS,Unix,Windows和平台。它可以与Docker结合使用,为自动化作业带来更高的一致性和额外的速度。它也可以在Java容器(例如Apache Tomcat和GlassFish)中作为servlet运行。你可以找到很多支持和文档来指导整个安装过程[4]。

  • 广泛的插件生态系统。与其他CI/CD工具相比,Jenkins的插件生态系统更加成熟。目前,它提供了1500多个插件。这些插件的范围广泛,既有特定语言的开发工具,也有构建工具,它使定制变得容易且有利可图。因此,你无需购买昂贵的插件。Jenkins插件集成[5]也可用于许多DevOps测试工具。

  • 易于安装和配置。该工具的安装和配置过程非常简单,因为安装过程仅需要几个步骤。Jenkins的升级过程也很轻松,直接。同样,提供的支持文档对根据你的要求配置工具有很大帮助。

  • 乐于助人的社区。如你所知,这是一个具有丰富插件生态系统的开源项目,所有插件和功能都得到了社区的广泛支持。Jenkins伴随着社区的惊人参与是其成熟的主要原因之一。

  • 提供REST API。Jenkins提供了RESTful应用程序编程接口以实现可扩展性。Jenkin的远程访问API具有三种不同的风格:带有JSONP支持的Python,XML和JSON。Jenkins网站上的页面之一包含有关Jenkins API的描述性文档,可帮助扩展。

  • 支持并行执行。Jenkins智能地支持并行测试。你可以轻松地将其与不同的工具集成,并在构建成功或失败时获得通知。开发人员甚至可以跨不同的虚拟机并行执行多个构建,从而加速其测试套件的执行。

  • 轻松分配工作。它可以毫不费力地运行分布式工作,即,任务在不同的计算机上运行,而不会影响GUI(图形用户界面)。值得注意的是,与其他CI/CD工具相反,只有该特定工具才能使用运行GUI关联任务的相同实例。


GitLab CI/CD介绍

191b732f7e768b81d29b21463e8f5694.png


在所有用于测试的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服务器可以管理25,000多名用户,并且很可能会形成高可用性设置多活动服务器。
GitLab CI/CD和GitLab用Ruby和Go编写,并在MIT许可下启动。除了其他CI/CD工具所关注的CI/CD之外,GitLab CI/CD还提供计划,打包,SCM,发布,配置和检查。
GitLab CI/CD还提供了存储库,因此GitLab CI/CD的集成非常简单明了。在使用GitLab CI/CD时,阶段命令包括一系列阶段,这些阶段将以精确的顺序实现或执行。实施后,将为每个作业刻画并配置各种选项。
每个作业都是一个阶段的一部分,并且将在相似的阶段自动与其他作业并行运行。完成后,将配置作业,并全部准备好运行GitLab CI/CD管道。稍后将说明结果,你将可以检查在阶段内指定的每个作业的状态。这就是GitLab CI/CD与DevOps测试中使用的其他CI/CD工具的不同之处。


GitLab CI/CD核心功能

191b732f7e768b81d29b21463e8f5694.png


GitLab CI/CD是用于DevOps测试的最受欢迎的CI/CD工具之一。GitLab CI/CD拥有强大的文档,易于控制,良好的用户体验。如果你不熟悉GitLab CI/CD,我将列出GitLab CI/CD的主要功能,这些功能将帮助你更好地了解它。下面一起来看看。
  • 高可用性部署。它被广泛使用,并且是最新的开源CI/CD工具之一。GitLab CI/CD的安装和配置都很容易。它是内置在GitLab中的免费的自托管CI工具。GitLab CI/CD逐渐发展成为最流行的用于部署自动化的免费CI/CD工具之一。

  • Jekyll插件支持。Jekyll插件是一个静态网站生成器,具有对GitHub Pages的强大支持,它使构建过程更简单。Jekyll插件支持使用HTML文件和Markdown并根据你的布局偏好创建一个完全静态的站点。通过编辑_config.yml文件,你可以轻松配置大多数Jekyll设置,例如你网站的插件和主题。

  • 里程碑设置。工具中的里程碑设置是跟踪问题、改进一系列问题以及在存储库中绘制请求的绝佳方法。你可以轻松地将项目里程碑分配给任何问题,或者仅合并该项目中的请求,也可以轻松地将组里程碑分配给问题,或者合并该组中任何项目的请求。

  • 自动缩放CI运行器。自动缩放GitLab CI运行程序可以轻松管理并节省90%的EC2成本。这确实是必不可少的,尤其是对于并行测试环境。同样,对于组织级别或项目级别的运行者,这对跨组织的仓库很有用。

  • 问题跟踪和问题改组。由于其出色的问题跟踪和问题改组功能,GitLab是众多开源项目的首选CI/CD工具。它巧妙地使你能够并行测试拉取请求和分支。为了实现简单且无故障的监控,测试结果显示在GitHub UI上。由于具有简单的用户界面,将其与Jenkins进行比较时,使用起来特别友好。

  • 使用访问控制管理Git存储库。你可以轻松地管理具有良好访问权限的Git存储库。你可以轻松地向单个存储库中的协作者授予写/读访问权限,即使特定组织的成员也可以对该组织的存储库具有更细化的访问控制。

  • 积极的社区支持。积极向上的社区是GitLab CI/CD的主要优点之一。所有支持都是开箱即用的,不需要在其他插件安装中进行修改。

  • 代码审查和合并请求。GitLab CI/CD不仅用于构建代码,还用于审查或检视代码。它允许通过简单的合并请求和合并管理系统改善协作。支持或多或少的所有版本控制系统和构建环境。在GitHub项目下实施了许多协作计划,这些计划有助于扩展GitLab CI/CD。


Jenkins和GitLab CI/CD比较快照

191b732f7e768b81d29b21463e8f5694.png


Jenkins和GitLab CI/CD都擅长于自己的工作,并且拥有自己的技术支持。然而,在讨论Jenkins与GitLab CI/CD之间的斗争时,出现了许多功能。以下是这两个CI/CD工具提供的所有功能之间的比较。


特性 Jenkins GitLab CI/CD
开源还是商业 开源 开源
产品类型 自托管/开箱即用 自托管/开箱即用
内置CI/CD Jenkins 根据需求支持CI/CD 我们不需要安装任何东西,它是内置特性
独有特性 插件 自动DevOps/允许在同一地方持续构建及代码管理
产品类型 自托管/开箱即用 SaaS/开箱即用
官方支持/SLA 没有官方支持也没有SLA
安装配置 容易 容易
自托管选项 开源软件,自托管是唯一使用方式 可选
构建流水线 可通过Jenkins 流水线DSL 定制流水线 支持
应用性能监控 不提供分析性能的特性 对所有部署的应用都将展示性能数据
生态 1000个社区插件 支持
详细API 提供详细的API 提供API支持深度整合软件项目
特定语言支持:JavaScript
整合 支持与其它工具整合(比如 Slack,GitHub) 许多第三方整合工具可用,最著名的是GitHub和Kubernetes
CI/CD部署看板 CI/CD特性部分支持 一个可定制的独立看板,支持查看流水线历史和最近状态
API 支持 支持,提供REST API以及最新提供了GraphQL API
代码质量 提供 Sonarqube 插件进行代码质量检查,也支持其它不同插件 GitLab也提供了各种插件进行代码质量检查

Jenkins与GitLab CI/CD之间的区别

191b732f7e768b81d29b21463e8f5694.png


既然你已经看到了Jenkins与GitLab CI/CD的功能比较,现在是时候找出两种DevOps测试工具之间的差异了。这些差异将帮助你了解Jenkins和GitLab CI/CD之战的真正原因。
  • 借助GitLab CI/CD,你可以完全控制分支和其他几个方面来控制Git存储库,以确保代码免受突发威胁。但是,在Jenkins情况下,你能控制存储库,但范围有限。它不允许完全控制分支和其他构面。

  • Jenkins是“内部托管”的,并且是“免费开放源代码”,这是编码人员偏爱它的原因。另一方面,Gitlab CI/CD是“自托管”和“免费”的,这就是开发人员更喜欢它的原因。

  • 在GitLab CI/CD中,每个项目都有一个跟踪器,该跟踪器将跟踪问题并执行代码审查以提高效率。在使用Jenkins工具时;它更改了支持集合,并简化了安装和配置过程。


Jenkins和GitLab CI/CD功能差异

191b732f7e768b81d29b21463e8f5694.png


我希望你现在已经了解了Jenkins和GitLab CI/CD工具的两面。为了实现这一目标,我还列出了与Jenkins和GitLab CI/CD相关的主要利弊。我知道你已经确定要使用的DevOps测试工具,本节将帮助你增强对选择正确的CI/CD工具的信心。
Jenkins的优点
  • 大型插件库

  • 自托管,即完全控制工作区

  • 轻松调试运行任务,从而完成工作区控制

  • 易于设置节点

  • 易于部署代码

  • 很好的凭证管理

  • 功能灵活多变

  • 支持不同的语言

  • 非常直观


Jenkins的缺点
  • 复杂的插件集成。

  • 小型项目相对开销较大,因为你必须自己设置。

  • 缺乏对管道的整体跟踪的分析。


GitLab CI/CD的优点
  • 更好的Docker集成

  • 扩展运行任务很简单

  • 分阶段并行执行作业

  • 可以添加有向无环图流水线

  • 并发运行程序具有很好的可扩展性

  • 合并请求整合

  • 容易添加工作

  • 易于处理冲突问题

  • 良好的安全和隐私政策


GitLab CI/CD的缺点
  • 需要为每个作业定义工件并上载/下载。

  • 在实际合并发生之前不太可能测试分支的合并状态。

  • 目前尚不支持阶段中的阶段。


Jenkins与GitLab CI/CD,你应该首选哪种CI/CD工具?

191b732f7e768b81d29b21463e8f5694.png


Jenkins和GitLab CI/CD都有各自的优缺点,你在这两种CI/CD工具之间的最终选择完全取决于项目要求和规格。这些CI/CD工具中的每一个都有其自身的优缺点,并且被发布来满足完全相同的要求:CI/CD的自动化流程(连续集成和交付)。Jenkins用于持续集成,而Gitlab CI/CD用于代码协作和版本控制。
除了突出的功能,你还应该浏览价格表和内部熟练程度,从而为DevOps测试挑选最佳的CI/CD工具。
祝你测试愉快!
相关链接:
  1. https://www.g2.com/products/jenkins/reviews

  2. https://www.lambdatest.com/blog/travis-ci-vs-jenkins/

  3. https://www.linkedin.com/posts/sarahelson85_cicd-travisci-jenkins-activity-6691235216599658497-Cs4M

  4. https://www.jenkins.io/doc/book/installing/

  5. https://www.lambdatest.com/support/docs/jenkins-with-lambdatest/


原文链接:https://www.lambdatest.com/blog/jenkins-vs-gitlab-ci-battle-of-ci-cd-tools/


猜你喜欢

转载自blog.51cto.com/14992974/2547584