持續(xù)集成持續(xù)交付七大開(kāi)發(fā)工具
軟件開(kāi)發(fā)周期中需要一些可以幫助開(kāi)發(fā)者提升速度的自動(dòng)化工具。其中工具最重要的目的是促進(jìn)軟件項(xiàng)目的持續(xù)集成與交付。通過(guò)CI/CD工具,開(kāi)發(fā)團(tuán)隊(duì)可以保持軟件更新并將其迅速的投入實(shí)踐中。
Jenkins是最著名的CI/CD系統(tǒng)工具,且能迅速的成為開(kāi)發(fā)引擎,管理開(kāi)發(fā)方面。Jenkins為插件開(kāi)發(fā)提供便利,為擴(kuò)展版本控制系統(tǒng)提供功能且為IBM提供支持。 由Sun Microsystems分離出來(lái)的Hudson項(xiàng)目首次推出Jenkins,其最新版本為2,提高可用性與安全性。
但是當(dāng)涉及持續(xù)集成與持續(xù)交付時(shí),Jenkins并不是唯一的選擇。 CircleCI,、GitLab和 JetBrains 等公司也為開(kāi)發(fā)者提供可用的CI/CD工具。
Atlassian Bamboo
Atlassian Bamboo提供豐富的功能,從構(gòu)建與部署Docker Container在Amazon Web Services運(yùn)行應(yīng)用程序。專門的代理可被用于熱修復(fù)和關(guān)鍵構(gòu)建??蓴U(kuò)展性一直被視為Jenkins的眼中釘,在這里,Appfire的CEO Randall Ward,Atlassian商業(yè)合作伙伴提供附件組件和服務(wù),提高Bamboo優(yōu)勢(shì)。
Atlassian確實(shí)提出了可擴(kuò)展性,同時(shí)Jenkins用戶曾發(fā)現(xiàn)Jenkins工具有“主要性能障礙”。Bamboo通過(guò)輪詢代理和擴(kuò)展代理功能。Appfire使用Bamboo作為瑞士軍刀,與第三方附加組件集成測(cè)試,以及部署代碼。
Bamboo功能代碼顯而易見(jiàn),確保用戶從之前最新的部署中查看完整的代碼更改。它集成其他的Atlassian產(chǎn)品,包括Bitbucket Git代碼管理解決方案、Jira項(xiàng)目管理解決方案和HipChat團(tuán)隊(duì)聊天應(yīng)用程序。
CircleCI
CircleCI也強(qiáng)調(diào)了擴(kuò)展性,除了它能測(cè)試一切,對(duì)移動(dòng)應(yīng)用程序進(jìn)行Jasmin單元測(cè)試。CircleCI幫助開(kāi)發(fā)者帶來(lái)Docker文件到產(chǎn)品中。
CircleCI提供了一個(gè)編排層和一個(gè)工作流工具,可自動(dòng)化代碼更改且將代碼推到數(shù)據(jù)中心。始于2011年,CircleCI開(kāi)始作為多組織Saas選擇。它是Jenkins的替代,用戶無(wú)須管理自己的服務(wù)器,Ruby、Python和AJAX應(yīng)用程序是它的強(qiáng)項(xiàng)。它現(xiàn)在可以在防火墻外部署,與Jenkins相反,它是開(kāi)源的且是一個(gè)企業(yè)解決方案。CircleCI可擴(kuò)展超出Jenkins所能處理的,其配置是在代碼中編寫(xiě)的而不是在服務(wù)器中完成的。
Eclipse Hudson
Jenkins的前身,在Oracle移交項(xiàng)目的五年前Hudson是Eclipse Foundation管理的。Oracle繼承了Hudson當(dāng)其在2010年收購(gòu)了Sun Microsystems,但Jenkins開(kāi)發(fā)者并未在Oracle項(xiàng)目方向上取得一致。最新的更新是在2月,Hudson是用Java編寫(xiě)且運(yùn)行在servlet容器上如Apache Tomcat。它可以使用版本控制工具如Git和Subversion。
“在Hudson團(tuán)隊(duì)中我們致力于加強(qiáng)Hudson在一個(gè)已開(kāi)始的基礎(chǔ)上,重點(diǎn)創(chuàng)建Hudson一個(gè)合適的平臺(tái)為持續(xù)交付以及持續(xù)集成,“Eclipse的一位代表說(shuō)。”因此,您將看到工具的新功能,特別涉及大型企業(yè)在規(guī)模和復(fù)雜的構(gòu)建管道使用需求Hudson。”
根據(jù)Eclipse的一個(gè)案例研究顯示,Hudson用戶Cleo提供了業(yè)務(wù)集成軟件和服務(wù),評(píng)估Jenkins代替Hudson因?yàn)镴enkins維護(hù)大多數(shù)Hudson插件。“我們放棄了這個(gè)想法后,Jenkins的核心功能是比Hudson的更加不可靠,”Cleo發(fā)布工程師Stuart Lorber表示。
GitLab CI
在可用的SaaS或防火墻外,開(kāi)源GitLab CI可以在任何平臺(tái)上執(zhí)行且支持語(yǔ)言,包括Unix、Windows,OS x。用戶可以自動(dòng)向上和向下擴(kuò)展虛擬機(jī)進(jìn)行即時(shí)處理和最小化。其他功能包括多語(yǔ)言支持、實(shí)時(shí)記錄、每階段管道定義多個(gè)作業(yè)和Docker支持,用于測(cè)試和構(gòu)建Docker圖像。另外可擴(kuò)展性也是一個(gè)優(yōu)勢(shì)。
GitLab CI是GitLab code-hosting平臺(tái)的一部分,旨在為持續(xù)集成提供簡(jiǎn)單的設(shè)置。設(shè)置CI曾經(jīng)是乏味的,我們想讓它非常簡(jiǎn)單。GitLab CI并不需要大量的管理,測(cè)試被執(zhí)行在GitLab Runner中,用Go編寫(xiě)且提供多平臺(tái)、多語(yǔ)言功能。
因?yàn)镚itLab CI與GitLab集成,用戶不需要建立新的項(xiàng)目。用戶添加一個(gè)文件來(lái)描述你想要如何測(cè)試庫(kù)。
JetBrains TeamCity
JetBrains TeamCity CI/CD服務(wù)器集成工具如Apache Maven創(chuàng)建管理和JetBrain自己的YouTrack問(wèn)題追蹤工具。我們提供完整的體驗(yàn)與內(nèi)置的功能插件。
TeamCity 不是開(kāi)源的,有一個(gè)Web界面和管理功能。
該平臺(tái)有IDE插件適用于Eclipse、Microsoft Visual Studio、和 JetBrains IntelliJ。還提供動(dòng)態(tài)測(cè)試報(bào)告。TeamCity是一個(gè)產(chǎn)品且已存在10年。由JetBrains衍生出并進(jìn)化為很成熟的產(chǎn)品。
ThoughtWorks GoCD
ThoughtWorks GoCD是一個(gè)開(kāi)源的持續(xù)交付系統(tǒng),它提供了一個(gè)“材料清單”部署。代理網(wǎng)格同時(shí)通過(guò)管道和版本提供并行處理,模板允許重用配置管道。它支持CD,開(kāi)箱即用,無(wú)須安裝其他的插件。
GoCD與Jenkins不同之處在于它是部署管道以及簡(jiǎn)化持續(xù)交付,GoCD可被安裝或建立在云上。
ThoughtWorks Snap
ThoughtWorks Snap提供基于云的持續(xù)集成和交付的功能。Snap在云計(jì)算中完全是人來(lái)操作的,它是面向用戶“無(wú)須任何基礎(chǔ)設(shè)施”。托管部署可以被設(shè)置在云平臺(tái)中,包括GitHub、Amzaon Web Services、DigitalOcean和Heroku。合并請(qǐng)求被測(cè)試以確保其完全合并。
Snap在GitHub上是免費(fèi)使用公共存儲(chǔ),其中有一個(gè)負(fù)載使用私有存儲(chǔ)。近期,Docker支持增加到Snap,Docker的圖片通過(guò)軟件交付和部署可被使用。