歡迎光臨
每天分享高質量文章

7款不錯的 CI/CD工具

時至今日,越來越多的工程團隊開始實行敏捷開發,藉以推動更短、更快的釋出週期。而程式碼庫的增長與更高的生產構建頻率,也帶動持續整合與持續部署/交付工具快速興起。
如果您有意提升釋出頻率,或者是不太清楚哪些工具能夠幫助您達成這一標的——別擔心。在今天的文章中,我們將探討一系列最流行的CI / CD工具,並對其特性作出剖析。

 

什麼是CI / CD?其意義何在?

在深入研究CI / CD自動化工具之前,我們首先需要瞭解其基本概念。正如我們所提到的,持續整合和持續部署通常與敏捷開發環境齊頭併進。在這類環境中,團隊希望在構建完成後立即將不同的程式碼段部署到生產環境中。 
使用CI / CD工具可自動完成構建,測試和部署新程式碼的過程。即使只更改了其中一行甚至是一個字元,團隊成員都可以立即獲得有關其程式碼生產準備情況的反饋。如此一來,每位團隊成員都可以將他們的程式碼推送到生產體系當中,而構建,測試和部署的過程則自動完成,以便他們放心大膽地繼續處理應用程式的下一部分。 
但在為工作流新增自動化的過程中,將程式碼部署到生產環境中並不意味著萬事大吉。您必須繼續追蹤錯誤情況,從而真正讓新功能為使用者服務。對於大多數團隊而言,在生產中進行除錯是一項需要手動執行且異常繁瑣的任務,需要他們投入數小時甚至數天全程關註日誌篩選工作。但是,現在我們可以透過大規模自動化方式實現根本原因分析,瞭解錯誤發生的位置、時間以及根本性原因。
瞭解到在我們的工作流程中使用CI模型實現自動化的重要意義,接下來就要看看哪款工具最符合我們的實際需求了。

 

Jenkins

Jenkins是CI市場中最知名且最常見的名號之一。其最初是由Sun公司的一位工程師打造的一個輔助專案,並迅速擴充套件為最大的開源CI工具之一,可幫助工程團隊實現自動化部署。順帶一提:我們OverOps也在使用Jenkins以及自己開發的CLI工具。 
它有什麼作用?
與其它CI工具一樣,Jenkins可以自動構建、測試及部署任務。該工具支援Windows、Mac OSX以及各類Unix系統,可以使用本機系統軟體包以及Docker進行安裝,也可以在安裝了Java Runtime Environment(JRE)的任何機器上獨立安裝。
在實踐方面,Jenkins允許團隊中的任何成員將他們的程式碼推送到build當中,並立即獲得其準備情況的反饋。當然,在大多數情況下,您的團隊需要透過自定義要求對Jenkins進行一些調整和定製。 
Jenkins的強大之處體現在其豐富的外掛生態系統上。它提供超過1000款外掛選項,可以整合幾乎所有市場上可用的工具和服務。作為一款開源工具,您還可以選擇自定義適合自身情況的解決方案——就像我們一樣。然而,大家需要投入一定時間與精力來確保它適合您的實際需求。
價格:免費 
一點補充:我們要再次強調:開源+外掛=社群。您可以想到的任何配置、工作流程、需求或者願望,都可以在Jenkins及其外掛的幫助下成為現實。 
一句話總結:如果您正在尋找便宜(免費!)的CI解決方案,並願意投入精力來定製您的環境並需要使用者社群的支援,Jenkins無疑是您的最佳選擇。
標準Jenkins工作清單

 

Travis CI

Travis CI是CI / CD生態系統中比較常見的名號之一,最初設定為開源專案,併在多年擴充套件之後轉為閉源專案。它專註於CI工作,透過自動化測試和警報系統提高構建過程的效能。
它有什麼作用?
Travis-CI允許使用者在部署程式碼時對程式碼進行快速測試。它支援程式碼大小變更,可識別構建與測試中發生的一切變更。檢測到變更後,Travis CI可以提供有關變更是否成功的反饋。 
開發人員可以使用Travis CI對執行時進行觀察,並行執行多項測試,並將該工具與Slack、HipChat以及Email等整合,從而透過多種渠道獲取問題或構建失敗通知。 
Travis CI支援容器構建,並支援Linux Ubuntu和OSX。您可以在不同的程式語言中使用它,例如Java,C#,Clojure,GO,Haskell,Swift,Perl等等。其具備一份相對有限的第三方整合串列,但由於關註重點在於CI而非CD,因此其可能解決不了您的實際問題。 
價格:雖然Travis CI為開源專案且提供免費支援,但同時亦提供專有版本,價格從自助版本的69美元/月到高階版本的489美元/月不等。 
一點補充:為確保始終備份最近的構建版本,Travis CI會在您執行新構建時將GitHub儲存庫克隆到新的虛擬環境中。
一句話總結:如果您的程式碼是開源的,並且您更關註構建中的持續整合部分,那麼Travis CI值得一試。
Travis CI儀錶板

 

Circle CI

Circle CI是一款基於雲的工具,可自動執行整合和部署任務。它還強調在部署之前對程式碼中的每項變更進行測試,且使用多種方法——如單元測試、整合測試與功能測試等。該工具支援容器、OSX以及Linux環境,可以在私有雲或您自己的資料中心內執行。
它有什麼作用?
Circle CI能夠與您當前的版本控制系統(如GitHub,Bitbucket等)整合,併在檢測到變更時執行多種操作。其支援的變更方式包括提交,開啟PR或任何其他程式碼更改。 
每項程式碼更改都會根據您的初始配置和首選項建立build,併在潔凈容器或虛擬機器中執行測試。每個build都將接受多項操作處理,包括依賴性檢查、測試與部署等。如果build透過測試,則可以透過AWS CodeDeploy、Google容器引擎、Heroku、SSH或您選擇的任何其他方法進行部署。
存在問題的build和測試結果將透過Slack,HipChat,IRC或多種其他整合頻道進行傳送,團隊可以藉此快速瞭解變更結果。需要強調的是,Circle CI在配合各類不同語言時,可能要求進行一些調整與更改,因此建議大家首先檢視所選語言的說明檔案。 
價格:對於Linux使用者,第一套容器是免費的,每套額外容器每月50美元。對於構建1-5個build/天的團隊,以及私人資料中心或雲端計算環境,OSX版本起價為39美元/月,年度合同的價格為每使用者35美元/月。
一點補充:Circle CI可以自動清除GitHub上的冗餘build。如果在同一分支上觸發了較新的build,則該工具會識別並取消正在執行或排隊的舊build——包括尚未完成的build。 
一句話總結:如果你正在尋找一款GitHub友好型工具,要求它背後擁有廣泛的社群,並可以在私有雲或您自己的資料中心內執行,那麼Circle CI絕對值得一試。
Circle CI儀錶板

 

TeamCity

TeamCity是由JetBrains開發的CI / CD伺服器。其提供“開箱即用”的持續整合功能,並允許使用者根據自己的需要實現適配。它支援多種語言(Java,.NET,Ruby等),而JetBrains也為其提供多款支援工具與出色的說明檔案。 
它有什麼作用?
作為CI / CD工具,TeamCity旨在改善釋出週期。有了它,您可以即時檢視測試結果,檢視程式碼改寫率並查詢重覆項,同時自定義builod持續時間、成功率、程式碼質量及其他基於統計資訊的自定義指標。 
一旦TeamCity在您的版本控制系統中檢測到更改,它就會向佇列新增build。伺服器找到空閑且相容的build代理,並將排隊中的build分配給此代理。此後,由該代理執行構建步驟。
在此過程中,TeamCity伺服器會記錄各項日誌訊息、測試報告以及正在進行的其他更改。這些更改會實時儲存並上傳,意味著使用者可以在build更改時瞭解構建過程中發生的情況。該工具還提供了在不同平臺和環境中同時執行並行buld的選項。 
價格:專業伺服器許可免費提供,其中包括100套build配置、對所有產品功能的完全訪問許可權、透過論壇和問題跟蹤器獲得支援以及3個build代理。企業伺服器許可起價為1999美元,且您需要的代理數量越多,價格也會隨之提高。
一點補充:TeamCity附帶有gated提交選項,可以防止開發人員破壞版本控制系統中的原始碼。其具體原理是在提交之前,首先以遠端方式執行build實現本地變更,從而確保提交內容不存在破壞性風險。 
一句話總結:TeamCity在過去幾年中越來越受歡迎,併為市場上的其他CI工具帶來了不錯的發展方向指引。如果您有興趣追蹤構建與測試過程,或者想要一套免費且功能強大的CI解決方案,毫無疑問TeamCity值得一試。
TeamCity儀錶板

 

Codeship

Codeship對CI / CD有著不同的看法,並提供託管持續整合即服務方案。該工具最初是為Rails開發人員提供持續整合平臺而構建的; 當時,他們需要在GitHub上託管自己的程式碼並將其部署到Heroku。由於極高的人氣與旺盛的需求,該公司多年來一直不斷擴充套件以支援其他技術方案。
它有什麼作用?
Codeship有兩種不同的產品,每種都有其優缺點。Codeship Basic允許透過Web UI和交鑰匙部署連線程式碼庫以設定CI / CD流程。它支援預配置CI環境,並允許多個不同的build在同一構建虛擬機器上執行。 
Codeship Pro使用Docker定義CI / CD環境,藉此執行構建管道。它具有對構建環境的完全控制能力,允許您定義在其中執行的具體內容。Pro版本還提供預分支快取,設定對哪些映象以及工作流的哪個部分進行快取,且支援並行部署。 
整體而言,Codeship支援多種語言,例如Java、Go、Node.js、Python以及Ruby等。在部署方面,Basic版本支援AWS、Heroku、Azure和Kubernetes,而Pro還額外支援AWS ElasticBeanstalk、Google App Engine以及Digital Ocean。 
價格:免費計劃每月支援100個程式碼更新版本,且對專案、使用者及團隊數量不做限制。它還提供併發構建和並行測試管道。根據您需要的併發構建和並行測試管道數量,Basic與Pro版本的價格在49美元至79美元/月之間。
一點補充:Codeship提供一整套實用程式、指令碼及Docker映象集合,可以與該工具一起使用。該公司指出,其中一些還能夠與其他類似的工具一同使用。此集合包括可自定義的外部服務部署指令碼,用於安裝預設情況下未包含在構建虛擬機器上的特定軟體版本的指令碼等。
一句話總結:在同一名頭之下提供2種不同的工具可能看起來有點奇怪,但這也使得開發人員可以選擇更適合不同型別客戶的各種元素。由於Basic和Pro皆為免費提供,因此對於您的CI需求來說,這應該是個不錯的選擇。
Codeship儀錶板

 

GitLab CI

GitLab亮相後不久,該團隊即推出了持續整合服務GitLab CI。除了測試和構建專案之外,該工具還可以將build部署到您的基礎設施當中。而且只要瞭解各具體程式碼段的位置,您就能夠對其開展針對性追蹤。
它有什麼作用?
GitLab CI作為GitLab的一部分免費提供,且設定過程相當便捷。要開始使用GitLab CI,您首先需要將.gitlab-ci.yml檔案新增到程式碼庫的根目錄,同時配置GitLab專案以使用Runner。之後,每次提交或推送都將觸發包含以下三個步驟的CI流程:構建,測試和部署。
每個build的可以分為多個作業,並且可以在多臺機器上並行執行。該工具可以立即反饋build的測試結果,讓使用者知道出現了什麼問題或者過程中是否存在問題。 
價格:社群版免費提供。對於包含發行板、程式碼審查期間多項批准、高階語法搜尋以及其它一些功能的版本,起價為3.25美元/月。
一點補充:GitLab(和GitLab CI)是一個開源專案。換句話說,您可以訪問並修改GitLab 社群版及企業版的原始碼。 
一句話:如果您正在使用GitLab,那麼嘗試將GitLab CI解決方案作為其中的一部分無疑是種明智之舉。
GitLab CI儀錶板

 

Bamboo

Bamboo是Atlassian產品套件的一部分。與其他工具類似,它也提供程式碼的構建,測試和部署功能並支援多種語言。它與其他與CI週期相關的Atlassian產品(如JIRA和Bitbucket)擁有強大的整合能力/協同效應。
它有什麼作用?
構建,測試和部署都是Bamboo軟體包的一部分,測試部分是在Bamboo Agents的幫助下完成的。與Java監控機制中的代理類似,Bamboo也提供兩種代理型別:本地代理作為Bamboo伺服器行程的一部分執行,而遠端代理則在其他伺服器與計算機上執行。每個代理都被給予與其功能相匹配的build,這意味著使用者可以將不同的代理分配給不同的build。
Bamboo的主要優勢在於同Atlassian其他產品(如JIRA和Bitbucket)的緊密聯絡。使用Bamboo,您可以看到自上次部署以來引入的程式碼更改和JIRA問題。這樣,開發人員就可以同步自己的工作流程、始終保持程式碼正常執行,並瞭解下一個版本的開發方向以及需要修複的部分。
價格:Bamboo定價由代理的數量決定。無限制本地代理的基礎定價為10美元,最多10項作業,沒有遠端代理功能。下一級別為800美元,提供無限作業與本地代理數量,以及1個遠端代理。遠端代理數量越高,價格也將隨之增長,但最高不會超過44000美元。 
一點補充:Bamboo擁有Atlassian的強大支援,並可與該公司現有產品配合起來建立理想的工作流程。如果您想以無縫方式將JIRA和Bitbucket新增到您的CI流程,並且願意為此付費,那麼Bamboo值得一試。 
一句話總結:只要願意接受付費方案,並將其與Bitbucket和JIRA配合使用,Bamboo就是一款極為強大的工具。
Bamboo儀錶板


總結

對更快、更短髮布週期的要求,促使開發團隊必須找到能夠支援新型軟體交付方法的工具與工作流程。每週、每天甚至每小時釋出生產成果也意味著將有更多錯誤出現在生產體系當中。現在,大家已經熟悉了CI / CD工作流程,下一步則應檢查完整CI / CD工具鏈中缺少的環節,以及如何將其新增到工作流程中。
原文連結:https://blog.takipi.com/jenkins-vs-travis-ci-vs-circle-ci-vs-teamcity-vs-codeship-vs-gitlab-ci-vs-bamboo/

3天Kubernetes線下實戰培訓

Kubernetes應用實戰培訓將於2018年9月14日在上海開課,3天時間帶你係統掌握Kubernetes本次培訓包括:容器特性、映象、網路;Docker特性、架構、元件、概念、Runtime;Docker安全;Docker實踐;Kubernetes架構、核心元件、基本功能;Kubernetes設計理念、架構設計、基本功能、常用物件、設計原則;Kubernetes的實踐、執行時、網路、外掛已經落地經驗;微服務架構、DevOps等,點選下方圖片檢視詳情。

贊(0)

分享創造快樂

© 2022 知識星球   網站地圖