持续集成(CI)和持续交付(CD)在过去十年左右时间里取得了长足的进步。DevOps测试的兴起引起了针对CI/CD工具的强烈需求。现有的解决方案一直在与时俱进,无数的新产品或新版本正在进入质量检查领域。当你有如此多的选择时,选择正确的工具必须慎重。git
在全部可用的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],结果以下图:安全
说起最多的另外一工具是GitLab CI/CD。做为DevOps测试专家,你须要根据项目、预算和其余要求仔细检查这些工具。为了帮助你,我将对Jenkins和GitLab CI/CD进行深刻评估,以帮助你肯定适合你项目要求的正确CI/CD工具。让咱们从基础开始分析。服务器
Jenkins介绍并发
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来指导环境。ide
使用Jenkins的一个优势是脚本结构合理,易于理解而且可读性强。Jenkins团队已经生产了大约1000个插件,使该应用程序能够与其余熟悉的技术融合在一块儿。此外,还可使用插件,例如Credentials Command,它使得在脚本中添加隐藏的身份验证凭据等变得容易且可行。工具
Jenkins管道开始运行后,你还能够验证某个阶段(phase)是否经过或失败,以及每一个阶段的总数。你没法在提供的图形概述中检查特定做业的状态,可是你能够跟踪终端中做业的进度。gitlab
Jenkins核心功能布局
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介绍
在全部用于测试的CI/CD工具中,GitLab CI/CD无疑是最新的也是最使人钦佩的选择。它是内置在GitLab CI/CD中的免费且自托管的持续集成工具。GitLab CI/CD具备社区版本,并提供Git存储库管理,问题跟踪,代码审查,Wiki和活动供稿。公司在本地安装GitLab CI/CD,并将其与Active Directory和LDAP服务器链接以进行安全受权和身份验证。
如下是一个视频教程,能够帮助你更好地了解如何使用GitLab CI/CD和Selenium Grid构建自动测试管道。
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核心功能
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比较快照
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之间的区别
既然你已经看到了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功能差别
我但愿你如今已经了解了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工具?
Jenkins和GitLab CI/CD都有各自的优缺点,你在这两种CI/CD工具之间的最终选择彻底取决于项目要求和规格。这些CI/CD工具中的每个都有其自身的优缺点,而且被发布来知足彻底相同的要求:CI/CD的自动化流程(连续集成和交付)。Jenkins用于持续集成,而Gitlab CI/CD用于代码协做和版本控制。
除了突出的功能,你还应该浏览价格表和内部熟练程度,从而为DevOps测试挑选最佳的CI/CD工具。
祝你测试愉快!
相关连接:
https://www.g2.com/products/jenkins/reviews
https://www.lambdatest.com/blog/travis-ci-vs-jenkins/
https://www.linkedin.com/posts/sarahelson85_cicd-travisci-jenkins-activity-6691235216599658497-Cs4M
https://www.jenkins.io/doc/book/installing/
https://www.lambdatest.com/support/docs/jenkins-with-lambdatest/
原文连接:https://www.lambdatest.com/blog/jenkins-vs-gitlab-ci-battle-of-ci-cd-tools/
Kubernetes管理员认证(CKA)培训
本次CKA培训将于11月20到22日在北京开课,培训基于最新考纲,经过线下授课、考题解读、模拟演练等方式,帮助学员快速掌握Kubernetes的理论知识和专业技能,并针对考试作特别强化训练,让学员能从容面对CKA认证考试,使学员既能掌握Kubernetes相关知识,又能经过CKA认证考试,学员可屡次参加培训,直到经过认证。点击下方图片或者阅读原文连接查看详情。