標籤:
持續傳遞工具ThoughtWorks Go部署step by step
http://blogs.360.cn/360cloud/2014/05/13/%E6%8C%81%E7%BB%AD%E4%BA%A4%E4%BB%98%E5%B7%A5%E5%85%B7thoughtworks-go%E9%83%A8%E7%BD%B2step-by-step/
Posted on 2014 年 5 月 13 日 by zieckey | Leave a reply1. ThoughtWorks Go簡介
Go是ThoughtWorks公司採用 Java 語言研發的一款開源的持續整合和發布的系統,旨在使軟體開發企業和團隊在構建-測試-發布軟體產品的流程自動化,並且能持續地發布軟體產品。該產品於2014年2月份宣布基於Apache 2.0開源協議進行開源。其前身是CruiseControl。其官方簡介為“Automate and streamline the build-test-release cycle for worry-free, continuous delivery of your product”。
該平台型產品Go,能協助企業和組織持續改進、整合和交付高品質的產品。競爭日益激烈的商業環境要求企業快速創新的同時,維持核心流程的穩定。Go可以為所有團隊提供一個清晰的發布管道,避免低效和冗餘。
2. 持續整合/交付持續整合(Continuous Integration,CI)是一些基本實踐,它不是軟體開發中最炫目的工作,但軟體整合在今天的複雜項目中至關重要。CI作為軟體開發的中心工作,因為它通過對每次變更執行構建,保證了軟體的健康。如果我們不太關注這次不太炫目的基礎工作,例如“整理開發環境、打包構建軟體”等等,我們就不得不在將來執行這些低級任務,通常是在最不方便的時間點(例如軟體馬上就要投入使用之前),這也就是出錯的時候(這也就說明現階段我們大多數時候release一個軟體版本,通常伴隨著加班加點來處理未知的基礎性的一些問題,如配置項修改等等)。保持構建版本“亮綠燈”這一原則,讓您不必擔心一切是否還正常。這就像鍛煉身體,是的,這需要自覺;是的,這可能會帶來痛苦,但這能保持您的體型和身體健康,讓您能參與更重要的活動,這是值得的。
借用ThoughtWorks公司官方的一張圖來說明這一過程:
3. 部署
從官網下載兩個安裝包:go-server,go-agent。下載頁面:http://www.go.cd/download/。我們這裡以Linux平台為例進行說明,因此我們下載得到兩個rpm包:go-agent-14.1.0-18882.noarch.rpm go-server-14.1.0-18882.noarch.rpm。
3.1 首先安裝go-server
因為是java語言開發的,因此該安裝包依賴java運行環境,這裡我們選擇java包為:java-1.6.0-openjdk。安裝完成之後,如果沒有錯誤,go-server會直接啟動起來,監聽8153連接埠。我們可以通過url:http://go-server.installed.hostname:8153/go來訪問Go平台,在這個平台上可以進行管理、配置、持續構建和交付我們的項目。
配置過程如下:
3.2 再安裝go-agent
go-agent可以與go-server部署在同一台伺服器,也可以部署在不同的伺服器上。go-agent安裝完成之後,如果沒有錯誤,會有下列提示,告訴我們go-agent的配置和啟動方式:
Now please edit /etc/default/go-agent and set GO_SERVER to the IP address of your Go Server.
Once that is done start the Go Agent with ‘/etc/init.d/go-agent start‘3.3 Go架構設計Go使用了Server-Agent的模式。Server可以理解為一個Dashboard,用來管理、展示、配置各種項目的Pipeline流程(編譯、單元測試、打包、發布等一系列流程),並存放構建出來的Artifacts(封存檔案,比如一個war包)。Agent則用來執行具體的構建操作,因為很多項目是有跨平台需求,例如Linux和windows兩個平台,甚至Linux平台又分為Centos5.4和centos6.2等等,因此,一個Server可以和多個Agent建立串連,Agent支援多個主流的作業系統平台。詳細情況如:
3.4 我們的實踐例子
4. 其他4.1 go-server的設定檔:/etc/go/cruise-config.xml4.2 郵件、使用者名稱、密碼設定:/etc/go/cruise-config.xml: <server artifactsdir=”artifacts” commandRepositoryLocation=”default” serverId=”743624fd-263b-47d2-a2e4-c0cffc8051ec”>
<security>
<passwordFile path=”/etc/go/users.properties” />
</security>
<mailhost hostname=”mail.corp.qihoo.net” port=”25″ tls=”false” from=”[email protected]” admin=”[email protected]” />
</server>
參考:
1. http://www.thoughtworks.com/products/docs/go/current/help/
2. 《持續整合-軟體品質改進和風險降低之道》
持續傳遞工具ThoughtWorks Go部署step by step