在过去十年中,持续集成(Continuous Integration,CI)和持续部署(Continuous Delivery,CD)工具的开发取得了重大进展。 软件开发与运维(Development Operations,DevOps)一体化技术的发展导致对CI/CD工具的需求快速增长。 现有的解决方案不断地被改进,努力与时俱进,它们的新版本不断发布,在质量保证软件(Quality Assurance,QA)的世界里,不断出现许多新产品。 面对如此丰富的选择,选择合适的工具并非易事。
在所有现有的 CI/CD 工具中,有两个项目绝对值得关注这个领域的人。 我们谈论的是 Jenkins 和 GitLab CI/CD 工具,它是 GitLab 平台的一部分。 詹金斯有超过
以 G2 平台的数据为例,该平台积累了各种产品的评论以及用户给予的评分。 这是平均评分
如果我们谈论 Jenkins 与其他类似平台相比的受欢迎程度,我们注意到我们已经发表了一篇比较 Travis CI 和 Jenkins 平台的文章,并安排了一项调查。 85 位用户参与其中。 受访者被要求选择他们最喜欢的 CI/CD 工具。 79% 的人选择了 Jenkins,5% 的人选择了 Travis CI,16% 的人表示他们更喜欢其他工具。
投票表决结果
在其他 CI/CD 工具中,GitLab CI/CD 被提及的次数最多。
如果您认真对待 DevOps,则需要仔细选择合适的工具,同时考虑项目的具体情况、预算和其他要求。 为了帮助您做出正确的选择,我们将回顾 Jenkins 和 GitLab CI/CD。 这有望帮助您做出正确的选择。
詹金斯简介
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,则不必购买昂贵的付费插件。 有可能
▍3. 易于安装和设置
Jenkins 相当容易安装和配置。 同时,更新系统的过程也非常方便。 在这里,再次值得一提的是文档的质量,因为您可以在其中找到与安装和配置 Jenkins 相关的各种问题的答案。
▍4. 友好的社区
如前所述,Jenkins 是一个开源项目,其生态系统包含大量插件。 围绕 Jenkins 开发了一个由用户和开发人员组成的大型社区,以帮助开发该项目。 社区是推动 Jenkins 发展的因素之一。
▍5。 REST API 的可用性
在使用 Jenkins 时,您可以使用扩展系统功能的 REST API。 用于远程访问系统的 API 以三个版本呈现:XML、支持 JSONP 的 JSON、Python。
▍6. 支持并行执行任务
Jenkins 支持 DevOps 任务的并行化。 它可以很容易地与相关工具集成,并接收有关任务结果的通知。 通过使用不同的虚拟机组织项目的并行构建,可以加速代码测试。
▍7. 支持在分布式环境中工作
Jenkins 允许您使用多台计算机组织分布式构建。 该特性适用于大型项目,使用工作方案,根据该方案有一个 Jenkins 主服务器和几个从机。 从机还可以用于需要在不同环境中组织项目测试的情况。 这些特性使 Jenkins 有别于其他类似项目。
GitLab 简介
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 工具?
来源: habr.com