標籤:工具 googl 群組 image 架構 開源軟體 read pipe 軟體
Go是一款先進的持續整合和發行管理系統,由ThoughtWorks開發。(不要和Google的程式設計語言Go混淆了!)其前身為CruiseControl,是ThoughtWorks在做諮詢和交付交付項目時自己開發的一款開源的持續整合工具。後來隨著持續整合及持續部署的火熱,ThoughtWorks專門成立了一個項目組,基於Cruise開發除了Go這款工具。ThoughtWorks開源持續傳遞工具Go,Go的官方網站是http://www.go.cd/,其文檔是http://www.thoughtworks.com/products/docs/go/13.3/help/welcome_to_go.html。使用Go來建立起一個項目的持續部署pipeline是非常快的,非常方便。
Go的架構設計
Go使用了Server-Agent的模式。Server用來展示和配置pipeline的DashBoard,並存放構建出來的Artifacts(封存檔案,比如一個war包); Agent則用來執行真正的構建操作,一個Server可以和多個Agent建立串連,Agent支援多個主流的作業系統。
這樣的好處是:
測試可以運行在不同的平台上,保證你的軟體在多個平台都能良好的工作;
你可以將測試劃分為不同的群組並並行的運行在多個Agent上,節省運行測試時間;
可以方便的管理Agent,及時響應不同的環境要求。
Agent的lifecycle
是Agent工作的生命週期。
每一台Go的構建節點機器上都需要安裝Go Agent軟體(這個名字蛋疼,不是FQ的那個軟體),其用來建立起與Go Server的串連。 Go Agent會以輪詢的方式來詢問Go Server是否有當前有構建工作。如果有的話,Go Server會將其分配給處於ready狀態的Agent。該Agent會在自己機器目錄上建立一個目錄,並下載同步最新的材料(比如配置的SVN repo地址),然後執行指定的task,比如構建項目,運行單元測試或功能性測試等。如果配置了artifacts(比如構建的結果,一個war包),Agent執行完畢後將這個artifacts發布到Go Server上,這樣artifacts就會被接下來的stage用到。
Go中的一些概念
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其實只是一款持續整合工具,如果要實現持續部署需要安裝相應的外掛程式。 Go和Jenkins都是開源軟體,雖然免費,但是出現問題要麼自己動手解決,要麼等待維護社區修複,Go可以向ThoughtWorks購買支援服務。 Jenkins作為開源產品,社區比較活躍,文檔資料和外掛程式都比較多,而Go的文檔或資料較少。
Go as continuous delivery tool for .NET
邁出持續傳遞的第一步
http://www.cnblogs.com/shanyou/p/3750720.html
持續整合及部署利器:Go(不要和Google的程式設計語言Go混淆了!)