每個軟件開發(fā)周期都涉及三個主要階段:構建,測試和部署。這三個階段中的任何一個滯后都會導致產(chǎn)品發(fā)布的延遲。為了避免此類延遲,組織依靠CI / CD工具來自動化這些過程。但是最近,隨著對CI / CD工具的快速需求,選擇泛濫,選擇正確的工具可能是艱巨的任務!
您當然應該關注的兩個流行的CI / CD工具是Jenkins和TeamCity,它們各自具有自己的獨特功能。這兩個CI / CD工具廣泛用于自動將頻繁的代碼更改推送到主分支,同時在每個步驟執(zhí)行DevOps測試以確保構建中的錯誤更少。
在有關TeamCity vs.Jenkins的這篇文章中,我試圖幫助您選擇適合您需要的正確CI / CD工具。在開始進行TeamCity與Jenkins的比較之前,我將從CI / CD的基礎知識開始。如果您已經(jīng)知道它,可以直接進入TeamCity vs. Jenkins部分。
什么是CI / CD?為何重要?
在持續(xù)集成(CI)中,更改經(jīng)常被集成到共享存儲庫中,在其中定期執(zhí)行構建和DevOps測試(可選步驟)以進行早期錯誤檢測,從而提高了產(chǎn)品質(zhì)量。將其與持續(xù)交付結合使用,您將獲得更快,更穩(wěn)定的構建。
持續(xù)交付(CD)僅在CI完成后才發(fā)生,并且由自動管道組成,可以在其中將代碼更改從一個暫存環(huán)境部署到另一個暫存環(huán)境。它包括使軟件可部署所需的所有必要步驟(即使用測試工具進行質(zhì)量檢查,軟件簽名,部署到預生產(chǎn)環(huán)境等)。這使部署更容易,更快捷,同時將錯誤修復和增強上的花費降至最低。
CI / CD通常與Selenium測試自動化一起使用,以在將其推送到新環(huán)境中或集成在一起時對其進行測試,這稱為連續(xù)測試或DevOps測試。CI / CD與TDD(測試驅(qū)動開發(fā))結合使用時,可以有效地結合在一起,因為它可以用于識別產(chǎn)品中與業(yè)務相關的錯誤。
如前所述,有幾種可用的工具,其中一些流行的CI / CD工具是:
Jenkins
TeamCity
Travis CI
Circle CI
Bamboo
GitLab CI
AWS CodePipeline
Azure Pipelines
市場上有如此眾多的CI / CD工具,因此選擇滿足項目需求的工具就成為了挑戰(zhàn)。如果您正在尋找最好的CI / CD工具,那么您來對地方了,因為在這里我們進行了TeamCity與Jenkins的比較。
LambdaTest,一個基于云的跨瀏覽器測試平臺,提供了與流行的CI / CD工具(例如Jenkins,TeamCity,Travis CI等)的集成,因此您可以構建強大的交付渠道以加快上市進程。
JenKins介紹
Jenkins是廣泛使用的開源CI / CD工具之一。它是由Sun的一位工程師作為附帶項目啟動的,后來逐漸發(fā)展成為用于部署自動化的最受歡迎的開源CI工具之一。
它基于Java,可以自動執(zhí)行與軟件的構建,測試,部署和交付相關的任務。Jenkins可在Windows,macOS和其他Unix版本(例如Red Hat,Ubuntu,OpenSUSE等)上使用。除了使用本機安裝軟件包進行安裝外,還可以將其作為Docker或獨立安裝在已安裝JRE(Java運行時環(huán)境)的任何計算機上。
詹金斯(Jenkins)項目產(chǎn)生兩條發(fā)布線–每周和長期支持(LTS)。Jenkins具有高度的可擴展性和豐富的插件,安裝也很容易。借助Jenkins,開發(fā)人員可以專注于其核心活動,因為集成和測試的主要部分由該工具管理。
在撰寫本文時,針對LTS的Jenkins的最新版本分別為2.235.1和每周2.224。
TeamCity簡介
TeamCity是由JetBrains創(chuàng)建的基于Java的CI / CD工具,JetBrains是PyCharm,IntelliJ Idea,RubyMine,ReShaper等其他有用工具的生產(chǎn)者(Source)。小型團隊可以免費使用TeamCity。
該產(chǎn)品的口號是“開箱即用的強大持續(xù)集成”,正如TeamCity提供源代碼控制,構建鏈工具和詳細的構建歷史一樣,它兌現(xiàn)了自己的承諾-像Jenkins這樣的免費工具中沒有這些功能。
可以將其安裝在Windows和Linux服務器上。它還提供對.Net框架的支持,并且可以集成到IDE(如Visual Studio和Eclipse)中。在撰寫本文時,TeamCity的最新版本為2020.1。此版本支持條件構建步驟,您也可以在Kubernetes集群中啟動構建代理。您還可以選擇與流行的項目管理工具(例如Azure DevOps和Jira)集成。
讓我們深入研究流行的CI / CD工具的詳細數(shù)據(jù)– TeamCity vs Jenkins。
TeamCity vs. Jenkins –詳細比較
以下是TeamCity與Jenkins的Google趨勢報告(過去12個月),該報告表明,與TeamCity相比,Jenkins更受歡迎。
這是執(zhí)行TeamCity與Jenkins比較的主要參數(shù)。
1.安裝與配置
安裝和配置TeamCity服務器很容易,因為它只涉及下載適當?shù)腡eamCity服務器安裝并執(zhí)行安裝(或升級)說明。TeamCity官方站點上的大量文檔使此任務更加容易。
Jenkins是一個自包含的Java程序,易于安裝,并且可以在OS X,Windows和基于Unix的操作系統(tǒng)中直接使用。如果已經(jīng)安裝了Java和Apache TomCat,則需要執(zhí)行三個安裝步驟??傮w而言,設置詹金斯的過程很容易。Jenkins的配置是通過Web界面執(zhí)行的,該界面包括內(nèi)置幫助和即時錯誤檢查。
總體而言,如果您按照必要的安裝步驟進行安裝,則Jenkins和TeamCity都非常簡單。
2.可擴展性和定制
Jenkins和TeamCity都提供RESTful API以實現(xiàn)可擴展性。使用TeamCity,您可以通過多種方式進行自定義,交互和擴展服務器。有一些選項可以通過RESTful API執(zhí)行交互,使用構建腳本中的服務消息,以及使用Open API為TeamCity創(chuàng)建插件。可擴展性的水平還取決于所使用的TeamCity的類型。有關TeamCity的可擴展性和自定義的更多詳細信息,請參見此處。
Jenkins的遠程訪問API有三種樣式-XML,Python和具有JSONP支持的JSON。Jenkins中的API用于獲取信息,以觸發(fā)新的構建來創(chuàng)建或復制作業(yè)。
3.插件生態(tài)系統(tǒng)
與TeamCity相比,Jenkins的插件生態(tài)系統(tǒng)更加成熟。主要原因是社區(qū)參與了詹金斯的發(fā)展。TeamCity有大約400個插件(更精確地說是393個)人群開發(fā)的插件。這些插件可在TeamCity的插件頁面上下載。插件必須單獨安裝,因為它們不一定是商業(yè)產(chǎn)品的一部分。
通過使用Open API,開發(fā)人員可以創(chuàng)建用于與版本控制系統(tǒng),構建工具,IDE,通知程序和服務器運行狀況報告集成的插件。
相比之下,Jenkins在社區(qū)及其豐富的插件生態(tài)系統(tǒng)中蒸蒸日上。在撰寫本文時,Jenkins提供了1500多個受社區(qū)支持的插件,并支持項目中的構建,部署和自動化。由于插件的范圍從構建工具到特定于語言的開發(fā)工具,它使自定義任務簡單且具有成本效益,因為您不需要昂貴的內(nèi)部自定義。
4.云與密鑰集成
TeamCity通過插件和非捆綁插件提供與流行的云解決方案的集成。它通過在流行的云平臺上動態(tài)擴展其構建代理來利用云計算的優(yōu)勢。
通過插件進行云集成的示例很少有Amazon EC2,VMWare vSphere和Kubernetes(在2020.1版中受支持)。云集成的非捆綁插件是Windows Azure中,谷歌云,數(shù)字海洋云,和更多。對于對在TeamCity中實現(xiàn)云支持感興趣的開發(fā)人員,有詳細的文檔。有關TeamCity與云(IAAS)解決方案集成的詳細信息。
除了云集成,它支持與碼頭工人,Maven的,Visual Studio團隊服務,的NuGet,VCS托管服務,并重點整合更多。
Jenkins還可以使用插件與流行的云平臺集成,例如Amazon EC2,VMWare vSphere,Google Cloud,Atlassian Cloud等。以下是有關針對流行云平臺的Jenkins安裝和配置的詳細信息:
平臺下載鏈接
亞馬遜EC2https://plugins.jenkins.io/ec2/
谷歌云https://cloud.google.com/jenkins
微軟Azurehttps://docs.microsoft.com/zh-CN/azure/developer/jenkins/
Digital Oceanhttps://plugins.jenkins.io/digitalocean-plugin/
Atlassian Cloudhttps://confluence.atlassian.com/adminjiracloud/integrate-jira-software-cloud-with-jenkins-972355471.html
5.社區(qū)支持
TeamCity和Jenkins都有一個活躍的社區(qū)論壇。Jenkins的優(yōu)勢在于,與TeamCity相比,它的開發(fā)和使用時間更長。活躍且不斷發(fā)展的社區(qū)是Jenkins的主要優(yōu)點之一。
常規(guī)主題和插件開發(fā)是TeamCity社區(qū)的兩個部分。社區(qū)有助于知識共享和問題共享。除社區(qū)論壇外,TeamCity還擁有一個活躍的TeamCity博客,該博客中TeamCity團隊提供與產(chǎn)品和功能更新有關的信息。
在TeamCity與Jenkins的比較中,就社區(qū)而言,Jenkins在TeamCity方面具有較高優(yōu)勢。由于Jenkins是一個開源項目,因此Jenkins的用戶依賴社區(qū)來滿足大多數(shù)需求(即安裝,故障排除等)。與Jenkins項目和社區(qū)互動的一些流行方式是經(jīng)驗共享,編碼,翻譯,文檔,審查,設計等。
6.功能
TeamCity和Jenkins具有強大的功能集,使該產(chǎn)品非常適合CI / CD。
技術意識是TeamCity的主要賣點。由于用于集成的方法,它被稱為“智能CI服務器”。有了對VS項目的支持,您將獲得對測試框架,代碼覆蓋率,工具版本的自動檢測,靜態(tài)代碼分析等的支持,所有這些支持都是現(xiàn)成提供的,不需要在構建腳本或其他插件安裝。
可以訪問ReShaper和IntelliJ IDEA對Java和.NET代碼進行代碼分析和檢查,從而有助于確保更好的代碼質(zhì)量。
由于插件的可用性,Jenkins不僅用于構建代碼,而且還用于分析代碼。幾乎所有版本控制系統(tǒng)和構建環(huán)境均受支持。在詹金斯(Jenkins)項目下實施了許多協(xié)作計劃,這些計劃有助于詹金斯(Jenkins)的擴張。
7.易用性
與Jenkins相比,TeamCity提供了更好,更清晰的界面。該界面可以根據(jù)要求輕松定制。這并不意味著Jenkins不可用,主要的可用性差異在于Jenkins更加關注功能而不是可用性(即功能先于外觀)。
TeamCity的主要組件是服務器,而瀏覽器托管的界面用于管理項目,代理和項目配置。
如果您的團隊精通Jenkins及其插件生態(tài)系統(tǒng),則經(jīng)驗可能會有所不同。如果您的團隊正在尋找更友好的選擇(即易于配置和易于使用),則應簡要介紹一下TeamCity。
8.托管
TeamCity僅在本地版本中可用。如果打算像在自托管服務器上那樣設置TeamCity,則可以使用反向代理(Nginx)進行相同的操作。與其嘗試對托管的TeamCity進行這些其他配置,不如嘗試Jenkins。
Jenkins提供基于云和內(nèi)部部署的版本。Jenkins適合在云中安裝以運行自托管管道。有關使用Jenkins進行規(guī)模設計的詳細文章是利用Jenkins的本地CI / CD優(yōu)勢的很好參考。
9.發(fā)布周期
在發(fā)布周期方面,TeamCity和Jenkins同樣出色。TeamCity 2020.1.1已于2020年6月23日發(fā)布。更改日志已得到詳細記錄,您可以選擇下載或回退以前的版本。
Jenkins的發(fā)布也不錯。它遵循在Ubuntu中也使用的LTS(長期支持)發(fā)行概念。Jenkins的最新穩(wěn)定版本是2020年6月17日發(fā)布的2.235.1。有單獨的LTS更新日志和每周更改日志。
10.分布式運行(或執(zhí)行)
TeamCity和Jenkins都可以分布式運行,即任務通過不同的計算機運行,而不會影響GUI(圖形用戶界面)。
重要的是要注意,只有Jenkins可以使用其運行GUI相關任務的相同實例。這可能會導致詹金斯表現(xiàn)不佳。
11.并行性
TeamCity與Jenkins的并行性比較意味著任務可以在同一臺計算機上同時運行,而分布式則表明任務可以在不同的計算機上擴展。
您可以在TeamCity和Jenkins上針對不同的構建和環(huán)境運行并行構建。詹金斯(Jenkins)通過并行階段執(zhí)行此操作,這是幾年前在產(chǎn)品中引入的功能。
并行化在某種程度上起作用,直到運行構建的工具支持它為止。TeamCity并不限制支持并行性的工具使用它(Source)。
另一方面,Jenkins中的并行化只是要啟用Parallel Test Executor插件。TeamCity的用戶還提到Jenkins在并行性方面更加友好。
Jenkins支持并行構建,但是它們共享相同的環(huán)境,這可能導致共享資源出現(xiàn)問題??傮w而言,在TeamCity與Jenkins的比較中,Jenkins贏得了并行構建(或并行化)方面的支持。
12.開源或商業(yè)
Jenkins是開源的(根據(jù)MIT許可證獲得),可以免費使用。由于它是免費的,因此許多較小的組織更喜歡Jenkins而不是TeamCity。所涉及的唯一成本將是運行基礎結構。廣泛的插件和在線社區(qū)是Jenkins的關鍵支柱。
TeamCity有兩種版本(Professional Server許可證和Build Agent許可證),您可以根據(jù)需要選擇合適的版本。這是TeamCity定價結構的要點:
免費提供100種構建配置和3種構建代理。
額外的構建代理許可證售價299美元,其中包括一個附加的構建代理。
還有其他的選擇-一個為創(chuàng)業(yè)陡峭的50%的折扣,并免費為開源項目。有關TeamCity定價的更多詳細信息,請參見此處。
如果價格是一個因素,您應該選擇Jenkins而不是TeamCity,因為Jenkins是開源的,可以免費使用。
在LambdaTest,我們?yōu)槟腄evOps測試工作提供了與流行的CI / CD工具的集成,以幫助您建立健壯的交付渠道,以加快上市速度
TeamCity與Jenkins比較快照
這是TeamCity與Jenkins比較的快照
特征TeamCityJenkins
產(chǎn)品類別內(nèi)部部署自托管/內(nèi)部部署
安裝與安裝簡單簡單
使用方便打開即用的用戶友好性相對于外觀而言,用戶關注度相對較低,因為它著重于功能性
官方支持是沒有官方支持,但是在IRC,Jenkins論壇和其他支持渠道上提供了廣泛支持。
插件生態(tài)系統(tǒng)沒有那么豐富的插件生態(tài)系統(tǒng)插件蓬勃發(fā)展(目前有近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,事件等。
開源或商業(yè)免費提供100個構建配置免費(開源)
兩種產(chǎn)品在功能比較方面沒有太大差異,您需要有意識地指出適合該項目的產(chǎn)品類型。您是否打算使用像Jenkins這樣的開源CI / CD工具,該工具功能豐富但使用起來不太友好?您是否要使用像TeamCity這樣的高級替代產(chǎn)品,它又功能豐富且用戶友好?答案應該與您的期望(從工具本身)和總體項目要求(包括預算)一起劃掉。
總而言之
我詳細介紹了兩種流行的CI / CD工具-Jenkins和TeamCity。選擇正確的CI / CD工具對于加快上市速度至關重要。同樣,最近的DevOps測試也起著至關重要的作用,以確保構建質(zhì)量。對于Web應用程序的DevOps測試,您可以選擇Selenium來執(zhí)行自動瀏覽器測試,并且可以使用云Selenium Grid來進行,也可以擴展測試工作。與選擇正確的測試自動化框架以加快測試活動一樣重要。
如何在Selenium WebDriver中處理Web表?Python中的正則表達式(二)Python中的正則表達式和示例Python中的文件處理Python中的用戶定義異常與NZEC錯誤