時至今日,愈來愈多的工程團隊開始實行敏捷開發,藉以推進更短、更快的發佈週期。而代碼庫的增加與更高的生產構建頻率,也帶動持續集成與持續部署/交付工具快速興起。
若是您有意提高發布頻率,或者是不太清楚哪些工具可以幫助您達成這一目標——別擔憂。在今天的文章中,咱們將探討一系列最流行的CI / CD工具,並對其特性做出剖析。
什麼是CI / CD?其意義何在?
![640](http://static.javashuo.com/static/loading.gif)
在深刻研究CI / CD自動化工具以前,咱們首先須要瞭解其基本概念。正如咱們所提到的,持續集成和持續部署一般與敏捷開發環境齊頭並進。在這類環境中,團隊但願在構建完成後當即將不一樣的代碼段部署到生產環境中。
使用CI / CD工具可自動完成構建,測試和部署新代碼的過程。即便只更改了其中一行甚至是一個字符,團隊成員均可以當即得到有關其代碼生產準備狀況的反饋。如此一來,每位團隊成員均可以將他們的代碼推送到生產體系當中,而構建,測試和部署的過程則自動完成,以便他們放心大膽地繼續處理應用程序的下一部分。
但在爲工做流添加自動化的過程當中,將代碼部署到生產環境中並不意味着萬事大吉。您必須繼續追蹤錯誤狀況,從而真正讓新功能爲用戶服務。對於大多數團隊而言,在生產中進行調試是一項須要手動執行且異常繁瑣的任務,須要他們投入數小時甚至數天全程關注日誌篩選工做。可是,如今咱們能夠經過大規模自動化方式實現根本緣由分析,瞭解錯誤發生的位置、時間以及根本性緣由。
瞭解到在咱們的工做流程中使用CI模型實現自動化的重要意義,接下來就要看看哪款工具最符合咱們的實際需求了。
Jenkins
![640](http://static.javashuo.com/static/loading.gif)
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無疑是您的最佳選擇。
![640](http://static.javashuo.com/static/loading.gif)
標準Jenkins工做清單
Travis CI
![640](http://static.javashuo.com/static/loading.gif)
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值得一試。
![640](http://static.javashuo.com/static/loading.gif)
Travis CI儀表板
Circle CI
![640](http://static.javashuo.com/static/loading.gif)
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絕對值得一試。
![640](http://static.javashuo.com/static/loading.gif)
Circle CI儀表板
TeamCity
![640](http://static.javashuo.com/static/loading.gif)
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值得一試。
![640](http://static.javashuo.com/static/loading.gif)
TeamCity儀表板
Codeship
![640](http://static.javashuo.com/static/loading.gif)
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需求來講,這應該是個不錯的選擇。
![640](http://static.javashuo.com/static/loading.gif)
Codeship儀表板
GitLab CI
![640](http://static.javashuo.com/static/loading.gif)
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解決方案做爲其中的一部分無疑是種明智之舉。
![640](http://static.javashuo.com/static/loading.gif)
GitLab CI儀表板
Bamboo
![640](http://static.javashuo.com/static/loading.gif)
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就是一款極爲強大的工具。
![640](http://static.javashuo.com/static/loading.gif)
Bamboo儀表板
總結
![640](http://static.javashuo.com/static/loading.gif)
對更快、更短髮布週期的要求,促使開發團隊必須找到可以支持新型軟件交付方法的工具與工做流程。每週、天天甚至每小時發佈生產成果也意味着將有更多錯誤出如今生產體系當中。如今,你們已經熟悉了CI / CD工做流程,下一步則應檢查完整CI / CD工具鏈中缺乏的環節,以及如何將其添加到工做流程中。 原文連接:https://blog.takipi.com/jenkins-vs-travis-ci-vs-circle-ci-vs-teamcity-vs-codeship-vs-gitlab-ci-vs-bamboo/