ThoughtWorks Go基本概念

寫在前面:當前最流行的持續集成工具非jenkins莫屬,已使用jenkins一年有餘,想嘗試下別的CI工具,如ThoughtWorks Go,且在嘗試時作主要記錄並分享,這是首先介紹下基本概念...... html

ThoughtWorks Go 是 ThoughtWorks 公司的一款持續集成和發佈的系統。
它用一個創新的方法來管理構建、測試和發佈過程。
其前身爲CruiseControl(ThoughtWorks開發的第一個CI服務器)。 git

Go是以「部署流水線」爲核心的,下面是一個來自Go官網的流水線(pipeline)案例: 服務器

上圖涉及到的基本概念有:pipeline(流水線)、stage(階段)、job(做業)架構

表示的是一個產品從代碼提交(check in)到UAT測試的流水線(pipeline)。 併發

  • 版本控制系統(Version Control System,即VCS),如svn、git、hg等中的代碼修改後能夠經過post commit hook觸發這個流水線。 svn

  • 一個pipeline包含一個或多個stage,stage是串行的。
    這個流水線(pipeline)有三個階段(stage):編譯+單元測試階段(compile+unit test stage)、功能測試階段(functional test stage)、用戶驗收測試階段(UAT stage)。 工具

  • 一個stage包含一個或多個job,job是並行的。
    其中編譯+單元測試階段(compie+unit test stage)包含單元測試做業(unit test job)和代碼測試覆蓋率檢查做業(emma job)。 post

  • 此外,pipeline能夠分組,能夠把多個pipeline放到一個pipeline group中。 單元測試

對紅色StageJob作下翻譯: 測試

階段(Stage):

  • 階段是連續運行的

  • 每一個階段能夠被前一個階段徹底運行成功後自動觸發

  • 也能夠手動觸發

做業(Job)

  • 做業能夠在階段中併發運行

  • 若是一個做業失敗了,這個階段的狀態就是失敗的

  • 每一個做業計劃運行一個或多個目標(target),如ant、nant等等

  • 若是有多個Go Agent,一個階段的做業能夠並行

Go的架構設計:

Go使用了Server-Agent模式,Server用來展現和配置pipeline的DashBoard,並存放構建出來的Artifacts(存檔文件,好比一個war包); Agent則用來執行真正的構建操做,一個Server能夠和多個Agent創建鏈接,Agent支持多個主流的操做系統。

這個和jenkins的Master-slave架構模式有些相似。

參考:http://www.thoughtworks.com/products/docs/go/current/help/conceptsingo.html

相關文章
相關標籤/搜索