php发展

首页 » 常识 » 常识 » 谁才是世界上最好的CICD工具
TUhjnbcbe - 2021/5/5 20:15:00
北京最好白癜风医院哪家好 https://wapjbk.39.net/yiyuanzaixian/bjzkbdfyy/

作者

韩骏

责编

胡巍巍

出品

CSDN(ID:CSDNnews)

谁才是世界上最好的CI/CD工具?TeamCity、Jenkins、TravisCI、AppVeyor或是AzurePipelines?

在回答这个问题之前,笔者想先问问大家,什么是世界上最好的语言?PHP、Java、Python、JavaScript或是C++?笔者想说,都不是!不同的场景适合用不同的语言,不谈业务场景而讨论哪个语言好,都是耍流氓!

·嵌入式:如果是在内存小于18KB的MCU上,相信C一定是你的首选。

·Web前端:毋庸置疑,JavaScript一定是绝大多数开发者的最爱。

·高并发:高并发场景下,Java或是Go应该是个不错的选择。

看到这里,相信读者已经明白,和编程语言一样,如果要讨论最好的CI/CD工具,一定是要分具体的业务场景。不同的CI/CD工具适合于不同的场景。只有考虑清楚实际的使用场景,才能选出最合适的CI/CD工具。那么,我们就来看看不同的CI/CD工具各种有哪些优势呢?

On-PremisevsHosted

On-Premise需要用户搭建自己的服务器来运行CI/CD工具,而HostedCI/CD工具是一个SaaS服务,不需要用户搭建自己的服务器。

TeamCity和Jenkins属于“On-Premise”阵营,TravisCI属于“Hosted”阵营,而AppVeyor和AzurePipelines则是既能“On-Premise”又能“Hosted”。

如果你在CI/CD过程中,你需要连接到不同的内网服务。那么On-Premise的CI/CD工具适合这样的使用场景,你可以把BuildAgent部署在内网的机器上,这样可以轻松地连接内网资源。

如果你不需要连接内网资源,那么HostedCI/CDService就是你的最佳选择了,有以下几个优势。

·维护成本:HostedCI/CDService可以说是零维护成本了,整个运行环境都由服务商托管。相比于On-Premise的CI/CD工具,使用者需要自己花大量时间搭建与维护服务器,对于HostedCI/CDService来说,使用者完全不需要担心背后服务器的维护。

·Clean的运行环境:假设你在为你的Python项目寻求一个CI/CD工具,而你的Python项目需要同时对Python.7,3.6,3.7进行持续集成,那么HostedCI/CDService完全可以满足你的需要。On-Premise的机器上,你需要对不同的Python版本而烦恼,而HostedCI/CDService每次都会创建一个新的运行环境,想用哪个Python版本就用哪个。

·预装的软件和运行时:每一个项目在做持续集成时,往往会需要依赖不同的运行时和工具链,HostedCI/CDService会帮你预装好许多常用的软件和运行时,大大减少了搭建环境的时间。

价格

价格成本也是我们在技术选型要重点考虑的一点。先来看看On-Premise的TeamCity和Jenkins,虽然他们都是免费使用的,但是使用者都需要搭建自己的服务器,不论是用自己的物理机还是使用Azure或是AWS上的虚拟机,这都是一个花费。

On-Premise的TeamCity和Jenkins看似免费,其实用户需要在服务器上有很大的花费,特别是对于大规模的持续集成的需求下,这会是个很大的价格成本。如果是对于开源项目,HostedCI/CDService有着很大的优势,TravisCI、AppVeyor和AzurePipelines对于开源项目都是完全免费的。

对于私有项目,TravisCI和AppVeyor是收费的,而AzurePipelines有一个月分钟的免费额度。可见,对于私有项目,AzurePipelines有很大的优势。

插件

牛顿曾经说过:如果说我看得比别人更远些,那是因为我站在巨人的肩膀上。

这些CI/CD工具的插件就是我们的巨人,这些插件把繁琐复杂的CI/CD流程化繁为简,极大地方便了我们使用。Jenkins、TeamCity和AzurePipelines都有丰富的插件支持,而TravisCI和AppVeyor则是没有的。

从插件数量来看,Jenkins有超过个插件,AzurePipelines有个插件,TeamCity则是个插件。Jenkins的插件生态还是相当强大的。所以,从插件角度来看,Jenkins会是首选。

SCMSupport

Jenkins、TeamCity、AzurePipelines以及AppVeyor都支持不同种类的源代码管理工具(SCM):GitHub,GitHubEnterprise,Bitbucket,GitLab,AzureRepos,Kiln以及customrepos等等。而TravisCI却只支持GitHub,这是它的一大软肋。

OSsupport

曾经,在很长的一段时间里,在主流的HostedCI/CDService中,TravisCI只支持Linux和macOS,而AppVeyor只支持Windows。

所以大家经常会在一些开源项目上看到,一个项目同时使用了TravisCI+AppVeyor的配置。

早年,最火的开源项目之一VSCode也是如此。然而,去年AzurePipelines的横空出世,打破了这种局面。

AzurePipelines支持Linux、macOS和Windows,使得开发者可以只使用一个HostedCI/CDService就能在三种OS上进行持续集成。

不久后,VSCode也切换到了AzurePipelines上。也许正是因为AzurePipelines的出现,使得TravisCI和AppVeyor感到了压力,TravisCI在不久后宣布支持Windows(预览版),而AppVeyor也支持了Linux。

曾经有那么几个月,在操作系统的支持上,AzurePipelines是有着巨大优势的。而如今,TravisCI和AppVeyor都已经缩小了和AzurePipelines的差距。

UIfirstvsYAMLfirst

TeamCity、Jenkins、TravisCI、AppVeyor和AzurePipelines都支持以YAML文件来定义持续集成的配置。

通过YAML文件来定义,灵活性和可扩展性都很强。然而,对于初学者来说YAML文件的配置有一定的学习曲线。TeamCity、Jenkins和AzurePipelines支持用过UI界面的方式来定义持续集成的配置,大大降低了初学者的学习成本。

Cronjob

在一些CI/CD的使用场景中,我们有时会需要在某个时间点来触发持续集成,比如每个工作日的早上八点进行持续集成。

这时,我们就是需要有cronjob的支持。在cronjob的支持上,AppVeyor做的最好,它支持标准的Crontab语法,使用者可以灵活地定义所需要的持续集成触发时间。

Troubleshooting

有些时候,我们运行持续集成的BuildAgent会出现问题,或者我们希望能直接登录到BuildAgent对失败的持续集成进行问题排查。

对于On-Premise的TeamCity和Jenkins,由于机器是用户自己搭建的,用户可以方便地登录到自己的机器进行问题排查。

而HostedCI/CDService的机器是由第三方托管的,要进行问题排查,是比较难的。

而AppVeyor却能让用户直接登录到BuildAgent进行问题排查。通过RDP可以登录到Windows的BuildAgent,通过SSH可以登录到Linux的BuildAgent,十分地方便。

谁才是世界上最好的CI/CD工具?

一万个人眼中,有一万个哈姆雷特。一万个CI/CD使用场景中,也会适用于不同的CI/CD工具。那么读者你的使用场景是什么呢?谁才是最适合你的使用场景的CI/CD工具呢?

作者:韩骏,微软研发工程师,VSCode代码贡献者,VSCode及IoT领域专家。

作为码一代,想教码二代却无从下手:

听说少儿编程很火,可它有哪些好处呢?

孩子多大开始学习比较好呢?又该如何学习呢?

最新的编程教育*策又有哪些呢?

下面给大家介绍CSDN新成员:极客宝宝(ID:geek_baby)

戳他了解更多↓↓↓

热文推荐

?不得了!这个AI让企业家、技术人员、投资人同台“互怼”

?“拳打”苹果“脚踢”三星,荣耀0DXO全球第二,仅次华为P30!

?直接拿来用!前端如何快速实现跨平台开发?

?谷歌临时工达1万,外包程序员的出路在哪里?

?直接拿来用!灵跃模组机器人硬核评测(编程篇)

?IEEE回应禁止华为系审稿人;WiFi联盟、蓝牙联盟已恢复华为成员资格;中国计算机学会:暂时中止与IEEE通信学会合作……

?敲诈团伙将黑手伸向宅男,你在家看不可描述的视频,竟被骗走万美元!

?各方最新回应!如何看待IEEE官方声明“学术禁令”?

?代码整洁之道-编写Pythonic代码

?敲代码时,程序员戴耳机究竟在听什么?

点击阅读原文,输入关键词,即可搜索您想要的CSDN文章。

你点的每个“在看”,我都认真当成了喜欢预览时标签不可点收录于话题#个上一篇下一篇
1
查看完整版本: 谁才是世界上最好的CICD工具