不容錯過的8個流行的持續集成工具
如果你很熟悉“持續集成”,一定會同意這樣的觀點:“使用它已經成為一種強制”。如今有很多持續集成工具,在這篇文章中,我們將介紹幾款流行的持續集成工具。閱讀本篇文章后,你會有對這些CI工具有一個更好的了解,知道他們能夠為你提供什么功能,從而選出最適合你需求的一款持續集成工具。
接下來將依次介紹8款持續集成工具(介紹的順序沒有任何含義):
Jenkins是一款用Java編寫的開源的CI工具。當Oracle收購Sun Microsystems時,它作為Hudson的分支被開發出來。Jenkins是一個跨平臺的CI工具,它通過GUI界面和控制臺命令進行配置。
Jenkins非常靈活,因為它可以通過插件擴展功能。Jenkins插件非常好用,同時你可以容易地添加自己的插件。除了它的擴展性之外,Jenkins還有另一個非常好的功能——它可以在多臺機器上進行分布式地構建和負載測試。Jenkins是根據MIT許可協議發布的,因此可以自由地使用和分發。Cloudbees還提供Jenkins in Cloud形式的托管解決方案。
總結:Jenkins是***的持續集成工具之一,它既強大又靈活。學習它可能要花費一些時間,但是如果你需要一個靈活的持續集成解決方案,那么學習如何使用它將是非常值得的。
官方網址:Jenkins
可用性:免費
平臺:跨平臺
TeamCity是一款成熟的CI服務器,來自JetBrains公司。 JetBrains已經在軟件開發世界中建立了權威,他們的工具如WebStorm和ReSharper正被全球的開發者所使用。
TeamCity在它的免費版本中提供了所有功能,但僅限于20個配置和3個構建代理。額外的構建代理和構建配置需要購買,你可以在這里找到價格。
TeamCity安裝后即可使用,可以在多種不同的平臺上工作,并支持各種各樣的工具和框架。 能夠支持JetBrains和第三方公司開發的公開的插件。盡管是基于Java的解決方案,TeamCity在眾多的持續集成工具中提供了***的.NET支持。TeamCity也有多種企業軟件包,可以按所需代理的數量進行擴展。
總結:整體而言是TeamCity是非常好的持續集成解決方案,但由于其復雜性和價格,更適合企業需求。
官方網站:TeamCity
可用性:3個代理和20個構建配置是免費的,額外的代理和配置需要付費
平臺:Servlet容器(本地)
Travis CI是最老的托管解決方案之一,贏得了很多人的信任。雖然它主要以托管解決方案而聞名,但它也以企業包的形式提供內部版本。
Travis CI對GitHub上托管的所有開源項目以及前100個版本的構建都是免費的。有幾個定價計劃可以供你選擇,它們之間主要區別是你可以運行的并發構建數量。
Travis CI的構建通過.travis.yml文件進行配置,該文件包含了在構建時所需要執行的任務。它能夠支持多種語言并提供完善的幫助文檔。
總結:一個成熟的解決方案,提供托管和本地變種,被許多團隊喜愛和使用,非常有據可查。
官方網站:Travis CI
可用性:對開源計劃和前100個版本的構建是免費的,其他的服務需要付費
平臺:托管和本地
Go是ThoughtWorks公司***的Cruise Control的化身。除了ThoughtWorks提供的商業支持,Go是免費的。它適用于Windows,Mac和各種Linux發行版
讓Go脫穎而出的是它的流水線概念,使復雜的構建流程變得簡單。關于流水線概念是如何幫助持續交付,以及如何與Jenkins的流水線流程進行比較,您可以在這里閱讀到相關內容。它最初的設計時就支持流水線概念,消除了構建過程的瓶頸,并能夠并行地執行任務。
總結:Go CD非常適合復雜場景,并且能夠免費提供付費的支持。
官方網站:Go CD
可用性:免費提供付費的支持
平臺:Windows,Mac和一些Linux發行版
Atlassian是專注于為軟件開發團隊提供工具的公司,你或許已經通過JIRA和Bitbucket了解到了他們。Bamboo最初提供了云端和本地兩種持續集成的解決方案,但在2016年5月,云端版本不再支持Bitbucket Pipeline。Bitbucket Pipeline能夠支持Docker, 是一個非常高效且快速的持續集成解決方案,正在迅速發展,是Bamboo云端版本的有利繼承者。
Bamboo可以免費試用30天。作為Atlassian工具,它能夠很好地支持JIRA和BitBucket,甚至可以將Jenkins配置輕松地導入到Bamboo中。
總結:Bamboo是一款本地CI工具。其原本的云段解決方案被Bitbucket pipeline所取代。有30天的免費試用,在此之后可以進行付費使用。
官方網站:Bamboo
可用性:付費免費試用
平臺:本地
GitLab CI是開源的Rails項目GitLab的一個組成部分,由GitLab公司將它帶到了大眾的視野中。 GitLab托管在GitLab.com上,GitLab.com提供了免費的托管服務,并且提供了git倉庫存儲和管理功能,如訪問控制,問題跟蹤,代碼評論等。
GitLab CI能與GitLab完全集成,可以通過使用GitLab API輕松地作為項目的鉤子。GitLab的執行部分(流程構建)使用Go語言編寫,可以運行在Windows,Linux,OSX,FreeBSD和Docker上。
官方的Go Runner可以同時運行多個作業,并具有內置的Docker支持。 Gitlab CI有兩個版本:開源的GitLab社區版和GitLab企業版。
總結:GitLab CI是一款令人印象深刻的托管工具,提供了免費版本和企業版本。
官方網站:GitLab CI
可用性:免費和付費
平臺:托管(可以在Gitlab.com上托管)
CircleCI也來自GitLab公司,是另一款云端的持續集成管理工具。CircleCI目前僅支持Github管理,它能夠支持的語言包括:Java, Ruby/Rails, Python, Node.js, PHP, Haskell, and Skala。
CircleCI和其他持續集成工具不同的地方在于他們提供服務的方式。CircleCI需要付費的主要是它的容器。你可以免費使用一個容器,當你開始使用更多容器的時候,你可以選擇你所需要的并行化級別來加速你的應用。
主要有5個并行化級別可以供我們選擇: 1x, 4x, 8x, 12x and 16x。你可以選擇用16個容器進行一個項目的構建,此時并行化級別就為16x,當然你也可以用16個容器同時進行4個項目的構建,此時并行化級別為4x,如何選擇取決于你。同時CircleCI也能夠支持Docker。
總結:CircleCI是一個靈活的云端CI工具,提供的***并行化級別為16x。當你需要快速地進行項目構建時它將是一個不錯的選擇,同時它的價格也不是很貴。
官方網站:CircleCI
可用性:免費和付費
平臺:托管
Codeship是一個本地的持續集成解決方案。它有兩種不同的版本:基本版和專業版。在基本版中提供了安裝即用的持續集成服務但是不能夠支持Docker,它的主要用途就是通過UI來進行應用的構建等操作。專業版本提供了更靈活的功能以及Docker支持。
在基本版中有幾個可選的付費包,越貴的付費包并行能力越好。在專業版本中你可以選擇你的實例類型和并行級別(***的級別為20x),價格稍微有點貴,但是大多數的團隊應該會需要這種并行化構建的功能。
總結:Codeship是一個強大的帶有Docker支持的本地持續集成解決方案
官方網站:Codeship
可用性:每個月的前100次構建免費,后續的構建需要付費
平臺:托管
上面所提到的很多工具都能夠支持Docker,但Codefrsh從設計到開發都將容器的理念貫徹其中。
Codefresh的開發者們從一開始就意識到Docker會廣受歡迎。Codefresh除了能夠在現有的Docker文件中工作外,你也可以選擇幾個不同的模板來輕松地的將你的項目遷移到docker容器中。它的UI非常的干凈和容易理解,你可以很容易地上手。
之所以將Codefresh介紹給你們的原因在于它有一個讓人非常驚喜的功能。這個功能就是將你的鏡像發布到一個臨時的環境中。當項目被建立時,它的鏡像也被建立了,你可以發布這個鏡像并觀察它是如何工作的。那意味著你可以得到一個臨時的工作環境,而不需要一個額外的虛擬機,這就是它非常棒的地方。
Codefresh是一款比較新的工具,有很多能夠改進的地方和新的特性可以增加。但是它把容器作為它的重要組成部分使得它對任何一個打算使用Docker容器的團隊來說都將是一個非常好的持續集成解決方案。
總結:Codefresh是一個支持Docker的持續集成工具,它可以發布和建立本地環境的Docker鏡像。
官方網站:Codefresh
可用性:每個月的前200次構建,5個并發的構建和一個本地環境是免費的,額外的服務需要付費。
平臺:本地
那么,對于你和你的團隊來說,***的持續集成工具是什么?
在為您的項目選擇正確的CI工具時,需要牢記幾件事情:
本地解決方案為構建過程提供了足夠的靈活性,并且項目信息能被存儲在本地。這對你來說可能并不重要,但在某些情況下,對某些公司來說,這可能是強制性的。
另一方面,托管解決方案不會提供太多的設置選項和更大的可擴展性,因為您不需要硬件來托管它們。
另一個重要的事情是是否支持Docker。 Docker革新了我們分發應用程序的方式,并成為不可忽視的一項技術手段。盡管上面所提到的絕大多數工具都支持Docker,但有些工具會比其他工具更能夠支持Docker。
***一個容易被忽視的方面是用戶界面。上述中的一些工具比其他工具更容易使用。任何一個好的CI工具的主要作用之一就是使構建過程更容易,因此UI操作不應該很難或復雜。