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

智能推荐

TCP/IP协议 - 三次握手四次挥手(入门易懂版)_6、三次握手、四次挥手-程序员宅基地

文章浏览阅读4.3k次,点赞9次,收藏26次。握手通俗理解为两个人见面Say Hai,客户端和服务端建立连接挥手就可以理解为两个人结束会面,要Say Goodbai,客户端和服务端断开连接要了解什么是三握四挥,必须要了解一个重要的知识点:什么是TCP报文格式,也就是三握四挥中传送的内容是什么,遇到什么格式才能触发服务端和客户端的交流。TCP报文格式TCP报文是TCP层传输的数据单元,也叫报文段从上向下依次来看:1.端口号:用来标识同一台计算机的不同的应用进程,比如熟悉的80端口,3306..._6、三次握手、四次挥手

tensorflow基础学习-anaconda方式安装tensorflow(gpu-2.5版本)_anaconda安装tf2.15-程序员宅基地

文章浏览阅读3.9k次,点赞6次,收藏30次。基于tensorflow1.0+太混乱了,博主转战2.5tensorflow1.0+相应的安装过程可以见tensorflow1.15.0安装1、安装前确定版本信息2、创建虚拟环境打开Anaconda中的 Anaconda Prompt输入命令创建新的虚拟环境conda create -n TF25GPU python=3.7.0注意安装的版本,这里的版本和上面的表格是对应的3、激活虚拟环境输入命令conda activate TF25GPU 在服务器上输入必须加入conda_anaconda安装tf2.15

QML ListView 实现 滚动条方式_qml listview滚动条-程序员宅基地

文章浏览阅读3.2k次。import QtQuick 2.0import QtQuick.Controls 2.1Rectangle { id: rect width: 1920 height:1180 color:"black" ListView { id: list_view anchors.fill:parent mod..._qml listview滚动条

Windows如何通过Anaconda定时调用python脚本_anaconda中的python怎么做定时调用-程序员宅基地

文章浏览阅读1.3k次。如果你用的是Anaconda环境下的python,先把.ipybn文件转为.py文件在win 搜索框输入: 任务计划程序_anaconda中的python怎么做定时调用

Laravel-admin 后台的自定义页面用法_laravel-admin $form->action-程序员宅基地

文章浏览阅读1.7w次。Laravel-admin 这个后台很好用,几乎省去了html和js的困扰,让后台CURD变得优雅简洁。这是一个自定义面的Demo路由定义: $router->get('mails/send', 'MailController@send'); $router->post('mails/send', 'MailController@send');控制中写法..._laravel-admin $form->action

flink sql读取kafka数据写入数据湖Apache Hudi_kafka队列 flink 数据湖-程序员宅基地

文章浏览阅读781次。创建生产者[bigdata@bigdata1 bin]$ sh kafka-console-producer.sh --broker-list bigdata1:9092,bigdata2:9092,bigdata3:9092 --topic test_topic>{"id":13,"name":"justin"}创建kafka表CREATE TABLE user_behavior ( id BIGINT, name STRING) WITH ( 'connecto._kafka队列 flink 数据湖

随便推点

用Python读取excel文件的指定单元格_python 查找excel内容所在的单元格-程序员宅基地

文章浏览阅读1.2k次,点赞11次,收藏10次。常用的读取Excel文件数据的Python库有3种:(1)xlrd(3)pandas读取xlsx或者xlsm文件,选择openpyxl和pandas提供的接口;如果是xls文件,可以选择xlrd。这里记录一下我在读取.xlsm文件过程中遇到的问题、以及验证通过的代码。_python 查找excel内容所在的单元格

【捷克生活点滴】—系列之:毕业感言_捷克大学毕业难 原创-程序员宅基地

文章浏览阅读350次。 这一天,我等了已经很久了! 终于等到实习完了!这一年,说长不长,说短不短,不过马马虎虎总算过完了,可以回学校办理毕业了! 这一天,我已经盼了很久了!在学校这个漫长的温室里,我生活了整整14年,这一天后,我总算彻底自主自由了! 学校这个机构,不像商店和谈生意,还有价钱可讲,有商量的余地,可在学校,学校说要交多少费用,你就不得不交,而且一分都不_捷克大学毕业难 原创

springboot 1.5.x slf4j + logback 动态修改日志输出级别与actuator权限控制_logback日志读写权限-程序员宅基地

文章浏览阅读1.2k次。首先要求springboot 版本为1.5.x之上。2.x未试验过下面我们就来看看Spring Boot 1.5.x中引入的一个新的控制端点:/loggers,该端点将为我们提供动态修改Spring Boot应用日志级别的强大功能。该功能的使用非常简单,它依然延续了Spring Boot自动化配置的实现。首先导入依赖 actuator<dependency> &l..._logback日志读写权限

移动光猫路由改桥接降低延时初尝试_gs3101改桥接模式-程序员宅基地

文章浏览阅读1.5w次。1.为什么要改光猫桥接模式?1、光猫内置 WiFi 信号差。2、可能会存在运营商 DNS 劫持和 http 劫持,强制推送广告等问题3、解锁更多高级玩法:配置软路由、多播、科学上网、过滤广告、动态域名、端口映射、智能流控等2.结论光猫型号:吉比特GS3101管理员账号:CMCCAdmin 密码:aDm8H%MdA其他光猫仅供参考3.方法光猫超管部分普通用户登陆路由器打开路由器管理地址192.168.1.1,先使用路由器后面的账号密码如user,cnb28登陆到路由器中。2.打开_gs3101改桥接模式

上善若水_上善若水 csdn-程序员宅基地

文章浏览阅读479次。《道德经到底在说什么》(十)上善若水伯阳 · 上善若水。在上一章,道德经由天地生万物而不自生,故能长生的道理;递推到圣人治天下,因后身外身故能天下治的道理。这是从义理的高度上,讲了圣人治天下的理念。本章承接上一章,继续往下递推,侧重于讲圣人如何在具体方法上治理天下。上,最高的。善,高明的方法和行为。在之前的章节中,已经交代过,在道德经全书中,所有的善字,无一处是_上善若水 csdn

Sawyer机械臂学习系列之Moveit!配置_ros2 sawyer-程序员宅基地

文章浏览阅读1.6k次,点赞5次,收藏19次。Sawyer机械臂学习系列之Moveit!配置_ros2 sawyer

推荐文章

热门文章

相关标签