TeamCity VS Jenkins:选择正确的CI / CD工具

共 7059字,需浏览 15分钟

 ·

2020-10-12 18:40


每个软件开发周期都涉及三个主要阶段:构建,测试和部署。这三个阶段中的任何一个滞后都会导致产品发布的延迟。为了避免此类延迟,组织依靠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比较的快照

特征TeamCityJenkins
产品类别内部部署自托管/内部部署
安装与安装简单简单
使用方便打开即用的用户友好性相对于外观而言,用户关注度相对较低,因为它着重于功能性
官方支持没有官方支持,但是在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错误


浏览 65
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报