go是一款先進的持續整合和發布管理系統,由thoughtworks開發。(不要和google的程式語言go混淆了!)其前身為cruise,是thoughtworks在做諮詢和交付交付專案時自己開發的一款開源的持續整合工具。後來隨著持續整合及持續部署的火熱,thoughtworks專門成立了乙個專案組,基於cruise開發除了go這款工具。
go的官方**是其文件是
在我目前的專案中,持續整合及部署工具使用的就是go這款工具。使用go來建立起乙個專案的持續部署pipeline是非常快的,非常方便。
go使用了server-agent的模式。server用來展示和配置pipeline的dashboard,並存放構建出來的artifacts(存檔檔案,比如乙個war包); agent則用來執行真正的構建操作,乙個server可以和多個agent建立連線,agent支援多個主流的作業系統。
這樣的好處是:
測試可以執行在不同的平台上,保證你的軟體在多個平台都能良好的工作;
你可以將測試劃分為不同的群組並並行的執行在多個agent上,節省執行測試時間;
可以方便的管理agent,及時響應不同的環境要求。
下圖是agent工作的生命週期。
每一台go的構建節點機器上都需要安裝go agent軟體(這個名字蛋痛,不是fq的那個軟體),其用來建立起與go server的連線。go對複雜的構建和部署活動進行了合理的抽象,並提供了gui和xml兩種方式來配置pipeline。
在go的世界中,多個pipeline可以共同組成乙個group,這叫做pipeline group。沒個pipeline又由多個stage組成。假設乙個pipeline需要做如下事情: 構建專案->部署到測試環境->部署到生產環境。那麼每乙個環節都可以設定為乙個stage。而乙個stage則由1個或多個job組成。比如構建專案這個stage,可能會分為編譯及驗證->功能性測試,每一步可以作為乙個job。job則由乙個或多個task組成。比如功能性測試這個job可以分為兩個task來完成,先將artifacts部署到測試機上,再執行功能性測試。
go在設計之初就是一款持續部署工具,而jenkins其實只是一款持續整合工具,如果要實現持續部署需要安裝相應的外掛程式。
go由於是收費軟體,有一定售後服務,而jenkins作為開源軟體,雖然免費,但是出現問題要麼自己動手解決,要麼等待維護社群修復。
jenkins作為開源產品,社群比較活躍,文件資料和外掛程式都比較多,而go的文件或資料較少。
go的設計思想還是挺前衛的,在別人還在做持續整合這一步時,它已經做到了持續部署這個層次。但是目前就國內而言能做到持續部署的公司真的不多,甚至很多公司連持續整合這個實踐都沒有達到。所以go作為一款收費產品很難在國內開啟市場。
我覺得go可以做出乙個免費版來讓個人試用,提供一些基本功能。然後為企業應用定製一些高階功能,放置到收費版中,可以擴大自己的市場佔用率。
持續整合及部署利器 Go
go是一款先進的持續整合和發布管理系統,由thoughtworks開發。不要和google的程式語言go混淆了!其前身為cruise,是thoughtworks在做諮詢和交付交付專案時自己開發的一款開源的持續整合工具。後來隨著持續整合及持續部署的火熱,thoughtworks專門成立了乙個專案組,基...
持續整合 持續交付 持續部署
持續整合 持續整合強調開發人員提交了新 之後,立刻進行構建 單元 測試。根據測試結果,我們可以確定新 和原有 能否正確地整合在一起。持續交付 持續交付在持續整合的基礎上,將整合後的 部署到更貼近真實執行環境的 類生產環境 production like environments 中。比如,我們完成單...
持續整合 持續交付 持續部署
參考 1 continuous integration 持續整合 持續整合強調對於開發人員的每個提交,立刻進行構建 單元 測試。根據測試結果,我們可以確定新 和原有 能否正確地整合在一起。2 continuous delivery 持續交付 持續交付在持續整合的基礎上,將整合後的 部署到更貼近真實執...