GitabvsJenkins2022:终极对比
长期以来,Gitlab vs Jenkins一直是开发者之间的热门话题。虽然大多数程序员喜欢Jenkins,但开发人员都支持Gitlab。这两种工具都有各自的优点和缺点。话不多说,让我们来对Gitlab和Jenkins进行最终的比较。
Jenkins介绍
Jenkins是一个流行的开源自动化工具,通过允许您添加多种编程语言、存储库和管道,可以让各种规模的企业无缝地构建和管理持续集成和持续交付(CI/CD)管道,Jenkins使集成每一种自动化解决方案成为可能。
在得到我们今天都知道的名字之前,詹金斯实际上叫哈德森。它的创造者川口康介(Kohsuke Kawaguchi)当时在太阳微系统公司(Sun MicroSystems)担任软件开发员。哈德森是Kohsuke在创造和破坏建筑时所面临的持续斗争的结果。为了使他的工作更容易,他想在将构建提交到存储库之前看看它是否能够工作。其结果就是Hudson,这是一款面向Java的自动化工具,它允许开发人员在开发过程的早期识别和解决集成问题,而不是在后期更难解决的时候。最初,它是为太阳微系统公司编写的,但后来被作为开源软件提供给其他公司。
当甲骨文收购Sun时,它引起了一场与Hudson管理有关的纠纷。其结果是Hudson的一个新的分支被Hudson开源社区称为Jenkins。虽然两个分叉都存在了一段时间,但哈德森在2020年初关闭了。詹金斯加入了持续交付基金会(CDF),这是一个开源基金会,也是包括谷歌等公司在内的Linux基金会的一部分。
Gitlabs入门
Gitlab是开源代码管理和CI/CD工具。最初设计它是为了管理代码存储库。后来,它被扩展到支持一个完整的DevOps平台,提供端到端的DevOps功能。它使组织能够与从事所有项目相关任务(如项目计划、代码存储库管理、监控和安全)的团队成员无缝协作。通过允许管理员一次设置权限,然后访问所有资源,Gitlab使他们能够轻松地集成各种解决方案,并作为一个团队来构建更好的软件。它可以被称为管理整个DevOps生态系统的成熟工具。
Gitlab软件是由Valery Sizov和Dmytro Zaporozhets在2013年创建的。软件是用Ruby编写的,后来用Go重写了一些部分。目前的工具涉及Ruby on Rails、Go和Vue.js编程语言。GitLab Inc.于2014年成立,总部位于旧金山。最初,它是免费和开源的。2013年,它被分为两个版本;企业版和社区版。2017年,该公司宣布,Gitlab将在MIT许可下作为开源工具提供。今天,该公司在67个国家运营,拥有1280名员工。
Gitlab vs Jenkins
定价模型
说到定价模式,Jenkins是开源的,所有用户都可以访问。因此,您可以节省大量授权成本投资。您需要管理的唯一价格是服务器更新和维护的托管费用。
如前所述,Gitlab最初是在MIT许可下免费开放的。目前,该公司提供三种套餐。第一个是免费版本,每月提供400分钟的CI/CD。高级版本的费用是每个用户每月19美元,并提供每月10,000分钟的CI/CD时间。它还包括其他功能,如项目管理、操作洞察、发布控制等。终极版的价格为每位用户每月99美元,包含每月50,000分钟的CI/CD。除了高级版的所有功能外,终极版还为您提供了高级功能,如投资组合管理、合规性或价值流管理、高级安全控制和其他一些附加功能。
核心功能
安装
当谈到安装时,Jenkins是一个很容易设置的工具。您所需要的就是在您的机器上安装JRE。它支持Windows、Unix和Mac平台。你可以在GlassFish、Apache Tomcat或任何其他java容器中作为java servlet运行它;它也适用于Docker。您只需要下载该文件并运行正常的安装过程。Jenkins是自托管的,也可以在本地使用。该工具的配置非常简单。您可以使用web界面轻松地配置它。升级过程也很简单。每个任务都有大量的文档。
与Jenkins类似,Gitlab的安装过程也非常简单。但它只支持基于unix的平台,如CentOS、Linux、OpenSUSE、RedHat Linux、Debian、Ubuntu等。它不支持Mac或Windows平台。要在这些平台上运行Gitlab,您需要经过一个迂回的过程。
更新Gitlab非常简单。您只需要更改docker映像,所有内容都会自动刷新。另一个好消息是,Gitlab提供了自托管和本地部署。
插件支持
对于Gitlab和Jenkins插件的支持,Jenkins为每种类型的CI/CD任务提供了大量的插件。有超过1700个插件可供用户轻松定制。插件会定期更新。您也可以将这些插件与其他DevOps工具集成。由于其庞大的插件组合,Jenkins具有显著的可扩展性。无论您是想执行集成构建流程的单一任务,还是管理整个产品开发生命周期,Jenkins都能让您轻松完成。
与Jenkins相比,Gitlab插件的支持是有限的。然而,它提供了必要的插件来支持你在DevOps的每个阶段。
持续集成/持续部署
Jenkins没有提供内置的CI特性,但它提供了一种简单的方法,可以使用管道为各种代码存储库和语言建立持续集成和持续部署。它允许您集成整个开发技术栈以更快更好地交付产品。
Gitlab自带CI/CD特性,可以帮助您快速设置CI/CD管道。Auto DevOps是Gitlab的另一个强大特性,它使软件交付变得简单、高效和自动化。它使用预定义的默认CI/CD模板扫描代码语言并自动构建、测试和部署任务。它还包括漏洞测试和安全审计,主动扫描项目中的漏洞、许可问题、安全缺陷等。自动DevOps可以应用在项目级、组级或实例级。在这场Gitlab与Jenkins的较量中,Gitlab占据了优势。
自动伸缩功能
Gitlab允许你为CI运行器配置自动扩展,这将节省90%的EC2实例成本。该特性可以在项目或组织级别跨存储库应用。
对于Jenkins来说,对Jenkins架构工作流进行更改的自动缩放选项是相当复杂的。在Jenkins运行器上安装软件需要一个脚本,以提供一种自动的方式向Jenkins Primary注册,然后在终止前断开连接。此外,使用CloudWatch等工具设置和监控自动缩放触发事件也很重要。
技术支持
Jenkins成功的关键原因之一是它的社区支持。从安装到使用,Jenkins社区已经准备好为任何类型的任务提供支持。另一方面,我必须提到,虽然有文档,但没有专门的技术支持团队。
对于Gitlab,付费用户24×5提供了专门的技术支持,而对于免费用户,可以获得大量的文档,其社区提供了强大的支持。
并行执行
通过允许您在多个虚拟机中并发地运行多个构建,Jenkins使开发人员能够轻松地持续且快速地测试他们的代码。Gitlab还促进了并行执行。它克隆作业并在后台并行运行。
REST API支持
Jenkins REST API支持XML、Python和JSON,允许您扩展其功能。Gitlab为项目、组和独立的项目提供了REST API。
工作分配
Jenkins使您可以轻松地执行CI/CD任务,因为您可以跨多台机器、平台和地区分布构建、测试和部署等工作负载。通过分布式工作负载和并行执行,它具有更快的生命周期和更短的时间框架。
Gitlab允许您在YAML文件中配置并行执行。根据运行器的可用性,它执行类似的操作。Gitlab还支持分布式扩展,所以你可以扩展不同设备上的构建。
使用Jenkins和Gitlab的场景
构建、测试和部署是软件开发项目的三个重要组成部分。Jenkins和Gitlab都为完成这些任务提供了足够的支持。Jenkins非常专注于持续集成。它是开源的,完全免费的。它以自我托管和内部部署的形式出现,对于缺乏所需预算和专业人员的初创企业和中型企业来说是一个很好的选择。有了Jenkins,你可以利用成本。它很容易学习和使用。web UI允许您轻松地管理流程,编排和自动化作业。
在版本控制和代码协作方面,Gitlab胜过Jenkins。它使用户能够轻松地监视整个代码存储库以及所有分支。使用Jenkins,您只能监视一些分支。当您的开发团队分布在多个地理位置时,Gitlab可以很好地发挥作用。第二个考虑因素是价格。虽然Jenkins是免费的,但要使用Gitlab的所有功能,你需要订阅
在Gitlab中,每个分支都包含Gitlab -ci。Yml代码,这意味着你可以很容易地修改工作流。例如,如果您想在一个分支上运行单元测试,并在另一个分支上执行功能测试,您可以简单地修改CI/CD步骤的YML配置,Runner将为您执行任务。
英伟达(Nvidia)、高盛(Goldman Sachs)、西门子(Siemens)和汤森路透(Thomson Reuters)是少数几家使用Gitlab的知名公司。
一步一步的过程安装Jenkins
安装Jenkins非常简单。下面是在Windows上安装Jenkins的步骤。
步骤1:安装Java
- 要使用Jenkins,您需要在机器上安装Java。Java SE 16是最新的标准版本。要下载和安装Java,请访问这个链接:Java下载
- 选择Windows版本,接受弹出窗口上的许可条款并下载JDK文件。
- 接受许可协议,开始下载。
- 双击下载的文件,开始安装过程。
- 选择安装文件夹并单击next。
- 开始安装。这个过程完成后,单击close。
步骤2:配置环境变量
- 使用Java时,需要配置系统变量。要做到这一点,
- 右键单击Windows按钮—>系统—>高级系统设置—>高级
- 在下一个屏幕中,单击环境变量。
- 在用户变量下,选择Java_Home并输入Java路径:
- C:\Program Files\Java\jdk-16.0.2
- 在系统变量中添加java bin文件夹路径。
- C:\Program Files\Java\jdk-16.0.2\bin
步骤3:下载Jenkins
- Jenkins要下载和安装Jenkins,请访问这个链接:Jenkins
- 选择Jenkins 2.303作为windows
- 双击Jenkins文件来安装它。安装程序向导将打开,单击下一步,选择目标文件夹,然后单击下一步。然后单击Install。
- 安装开始。当提示输入服务登录凭证时,选择作为本地用户运行服务。
- 完成后单击finish。
步骤4:配置Jenkins
Unlocking Jenkins
安装完成后,您需要解锁Jenkins。为此,打开一个浏览器窗口并键入以下命令:
http://localhost:8080 http://localhost:8080
出现解锁Jenkins窗口。在这个屏幕上,您需要在日志文件中输入Jenkins创建的初始密码。初始密码路径如下:
C:\Program Files\Jenkins\secrets\initialAdminPassword
输入密码并单击next。现在,詹金斯被解锁了。
Configure Plugins
解锁Jenkins后,你将被导向插件页面。在这里,您可以选择默认插件或选择您想要安装的插件。向导将安装所需的插件。
创建第一个管理员用户
Jenkins配置的最后一步是创建管理员用户。提供用户详细信息,然后单击开始使用Jenkins。现在,你们可以开始使用詹金斯了。
安装Gitlab的步骤
安装Gitlab非常简单。Gitlab推荐安装Linux,因为它更快、易于安装、易于更新,并且提供了其他安装中无法提供的更多特性。Omnibus是运行Gitlab所需的所有服务和工具的安装包。
访问这个链接,下载你的操作系统版本的Gitlab安装程序:Gitlab
例如,如果你正在使用Ubuntu,请按照链接中提到的说明操作:Ubuntu
Gitlab vs Jenkins
体系结构
Jenkins使用主从架构。这个体系结构的核心组件是充当主服务器的Jenkins Server、Jenkins Slave机器和远程代码存储库机器。主控件控制构建操作,检查代码存储库,并在检测到提交时提取代码。然后,它将此工作负载分配给将运行构建和测试以生成报告的从属机器。Jenkins架构的一个巨大优势是,它允许您同时使用在多台机器和不同平台上运行的各种构建。
Gitlab架构包括两个基本组件:Gitlab CI/CD和Gitlab Runner。Gitlab CI/CD工具是一个web界面,可以让你管理构建。Gitlab运行器执行代码来运行您的构建。这两种工具一起工作来管理和运行构建。Gitlab Runner从Gitlab -ci获取脚本。yml文件并运行脚本。Gitlab的好处是它可以与GitHub、BitBucket等存储库一起工作。
Pipelines
以下是Jenkins的基本流程:
- 开发人员编写代码并提交给版本控制系统。例如,Git
- Jenkins服务器不断检查Git存储库中的提交。当检测到更改时,Jenkins服务器将触发构建。
- 如果构建失败,则将报告发送给开发人员以进行更改。
- 如果构建成功,它将被部署到测试服务器。例如:Selenium服务器
- 当测试成功运行后,代码被部署到生产服务器。
- 报告在每个阶段生成,开发人员在每个阶段更新。
下面是Gitlab的工作原理:
- 在GitLab-ci中创建CI/CD作业的结构化顺序。Yml配置文件,并将该文件存储在项目根目录中。CI/CD管道包含四个重要阶段:构建、测试、登台和生产。
- 为您的项目安装一个运行器并注册它。
- 当配置文件被推送到存储库时,运行程序会根据预定义的条件执行CI/CD。
- 当脚本通过所有这些阶段时,将自动部署到生产环境中。
优点和缺点
GitLab和Jenkins之间的争论是一个永恒的话题,因为这两个工具都提供了有用的功能。Jenkins支持多种语言,并提供了一个大型插件库。该工具具有直观的界面,便于执行诸如设置节点、调试运行器或部署代码等任务。它具有丰富的特性,可以灵活地使用和编辑配置。由于是自托管的,Jenkins让您对工作空间有更多的控制。凭证管理很容易。
缺点是,缺乏管道跟踪分析是一个问题。另一个挑战是配置插件集成和设置工具,这最终会增加这项任务的开销。
Gitlab是一个完整的DevOps工具,负责所有的开发任务。Git版本控制系统内置在这个工具中。因此,与其他解决方案的集成,解决票务等,变得更容易。
业务洞察力是Gitlab的一个关键特性,它允许您清楚地了解变更对产品性能的影响。用户统计信息可以帮助您跟踪资源使用情况并优化进程。然而,这项功能只对付费用户开放。另一个重要功能是问题跟踪。在线程讨论、标签、任务列表等功能的帮助下,您可以轻松地跟踪和分配问题,以快速解决它们。此外,您可以从JIRA进口问题。合并管理帮助您轻松协作和版本控制项目。
Gitlab支持分阶段并行执行,这使得扩展运行器变得容易。增加工作岗位和管理冲突问题很容易。通过正确的隐私政策,该项目更加安全。该工具很容易与Docker集成。可以很容易地合并请求集成。
缺点是,它增加了复杂性和工作量,因为您需要为每个作业定义和上传/下载工件。实际的合并应该在测试分支的合并状态之前发生。
Jenkins vs Gitlab的替代品
随着GitLab与Jenkins之战的继续,其他几款CI工具也加入了这场战斗。
Bamboo CI
Bamboo CI是Atlassian提供的一款流行的CI/CD服务器。它可以帮助您创建产品开发的不同阶段,以更快地创建和部署高质量和无bug的产品。例如,您可以为构建中的每个提交设置触发器。这意味着当进行提交时,它会自动触发测试套件,使您能够轻松地捕获bug并在最早阶段解决问题。Bamboo CI服务器的显著特点是它来自Atlassian, Atlassian提供了一些知名的软件开发产品,如JIRA、BitBucket、FishEye等,这使得它可以很容易地与问题跟踪和存储库工具集成,无缝地在开发项目中工作。
CircleCI
CircleCI是一种流行的CI服务器,它允许您在云中运行一切,这意味着您不需要专用服务器。它还消除了维护成本。另外,您还可以自托管CI服务器,以便更好地进行控制。大约有3万个组织使用CircleCI,它每天运行大约100万个任务。它可以帮助您自动化并行执行,以更快地交付高质量的产品。它很容易设置和使用。可以将所有设置存储在一个YAML文档中。调试是很容易的。UI是直观的,易于导航。内置对Docker工作流的支持。
TeamCity
TeamCity是另一个来自JetBrains的流行CI服务器。它支持所有主要的平台,如Windows, Linux, macOS, FreeBSD, Solaris等,没有托管版本,所以你必须在本地托管服务器。它运行在Java环境中,易于安装和配置。它可以很容易地与Visual Studio和其他ide集成。支持Gitlab和Bitbucket服务器拉请求。在最新的2019.1版本中,添加了本地Gitlab集成。虽然它提供免费版本,但建筑代理的授权费用约为每月39美元。
结论
由于提供给用户的特性,Gitlab和Jenkins是市场上最受欢迎的两种CI/CD工具。这两种工具都是为了实现CI/CD流程的自动化而设计的,并且在DevOps的竞争中仅隔了一条细线。这两种工具各有利弊。虽然Gitlab在代码协作和版本控制方面有优势,但Jenkins在持续集成方面表现良好。因此,在Gitlab与Jenkins的CI/CD之战中,你不能将一种工具置于另一种工具之上。在选择CI/CD工具时,您需要考虑预算、技术堆栈、项目要求和内部熟练程度。
安装插件
这里选择安装推荐的插件
PS : 这里等待时间太久 如何解决?
解决办法 :
修改更新配置源
-
Jenkins环境搭建和部署项目的过程
安装部署dockerjenkins环境
-
下一篇
下载JMeter 到Jenkins的宿主机
到Apache官网下载JMeter,下载地址如下:
Jenkins集成JMeter实现持续性能测试
JMeter是最受欢迎的开源性能测试工具之一,最近在跟多个用户的聊天中都谈到了JMeter与CI/CD工具集成,我们这个话题来聊一下,如何使用Jenkins和