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

智能推荐

使用nginx解决浏览器跨域问题_nginx不停的xhr-程序员宅基地

文章浏览阅读1k次。通过使用ajax方法跨域请求是浏览器所不允许的,浏览器出于安全考虑是禁止的。警告信息如下:不过jQuery对跨域问题也有解决方案,使用jsonp的方式解决,方法如下:$.ajax({ async:false, url: 'http://www.mysite.com/demo.do', // 跨域URL ty..._nginx不停的xhr

在 Oracle 中配置 extproc 以访问 ST_Geometry-程序员宅基地

文章浏览阅读2k次。关于在 Oracle 中配置 extproc 以访问 ST_Geometry,也就是我们所说的 使用空间SQL 的方法,官方文档链接如下。http://desktop.arcgis.com/zh-cn/arcmap/latest/manage-data/gdbs-in-oracle/configure-oracle-extproc.htm其实简单总结一下,主要就分为以下几个步骤。..._extproc

Linux C++ gbk转为utf-8_linux c++ gbk->utf8-程序员宅基地

文章浏览阅读1.5w次。linux下没有上面的两个函数,需要使用函数 mbstowcs和wcstombsmbstowcs将多字节编码转换为宽字节编码wcstombs将宽字节编码转换为多字节编码这两个函数,转换过程中受到系统编码类型的影响,需要通过设置来设定转换前和转换后的编码类型。通过函数setlocale进行系统编码的设置。linux下输入命名locale -a查看系统支持的编码_linux c++ gbk->utf8

IMP-00009: 导出文件异常结束-程序员宅基地

文章浏览阅读750次。今天准备从生产库向测试库进行数据导入,结果在imp导入的时候遇到“ IMP-00009:导出文件异常结束” 错误,google一下,发现可能有如下原因导致imp的数据太大,没有写buffer和commit两个数据库字符集不同从低版本exp的dmp文件,向高版本imp导出的dmp文件出错传输dmp文件时,文件损坏解决办法:imp时指定..._imp-00009导出文件异常结束

python程序员需要深入掌握的技能_Python用数据说明程序员需要掌握的技能-程序员宅基地

文章浏览阅读143次。当下是一个大数据的时代,各个行业都离不开数据的支持。因此,网络爬虫就应运而生。网络爬虫当下最为火热的是Python,Python开发爬虫相对简单,而且功能库相当完善,力压众多开发语言。本次教程我们爬取前程无忧的招聘信息来分析Python程序员需要掌握那些编程技术。首先在谷歌浏览器打开前程无忧的首页,按F12打开浏览器的开发者工具。浏览器开发者工具是用于捕捉网站的请求信息,通过分析请求信息可以了解请..._初级python程序员能力要求

Spring @Service生成bean名称的规则(当类的名字是以两个或以上的大写字母开头的话,bean的名字会与类名保持一致)_@service beanname-程序员宅基地

文章浏览阅读7.6k次,点赞2次,收藏6次。@Service标注的bean,类名:ABDemoService查看源码后发现,原来是经过一个特殊处理:当类的名字是以两个或以上的大写字母开头的话,bean的名字会与类名保持一致public class AnnotationBeanNameGenerator implements BeanNameGenerator { private static final String C..._@service beanname

随便推点

二叉树的各种创建方法_二叉树的建立-程序员宅基地

文章浏览阅读6.9w次,点赞73次,收藏463次。1.前序创建#include<stdio.h>#include<string.h>#include<stdlib.h>#include<malloc.h>#include<iostream>#include<stack>#include<queue>using namespace std;typed_二叉树的建立

解决asp.net导出excel时中文文件名乱码_asp.net utf8 导出中文字符乱码-程序员宅基地

文章浏览阅读7.1k次。在Asp.net上使用Excel导出功能,如果文件名出现中文,便会以乱码视之。 解决方法: fileName = HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8);_asp.net utf8 导出中文字符乱码

笔记-编译原理-实验一-词法分析器设计_对pl/0作以下修改扩充。增加单词-程序员宅基地

文章浏览阅读2.1k次,点赞4次,收藏23次。第一次实验 词法分析实验报告设计思想词法分析的主要任务是根据文法的词汇表以及对应约定的编码进行一定的识别,找出文件中所有的合法的单词,并给出一定的信息作为最后的结果,用于后续语法分析程序的使用;本实验针对 PL/0 语言 的文法、词汇表编写一个词法分析程序,对于每个单词根据词汇表输出: (单词种类, 单词的值) 二元对。词汇表:种别编码单词符号助记符0beginb..._对pl/0作以下修改扩充。增加单词

android adb shell 权限,android adb shell权限被拒绝-程序员宅基地

文章浏览阅读773次。我在使用adb.exe时遇到了麻烦.我想使用与bash相同的adb.exe shell提示符,所以我决定更改默认的bash二进制文件(当然二进制文件是交叉编译的,一切都很完美)更改bash二进制文件遵循以下顺序> adb remount> adb push bash / system / bin /> adb shell> cd / system / bin> chm..._adb shell mv 权限

投影仪-相机标定_相机-投影仪标定-程序员宅基地

文章浏览阅读6.8k次,点赞12次,收藏125次。1. 单目相机标定引言相机标定已经研究多年,标定的算法可以分为基于摄影测量的标定和自标定。其中,应用最为广泛的还是张正友标定法。这是一种简单灵活、高鲁棒性、低成本的相机标定算法。仅需要一台相机和一块平面标定板构建相机标定系统,在标定过程中,相机拍摄多个角度下(至少两个角度,推荐10~20个角度)的标定板图像(相机和标定板都可以移动),即可对相机的内外参数进行标定。下面介绍张氏标定法(以下也这么称呼)的原理。原理相机模型和单应矩阵相机标定,就是对相机的内外参数进行计算的过程,从而得到物体到图像的投影_相机-投影仪标定

Wayland架构、渲染、硬件支持-程序员宅基地

文章浏览阅读2.2k次。文章目录Wayland 架构Wayland 渲染Wayland的 硬件支持简 述: 翻译一篇关于和 wayland 有关的技术文章, 其英文标题为Wayland Architecture .Wayland 架构若是想要更好的理解 Wayland 架构及其与 X (X11 or X Window System) 结构;一种很好的方法是将事件从输入设备就开始跟踪, 查看期间所有的屏幕上出现的变化。这就是我们现在对 X 的理解。 内核是从一个输入设备中获取一个事件,并通过 evdev 输入_wayland

推荐文章

热门文章

相关标签