TeamCity VS Jenkins:选择正确的CI / CD工具-程序员宅基地

技术标签: spring  java  编程语言  人工智能  大数据  

每个软件开发周期都涉及三个主要阶段:构建,测试和部署。这三个阶段中的任何一个滞后都会导致产品发布的延迟。为了避免此类延迟,组织依靠CI / CD工具来自动化这些过程。但是最近,随着对CI / CD工具的快速需求,选择泛滥,选择正确的工具可能是艰巨的任务!

您当然应该关注的两个流行的CI / CD工具是Jenkins和TeamCity,它们各自具有自己的独特功能。这两个CI / CD工具广泛用于自动将频繁的代码更改推送到主分支,同时在每个步骤执行DevOps测试以确保构建中的错误更少。

在有关TeamCity vs.Jenkins的这篇文章中,我试图帮助您选择适合您需要的正确CI / CD工具。在开始进行TeamCity与Jenkins的比较之前,我将从CI / CD的基础知识开始。如果您已经知道它,可以直接进入TeamCity vs. Jenkins部分。

什么是CI / CD?为何重要?

在持续集成(CI)中,更改经常被集成到共享存储库中,在其中定期执行构建和DevOps测试(可选步骤)以进行早期错误检测,从而提高了产品质量。将其与持续交付结合使用,您将获得更快,更稳定的构建。

持续交付(CD)仅在CI完成后才发生,并且由自动管道组成,可以在其中将代码更改从一个暂存环境部署到另一个暂存环境。它包括使软件可部署所需的所有必要步骤(即使用测试工具进行质量检查,软件签名,部署到预生产环境等)。这使部署更容易,更快捷,同时将错误修复和增强上的花费降至最低。

CI / CD通常与Selenium测试自动化一起使用,以在将其推送到新环境中或集成在一起时对其进行测试,这称为连续测试或DevOps测试。CI / CD与TDD(测试驱动开发)结合使用时,可以有效地结合在一起,因为它可以用于识别产品中与业务相关的错误。

如前所述,有几种可用的工具,其中一些流行的CI / CD工具是:

  • Jenkins

  • TeamCity

  • Travis CI

  • Circle CI

  • Bamboo

  • GitLab CI

  • AWS CodePipeline

  • Azure Pipelines

市场上有如此众多的CI / CD工具,因此选择满足项目需求的工具就成为了挑战。如果您正在寻找最好的CI / CD工具,那么您来对地方了,因为在这里我们进行了TeamCity与Jenkins的比较。

LambdaTest,一个基于云的跨浏览器测试平台,提供了与流行的CI / CD工具(例如Jenkins,TeamCity,Travis CI等)的集成,因此您可以构建强大的交付渠道以加快上市进程。

JenKins介绍

Jenkins是广泛使用的开源CI / CD工具之一。它是由Sun的一位工程师作为附带项目启动的,后来逐渐发展成为用于部署自动化的最受欢迎的开源CI工具之一。

它基于Java,可以自动执行与软件的构建,测试,部署和交付相关的任务。Jenkins可在Windows,macOS和其他Unix版本(例如Red Hat,Ubuntu,OpenSUSE等)上使用。除了使用本机安装软件包进行安装外,还可以将其作为Docker或独立安装在已安装JRE(Java运行时环境)的任何计算机上。

詹金斯(Jenkins)项目产生两条发布线–每周和长期支持(LTS)。Jenkins具有高度的可扩展性和丰富的插件,安装也很容易。借助Jenkins,开发人员可以专注于其核心活动,因为集成和测试的主要部分由该工具管理。

在撰写本文时,针对LTS的Jenkins的最新版本分别为2.235.1和每周2.224。

TeamCity简介

TeamCity是由JetBrains创建的基于Java的CI / CD工具,JetBrains是PyCharm,IntelliJ Idea,RubyMine,ReShaper等其他有用工具的生产者(Source)。小型团队可以免费使用TeamCity。

该产品的口号是“开箱即用的强大持续集成”,正如TeamCity提供源代码控制,构建链工具和详细的构建历史一样,它兑现了自己的承诺-像Jenkins这样的免费工具中没有这些功能。

可以将其安装在Windows和Linux服务器上。它还提供对.Net框架的支持,并且可以集成到IDE(如Visual Studio和Eclipse)中。在撰写本文时,TeamCity的最新版本为2020.1。此版本支持条件构建步骤,您也可以在Kubernetes集群中启动构建代理。您还可以选择与流行的项目管理工具(例如Azure DevOps和Jira)集成。

让我们深入研究流行的CI / CD工具的详细数据– TeamCity vs Jenkins。

TeamCity vs. Jenkins –详细比较

以下是TeamCity与Jenkins的Google趋势报告(过去12个月),该报告表明,与TeamCity相比,Jenkins更受欢迎。

这是执行TeamCity与Jenkins比较的主要参数。

1.安装与配置

安装和配置TeamCity服务器很容易,因为它只涉及下载适当的TeamCity服务器安装并执行安装(或升级)说明。TeamCity官方站点上的大量文档使此任务更加容易。

Jenkins是一个自包含的Java程序,易于安装,并且可以在OS X,Windows和基于Unix的操作系统中直接使用。如果已经安装了Java和Apache TomCat,则需要执行三个安装步骤。总体而言,设置詹金斯的过程很容易。Jenkins的配置是通过Web界面执行的,该界面包括内置帮助和即时错误检查。

总体而言,如果您按照必要的安装步骤进行安装,则Jenkins和TeamCity都非常简单。

2.可扩展性和定制

Jenkins和TeamCity都提供RESTful API以实现可扩展性。使用TeamCity,您可以通过多种方式进行自定义,交互和扩展服务器。有一些选项可以通过RESTful API执行交互,使用构建脚本中的服务消息,以及使用Open API为TeamCity创建插件。可扩展性的水平还取决于所使用的TeamCity的类型。有关TeamCity的可扩展性和自定义的更多详细信息,请参见此处。

Jenkins的远程访问API有三种样式-XML,Python和具有JSONP支持的JSON。Jenkins中的API用于获取信息,以触发新的构建来创建或复制作业。

3.插件生态系统

与TeamCity相比,Jenkins的插件生态系统更加成熟。主要原因是社区参与了詹金斯的发展。TeamCity有大约400个插件(更精确地说是393个)人群开发的插件。这些插件可在TeamCity的插件页面上下载。插件必须单独安装,因为它们不一定是商业产品的一部分。

通过使用Open API,开发人员可以创建用于与版本控制系统,构建工具,IDE,通知程序和服务器运行状况报告集成的插件。

相比之下,Jenkins在社区及其丰富的插件生态系统中蒸蒸日上。在撰写本文时,Jenkins提供了1500多个受社区支持的插件,并支持项目中的构建,部署和自动化。由于插件的范围从构建工具到特定于语言的开发工具,它使自定义任务简单且具有成本效益,因为您不需要昂贵的内部自定义。

4.云与密钥集成

TeamCity通过插件和非捆绑插件提供与流行的云解决方案的集成。它通过在流行的云平台上动态扩展其构建代理来利用云计算的优势。

通过插件进行云集成的示例很少有Amazon EC2,VMWare vSphere和Kubernetes(在2020.1版中受支持)。云集成的非捆绑插件是Windows Azure中,谷歌云,数字海洋云,和更多。对于对在TeamCity中实现云支持感兴趣的开发人员,有详细的文档。有关TeamCity与云(IAAS)解决方案集成的详细信息。

除了云集成,它支持与码头工人,Maven的,Visual Studio团队服务,的NuGet,VCS托管服务,并重点整合更多。

Jenkins还可以使用插件与流行的云平台集成,例如Amazon EC2,VMWare vSphere,Google Cloud,Atlassian Cloud等。以下是有关针对流行云平台的Jenkins安装和配置的详细信息:

平台 下载链接
亚马逊EC2 https://plugins.jenkins.io/ec2/
谷歌云 https://cloud.google.com/jenkins
微软Azure https://docs.microsoft.com/zh-CN/azure/developer/jenkins/
Digital Ocean https://plugins.jenkins.io/digitalocean-plugin/
Atlassian Cloud https://confluence.atlassian.com/adminjiracloud/integrate-jira-software-cloud-with-jenkins-972355471.html
5.社区支持

TeamCity和Jenkins都有一个活跃的社区论坛。Jenkins的优势在于,与TeamCity相比,它的开发和使用时间更长。活跃且不断发展的社区是Jenkins的主要优点之一。

常规主题和插件开发是TeamCity社区的两个部分。社区有助于知识共享和问题共享。除社区论坛外,TeamCity还拥有一个活跃的TeamCity博客,该博客中TeamCity团队提供与产品和功能更新有关的信息。

在TeamCity与Jenkins的比较中,就社区而言,Jenkins在TeamCity方面具有较高优势。由于Jenkins是一个开源项目,因此Jenkins的用户依赖社区来满足大多数需求(即安装,故障排除等)。与Jenkins项目和社区互动的一些流行方式是经验共享,编码,翻译,文档,审查,设计等。

6.功能

TeamCity和Jenkins具有强大的功能集,使该产品非常适合CI / CD。

技术意识是TeamCity的主要卖点。由于用于集成的方法,它被称为“智能CI服务器”。有了对VS项目的支持,您将获得对测试框架,代码覆盖率,工具版本的自动检测,静态代码分析等的支持,所有这些支持都是现成提供的,不需要在构建脚本或其他插件安装。

可以访问ReShaper和IntelliJ IDEA对Java和.NET代码进行代码分析和检查,从而有助于确保更好的代码质量。

由于插件的可用性,Jenkins不仅用于构建代码,而且还用于分析代码。几乎所有版本控制系统和构建环境均受支持。在詹金斯(Jenkins)项目下实施了许多协作计划,这些计划有助于詹金斯(Jenkins)的扩张。

7.易用性

与Jenkins相比,TeamCity提供了更好,更清晰的界面。该界面可以根据要求轻松定制。这并不意味着Jenkins不可用,主要的可用性差异在于Jenkins更加关注功能而不是可用性(即功能先于外观)。

TeamCity的主要组件是服务器,而浏览器托管的界面用于管理项目,代理和项目配置。

如果您的团队精通Jenkins及其插件生态系统,则经验可能会有所不同。如果您的团队正在寻找更友好的选择(即易于配置和易于使用),则应简要介绍一下TeamCity。

8.托管

TeamCity仅在本地版本中可用。如果打算像在自托管服务器上那样设置TeamCity,则可以使用反向代理(Nginx)进行相同的操作。与其尝试对托管的TeamCity进行这些其他配置,不如尝试Jenkins。

Jenkins提供基于云和内部部署的版本。Jenkins适合在云中安装以运行自托管管道。有关使用Jenkins进行规模设计的详细文章是利用Jenkins的本地CI / CD优势的很好参考。

9.发布周期

在发布周期方面,TeamCity和Jenkins同样出色。TeamCity 2020.1.1已于2020年6月23日发布。更改日志已得到详细记录,您可以选择下载或回退以前的版本。

Jenkins的发布也不错。它遵循在Ubuntu中也使用的LTS(长期支持)发行概念。Jenkins的最新稳定版本是2020年6月17日发布的2.235.1。有单独的LTS更新日志和每周更改日志。

10.分布式运行(或执行)

TeamCity和Jenkins都可以分布式运行,即任务通过不同的计算机运行,而不会影响GUI(图形用户界面)。

重要的是要注意,只有Jenkins可以使用其运行GUI相关任务的相同实例。这可能会导致詹金斯表现不佳。

11.并行性

TeamCity与Jenkins的并行性比较意味着任务可以在同一台计算机上同时运行,而分布式则表明任务可以在不同的计算机上扩展。

您可以在TeamCity和Jenkins上针对不同的构建和环境运行并行构建。詹金斯(Jenkins)通过并行阶段执行此操作,这是几年前在产品中引入的功能。

并行化在某种程度上起作用,直到运行构建的工具支持它为止。TeamCity并不限制支持并行性的工具使用它(Source)。

另一方面,Jenkins中的并行化只是要启用Parallel Test Executor插件。TeamCity的用户还提到Jenkins在并行性方面更加友好。

Jenkins支持并行构建,但是它们共享相同的环境,这可能导致共享资源出现问题。总体而言,在TeamCity与Jenkins的比较中,Jenkins赢得了并行构建(或并行化)方面的支持。

12.开源或商业

Jenkins是开源的(根据MIT许可证获得),可以免费使用。由于它是免费的,因此许多较小的组织更喜欢Jenkins而不是TeamCity。所涉及的唯一成本将是运行基础结构。广泛的插件和在线社区是Jenkins的关键支柱。

TeamCity有两种版本(Professional Server许可证和Build Agent许可证),您可以根据需要选择合适的版本。这是TeamCity定价结构的要点:

  • 免费提供100种构建配置和3种构建代理。

  • 额外的构建代理许可证售价299美元,其中包括一个附加的构建代理。

还有其他的选择-一个为创业陡峭的50%的折扣,并免费为开源项目。有关TeamCity定价的更多详细信息,请参见此处。

如果价格是一个因素,您应该选择Jenkins而不是TeamCity,因为Jenkins是开源的,可以免费使用。

在LambdaTest,我们为您的DevOps测试工作提供了与流行的CI / CD工具的集成,以帮助您建立健壮的交付渠道,以加快上市速度

TeamCity与Jenkins比较快照

这是TeamCity与Jenkins比较的快照

特征 TeamCity Jenkins
产品类别 内部部署 自托管/内部部署
安装与安装 简单 简单
使用方便 打开即用的用户友好性 相对于外观而言,用户关注度相对较低,因为它着重于功能性
官方支持 没有官方支持,但是在IRC,Jenkins论坛和其他支持渠道上提供了广泛支持。
插件生态系统 没有那么丰富的插件生态系统 插件蓬勃发展(目前有近1500多个插件可用)
并行化 是(部分)
报告中
建立管道 是的,允许使用基于Kotlin的DSL(域特定语言)定义管道 是的,通过Jenkins Pipeline DSL支持自定义管道。
积分 是的,Amazon EC2,VMWare vSphere,Google Cloud等主要集成:Docker,Maven,Visual Studio Team Services,NuGet,VCS托管服务 是的,通过Jenkins插件,Amazon EC2,VMWare vSphere,Google Cloud,Atlassian Cloud,Slack等
在线文件 博客,支持论坛,Youtube频道等等。 是的,博客,支持论坛,IRC,事件等。
开源或商业 免费提供100个构建配置 免费(开源)

两种产品在功能比较方面没有太大差异,您需要有意识地指出适合该项目的产品类型。您是否打算使用像Jenkins这样的开源CI / CD工具,该工具功能丰富但使用起来不太友好?您是否要使用像TeamCity这样的高级替代产品,它又功能丰富且用户友好?答案应该与您的期望(从工具本身)和总体项目要求(包括预算)一起划掉。

总而言之

我详细介绍了两种流行的CI / CD工具-Jenkins和TeamCity。选择正确的CI / CD工具对于加快上市速度至关重要。同样,最近的DevOps测试也起着至关重要的作用,以确保构建质量。对于Web应用程序的DevOps测试,您可以选择Selenium来执行自动浏览器测试,并且可以使用云Selenium Grid来进行,也可以扩展测试工作。与选择正确的测试自动化框架以加快测试活动一样重要。

如何在Selenium WebDriver中处理Web表?

Python中的正则表达式(二)

Python中的正则表达式和示例

Python中的文件处理

Python中的用户定义异常与NZEC错误

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qqqqqkmbnjjhb/article/details/109202418

智能推荐

分布式光纤传感器的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告_预计2026年中国分布式传感器市场规模有多大-程序员宅基地

文章浏览阅读3.2k次。本文研究全球与中国市场分布式光纤传感器的发展现状及未来发展趋势,分别从生产和消费的角度分析分布式光纤传感器的主要生产地区、主要消费地区以及主要的生产商。重点分析全球与中国市场的主要厂商产品特点、产品规格、不同规格产品的价格、产量、产值及全球和中国市场主要生产商的市场份额。主要生产商包括:FISO TechnologiesBrugg KabelSensor HighwayOmnisensAFL GlobalQinetiQ GroupLockheed MartinOSENSA Innovati_预计2026年中国分布式传感器市场规模有多大

07_08 常用组合逻辑电路结构——为IC设计的延时估计铺垫_基4布斯算法代码-程序员宅基地

文章浏览阅读1.1k次,点赞2次,收藏12次。常用组合逻辑电路结构——为IC设计的延时估计铺垫学习目的:估计模块间的delay,确保写的代码的timing 综合能给到多少HZ,以满足需求!_基4布斯算法代码

OpenAI Manager助手(基于SpringBoot和Vue)_chatgpt网页版-程序员宅基地

文章浏览阅读3.3k次,点赞3次,收藏5次。OpenAI Manager助手(基于SpringBoot和Vue)_chatgpt网页版

关于美国计算机奥赛USACO,你想知道的都在这_usaco可以多次提交吗-程序员宅基地

文章浏览阅读2.2k次。USACO自1992年举办,到目前为止已经举办了27届,目的是为了帮助美国信息学国家队选拔IOI的队员,目前逐渐发展为全球热门的线上赛事,成为美国大学申请条件下,含金量相当高的官方竞赛。USACO的比赛成绩可以助力计算机专业留学,越来越多的学生进入了康奈尔,麻省理工,普林斯顿,哈佛和耶鲁等大学,这些同学的共同点是他们都参加了美国计算机科学竞赛(USACO),并且取得过非常好的成绩。适合参赛人群USACO适合国内在读学生有意向申请美国大学的或者想锻炼自己编程能力的同学,高三学生也可以参加12月的第_usaco可以多次提交吗

MySQL存储过程和自定义函数_mysql自定义函数和存储过程-程序员宅基地

文章浏览阅读394次。1.1 存储程序1.2 创建存储过程1.3 创建自定义函数1.3.1 示例1.4 自定义函数和存储过程的区别1.5 变量的使用1.6 定义条件和处理程序1.6.1 定义条件1.6.1.1 示例1.6.2 定义处理程序1.6.2.1 示例1.7 光标的使用1.7.1 声明光标1.7.2 打开光标1.7.3 使用光标1.7.4 关闭光标1.8 流程控制的使用1.8.1 IF语句1.8.2 CASE语句1.8.3 LOOP语句1.8.4 LEAVE语句1.8.5 ITERATE语句1.8.6 REPEAT语句。_mysql自定义函数和存储过程

半导体基础知识与PN结_本征半导体电流为0-程序员宅基地

文章浏览阅读188次。半导体二极管——集成电路最小组成单元。_本征半导体电流为0

随便推点

【Unity3d Shader】水面和岩浆效果_unity 岩浆shader-程序员宅基地

文章浏览阅读2.8k次,点赞3次,收藏18次。游戏水面特效实现方式太多。咱们这边介绍的是一最简单的UV动画(无顶点位移),整个mesh由4个顶点构成。实现了水面效果(左图),不动代码稍微修改下参数和贴图可以实现岩浆效果(右图)。有要思路是1,uv按时间去做正弦波移动2,在1的基础上加个凹凸图混合uv3,在1、2的基础上加个水流方向4,加上对雾效的支持,如没必要请自行删除雾效代码(把包含fog的几行代码删除)S..._unity 岩浆shader

广义线性模型——Logistic回归模型(1)_广义线性回归模型-程序员宅基地

文章浏览阅读5k次。广义线性模型是线性模型的扩展,它通过连接函数建立响应变量的数学期望值与线性组合的预测变量之间的关系。广义线性模型拟合的形式为:其中g(μY)是条件均值的函数(称为连接函数)。另外,你可放松Y为正态分布的假设,改为Y 服从指数分布族中的一种分布即可。设定好连接函数和概率分布后,便可以通过最大似然估计的多次迭代推导出各参数值。在大部分情况下,线性模型就可以通过一系列连续型或类别型预测变量来预测正态分布的响应变量的工作。但是,有时候我们要进行非正态因变量的分析,例如:(1)类别型.._广义线性回归模型

HTML+CSS大作业 环境网页设计与实现(垃圾分类) web前端开发技术 web课程设计 网页规划与设计_垃圾分类网页设计目标怎么写-程序员宅基地

文章浏览阅读69次。环境保护、 保护地球、 校园环保、垃圾分类、绿色家园、等网站的设计与制作。 总结了一些学生网页制作的经验:一般的网页需要融入以下知识点:div+css布局、浮动、定位、高级css、表格、表单及验证、js轮播图、音频 视频 Flash的应用、ul li、下拉导航栏、鼠标划过效果等知识点,网页的风格主题也很全面:如爱好、风景、校园、美食、动漫、游戏、咖啡、音乐、家乡、电影、名人、商城以及个人主页等主题,学生、新手可参考下方页面的布局和设计和HTML源码(有用点赞△) 一套A+的网_垃圾分类网页设计目标怎么写

C# .Net 发布后,把dll全部放在一个文件夹中,让软件目录更整洁_.net dll 全局目录-程序员宅基地

文章浏览阅读614次,点赞7次,收藏11次。之前找到一个修改 exe 中 DLL地址 的方法, 不太好使,虽然能正确启动, 但无法改变 exe 的工作目录,这就影响了.Net 中很多获取 exe 执行目录来拼接的地址 ( 相对路径 ),比如 wwwroot 和 代码中相对目录还有一些复制到目录的普通文件 等等,它们的地址都会指向原来 exe 的目录, 而不是自定义的 “lib” 目录,根本原因就是没有修改 exe 的工作目录这次来搞一个启动程序,把 .net 的所有东西都放在一个文件夹,在文件夹同级的目录制作一个 exe._.net dll 全局目录

BRIEF特征点描述算法_breif description calculation 特征点-程序员宅基地

文章浏览阅读1.5k次。本文为转载,原博客地址:http://blog.csdn.net/hujingshuang/article/details/46910259简介 BRIEF是2010年的一篇名为《BRIEF:Binary Robust Independent Elementary Features》的文章中提出,BRIEF是对已检测到的特征点进行描述,它是一种二进制编码的描述子,摈弃了利用区域灰度..._breif description calculation 特征点

房屋租赁管理系统的设计和实现,SpringBoot计算机毕业设计论文_基于spring boot的房屋租赁系统论文-程序员宅基地

文章浏览阅读4.1k次,点赞21次,收藏79次。本文是《基于SpringBoot的房屋租赁管理系统》的配套原创说明文档,可以给应届毕业生提供格式撰写参考,也可以给开发类似系统的朋友们提供功能业务设计思路。_基于spring boot的房屋租赁系统论文