Jenkins 与 GitLab CI/CD 之战

在过去十年中,持续集成(Continuous Integration,CI)和持续部署(Continuous Delivery,CD)工具的开发取得了重大进展。 软件开发与运维(Development Operations,DevOps)一体化技术的发展导致对CI/CD工具的需求快速增长。 现有的解决方案不断地被改进,努力与时俱进,它们的新版本不断发布,在质量保证软件(Quality Assurance,QA)的世界里,不断出现许多新产品。 面对如此丰富的选择,选择合适的工具并非易事。

Jenkins 与 GitLab CI/CD 之战

在所有现有的 CI/CD 工具中,有两个项目绝对值得关注这个领域的人。 我们谈论的是 Jenkins 和 GitLab CI/CD 工具,它是 GitLab 平台的一部分。 詹金斯有超过 16000 GitHub 上的星星。 gitlab.com 上的 GitLab 存储库得分更高 2000 星星。 如果我们比较存储库的受欢迎程度,事实证明 Jenkins 的星级是平台的 8 倍,其中包括 GitLab CI / CD。 但是在选择 CI/CD 工具时,这远不是你应该关注的唯一指标。 还有很多其他的,这解释了为什么在许多比较中,Jenkins 和 GitLab CI / CD 彼此非常接近。

以 G2 平台的数据为例,该平台积累了各种产品的评论以及用户给予的评分。 这是平均评分 詹金斯,基于 288 条评论,是 4,3 星。 哦哦 GitLab 有 270 条评论,此工具的平均评分为 4,4 星。 我们不会错误地说 Jenkins 和 GitLab CI/CD 是平等竞争的。 有趣的是,Jenkins 项目出现于 2011 年,从那时起它一直是测试人员最喜欢的工具。 但与此同时,由于该平台提供的高级功能,2014 年启动的 GitLab CI/CD 项目占据了非常高的位置。

如果我们谈论 Jenkins 与其他类似平台相比的受欢迎程度,我们注意到我们已经发表了一篇比较 Travis CI 和 Jenkins 平台的文章,并安排了一项调查。 85 位用户参与其中。 受访者被要求选择他们最喜欢的 CI/CD 工具。 79% 的人选择了 Jenkins,5% 的人选择了 Travis CI,16% 的人表示他们更喜欢其他工具。

Jenkins 与 GitLab CI/CD 之战
投票表决结果

在其他 CI/CD 工具中,GitLab CI/CD 被提及的次数最多。

如果您认真对待 DevOps,则需要仔细选择合适的工具,同时考虑项目的具体情况、预算和其他要求。 为了帮助您做出正确的选择,我们将回顾 Jenkins 和 GitLab CI/CD。 这有望帮助您做出正确的选择。

詹金斯简介

Jenkins 与 GitLab CI/CD 之战
詹金斯 是一种众所周知的灵活的 CI/CD 工具,旨在自动执行与软件项目相关的许多任务。 Jenkins 完全用 Java 编写,并在 MIT 许可证下发布。 它具有一组强大的功能,旨在自动执行与构建、测试、部署、集成和发布软件相关的任务。 该工具可用于各种操作系统。 其中包括 macOS、Windows 和许多 Linux 发行版,例如 OpenSUSE、Ubuntu 和 Red Hat。 有针对各种操作系统设计的 Jenkins 安装包,此工具可以安装在 Docker 和任何具有 JRE(Java 运行时环境)的系统上。

Jenkins 开发人员创建了另一个项目 Jenkins X,旨在在 Kubernetes 环境中工作。 Jenkins X 集成了 Helm、Jenkins CI/CD 服务器、Kubernetes 和其他工具来构建遵循 DevOps 最佳实践的 CI/CD 管道。 例如,这里使用 GitOps。

Jenkins 的脚本结构良好、易于理解且易于阅读这一事实可以为 Jenkins 的优势锦上添花。 Jenkins 团队创建了大约 1000 个插件,旨在组织 Jenkins 与各种技术的交互。 脚本可以使用身份验证系统,例如,它允许您连接到各种封闭系统。

在 Jenkins 流水线的运行过程中,你可以观察到每一步发生了什么,某些阶段的工作是否已经成功完成。 但是,您可以在不使用特定图形界面的情况下观看所有这些内容,而是使用终端的功能。

詹金斯的特点

Jenkins 的著名特性包括易于设置、各种操作的高度自动化以及出色的文档。 如果我们谈论解决 DevOps 任务,那么这里 Jenkins 被认为是一个非常可靠的工具,通常使用它来密切监视项目处理的整个过程是没有意义的。 其他 CI/CD 工具并非如此。 让我们谈谈 Jenkins 的一些最重要的特性。

▍1. 免费、开源、多平台支持

Jenkins 可以运行在 macOS、Windows 和 Linux 平台上。 它还可以在 Docker 环境中运行,允许您组织统一且快速执行的自动化任务。 该工具还可以在支持 Java 的容器(例如 Apache Tomcat 和 GlassFish)中作为 servlet 运行。 定性安装 Jenkins 记录在案.

▍2。 开发的插件生态系统

Jenkins 插件生态系统似乎比其他 CI/CD 工具的插件生态系统成熟得多。 目前有超过 1500 个 Jenkins 插件。 这些插件旨在解决范围广泛的任务,在它们的帮助下,您可以自动化各种项目。 丰富的免费插件可供选择,这意味着如果您使用 Jenkins,则不必购买昂贵的付费插件。 有可能 积分 Jenkins 与许多 DevOps 工具。

▍3. 易于安装和设置

Jenkins 相当容易安装和配置。 同时,更新系统的过程也非常方便。 在这里,再次值得一提的是文档的质量,因为您可以在其中找到与安装和配置 Jenkins 相关的各种问题的答案。

▍4. 友好的社区

如前所述,Jenkins 是一个开源项目,其生态系统包含大量插件。 围绕 Jenkins 开发了一个由用户和开发人员组成的大型社区,以帮助开发该项目。 社区是推动 Jenkins 发展的因素之一。

▍5。 REST API 的可用性

在使用 Jenkins 时,您可以使用扩展系统功能的 REST API。 用于远程访问系统的 API 以三个版本呈现:XML、支持 JSONP 的 JSON、Python。 这里 文档页面包含有关使用 Jenkins REST API 的详细信息。

▍6. 支持并行执行任务

Jenkins 支持 DevOps 任务的并行化。 它可以很容易地与相关工具集成,并接收有关任务结果的通知。 通过使用不同的虚拟机组织项目的并行构建,可以加速代码测试。

▍7. 支持在分布式环境中工作

Jenkins 允许您使用多台计算机组织分布式构建。 该特性适用于大型项目,使用工作方案,根据该方案有一个 Jenkins 主服务器和几个从机。 从机还可以用于需要在不同环境中组织项目测试的情况。 这些特性使 Jenkins 有别于其他类似项目。

GitLab 简介

Jenkins 与 GitLab CI/CD 之战
亚搏体育app CI / CD 可以称为最新和最受欢迎的 DevOps 工具之一。 这个免费的开源工具内置于 GitLab 版本控制系统中。 GitLab平台有一个社区版本,它支持存储库管理、问题跟踪工具、代码审查组织、面向文档的机制。 公司可以在本地安装 GitLab,将其链接到 Active Directory 和 LDAP 服务器以实现安全的用户授权和身份验证。

这里 一个视频教程,可帮助您了解如何使用 GitLab CI/CD 功能创建 CI/CD 管道。

GitLab CI/CD 最初作为独立项目发布,但在 2015 年,这套工具被集成到 GitLab 8.0 中。 单个 GitLab CI/CD 服务器可以支持超过 25000 个用户。 基于这样的服务器,您可以创建高可用性的系统。

GitLab CI/CD 和主要的 GitLab 项目是用 Ruby 和 Go 编写的。 它们是在 MIT 许可证下发布的。 GitLab CI/CD 除了 CI/CD 工具的常用功能外,还支持与工作调度相关的其他功能。

将 GitLab CI/CD 集成到项目中非常容易。 在使用 GitLab CI/CD 时,项目代码处理过程被划分为多个阶段,每个阶段可以由若干个按一定顺序执行的任务组成。 任务可以微调。

任务可以并行运行。 设置好阶段和任务的顺序后,CI/CD 管道就可以运行了。 您可以通过监视任务的状态来监视其进度。 因此,使用 GitLab CI/CD 非常方便,或许比其他同类工具更方便。

GitLab CI/CD 和 GitLab 的特点

GitLab CI/CD 是最受欢迎的 DevOps 工具之一。 该项目以高质量的文档着称,其功能简单易用。 如果您还不熟悉 GitLab CI/CD,此工具的以下功能列表将使您大致了解您可以从中得到什么。 需要注意的是,其中许多功能都与 GitLab 平台本身有关,其中集成了 GitLab CI/CD。

▍1. 人气

GitLab CI/CD 是一种相对较新的工具,已得到广泛使用。 GitLab CI/CD 已经慢慢成为一种非常流行的 CI/CD 工具,用于自动化测试和软件部署。 它的设置很简单。 它也是 GitLab 平台内置的免费 CI/CD 工具。

▍2。 支持 GitLab Pages 和 Jekyll

Jekyll 是一个静态站点生成器,可以在 GitLab Pages 系统中使用它来创建基于 GitLab 存储库的站点。 系统获取源材料并基于它们生成现成的静态站点。 您可以通过编辑文件来控制此类网站的外观和功能 _config.yml,由杰基尔使用。

▍3. 项目策划能力

由于能够规划项目阶段,跟踪问题及其组的便利性增加了。 这使您可以管理项目的工作组织,计划在特定日期实施。

▍4. CI 运行器的自动缩放

由于负责执行特定任务的运行器的自动缩放,您可以节省大量租用服务器容量的成本。 这非常重要,尤其是涉及到并行测试项目的环境时。 此外,这对于由多个存储库组成的大型项目也很重要。

▍5。 问题跟踪工具

GitLab 强大的问题跟踪能力使得许多开源项目都使用了该平台。 GitLab CI/CD 允许并行测试不同的代码分支。 在系统界面中方便地分析测试结果。 这让 GitLab CI/CD 有别于 Jenkins。

▍6. 限制对存储库的访问

GitLab 平台支持限制对存储库的访问。 例如,可以为在存储库中协作处理项目的人员分配适合其角色的权限。 对于企业项目尤其如此。

▍7. 积极的社区支持

围绕 GitLab 开发了一个活跃的社区,这有助于该平台及其工具的开发,特别是 GitLab CI / CD。 GitLab CI/CD 和 GitLab 的深度集成,除其他外,可以很容易地找到使用 GitLab CI/CD 时出现的问题的答案。

▍8. 支持各种版本控制系统

GitLab CI/CD 是一个系统,它不仅可以处理托管在 GitLab 存储库中的代码。 例如,代码可以存储在GitHub仓库中,使用GitLab CI/CD可以在GitLab的基础上组织CI/CD流水线。

Jenkins 与 GitLab CI/CD 的比较

Jenkins 和 GitLab CI/CD 都是非常好的工具,它们都能够让 CI/CD 流水线顺畅运行。 但如果你比较它们,就会发现,尽管它们在许多方面相似,但在某些方面却彼此不同。

描述
詹金斯
亚搏体育app CI / CD

开源还是闭源
开源
开源

安装
必填项。
不需要,因为这是 GitLab 平台的内置功能。

独特的功能
插件支持。
深度集成到版本控制系统中。

Поддержка
缺席。
有。

安装与配置
困难不因
困难不因

系统自部署
这是使用该系统的唯一方法。
支持的。

创建 CI/CD 管道
支持,使用 Jenkins 管道。
支持的。

应用性能监控
缺席。
有。

生态系统
有超过 1000 个插件。
该系统正在 GitLab 中开发。

API
支持先进的API系统。
提供 API 以更深入地集成到项目中。

JavaScript 支持
有。
有。

与其他工具集成
支持与其他工具和平台的集成(Slack、GitHub)。
许多用于与第三方系统集成的工具,尤其是与 GitHub 和 Kubernetes 的集成。

代码质量控制
支持 - 使用 SonarQube 插件和其他插件。
支持的。

Jenkins 和 GitLab CI/CD 的区别

在描述和比较 Jenkins 和 GitLab CI/CD 之后,让我们关注这些 DevOps 工具之间的差异。 了解这些差异将帮助您了解那些更喜欢其中一种工具的人。

  • GitLab CI/CD 可以完全控制 Git 存储库。 我们正在谈论管理存储库分支和一些其他功能。 但是 Jenkins,虽然它可以与存储库一起工作,但并没有像 GitLab CI / CD 那样提供对它们的相同级别的控制。
  • Jenkins 是一个免费的开源项目。 选择它的人独立部署它。 而 GitLab CI/CD 包含在 GitLab 平台中,这是一个交钥匙解决方案。
  • GitLab CI/CD 支持在项目级别工作的高级任务管理工具。 Jenkins 的这一面不太发达。

Jenkins 和 GitLab CI/CD:优点和缺点

现在您对 Jenkins 和 GitLab CI/CD 有了一些了解。 现在,为了让您更好地了解这些工具,让我们来看看它们的优点和缺点。 我们假设您已经决定了需要哪种工具。 希望本节能让您进行自我测试。

▍詹金斯的优势

  • 大量的插件。
  • 完全控制工具安装。
  • 跑步者的简单调试。
  • 简单的节点设置。
  • 简单的代码部署。
  • 非常好的凭证管理系统。
  • 灵活性和多功能性。
  • 支持各种编程语言。
  • 该系统在直观层面上是可以理解的。

▍Jenkins的弱点

  • 插件使用起来可能很棘手。
  • 在小型项目中使用 Jenkins 时,自行配置所需的时间可能会非常长。
  • 缺乏关于 CI/CD 链的一般分析信息。

▍GitLab CI/CD 的优势

  • 与 Docker 良好集成。
  • 跑步者的简单缩放。
  • 并行执行属于 CI/CD 管道阶段的任务。
  • 在建立任务关系时使用有向无环图模型。
  • 由于运行器并行执行的可能性,具有高水平的可扩展性。
  • 易于添加任务。
  • 简单的冲突解决。
  • 可靠的安全系统。

▍GitLab CI/CD 的弱点

  • 对于每个任务,您需要描述和上传/下载工件。
  • 您无法在实际合并之前测试合并分支的结果。
  • 在描述 CI/CD 流水线的阶段时,还不可能挑出其中的各个阶段。

结果

Jenkins 和 GitLab CI/CD 各有优缺点。 选择什么这个问题的答案取决于特定项目的需求和特征。 今天审查的每个 CI/CD 工具都有某些特性,尽管这些工具是为解决相同的问题而创建的。 同时,Jenkins 是一个独立的工具,而 GitLab CI/CD 是专为代码协作而设计的平台的一部分。

在选择 CI/CD 系统时,除了它的功能之外,还应该考虑可能与之相关的成本,以及支持该项目的 DevOps 工程师究竟习惯于使用什么。

你使用什么 CI/CD 工具?

Jenkins 与 GitLab CI/CD 之战

Jenkins 与 GitLab CI/CD 之战

来源: habr.com

添加评论