http://www.jetbrains.com/teamcity/index.html
持續整合是軟體開發時相當重要的一環,透過持續整合可以了解目前專案的狀態,包含是否能正確編譯、通過測試,甚至是整體的整合是否也運作良好。在現實的軟體開發環境中,其實很有可能因為修改了一行程式碼,便讓整個專案陷入無法編譯或運行結果不正確的狀態,而如果這個專案又是多人開發且高度相依,更有可能會影響到別人的作業。
- 不但影響別人的工作流暢性,使其離開神馳(flow)的狀態,更會讓程式設計師進入一種非"愉悅"的狀態。而程式設計師一但離開神馳或著進入非愉悅狀態,生產力將大幅下降(請參考Refactoring to Patterns及Peopleware)。
- 更甚者,每每到了產品要Release的時候,才發現整合不起來,導致在緊要關頭呈現兵荒馬亂的慘況(且嚴重影響士氣)。
以往要做到持續整合(Daily Build + Daily Test),是採用手寫script的方式進行,但是自己就要處理許多部份,包含checkout source code, compile, test, report, email 等,但最近用了JetBrain 的 TeamCity,發現原來世界是這麼的美好 🙂 我再也不用手工去打造這個環境了。
其實原本實在試 CuriseControl.Net,不過因為前幾天他的網站進不去,我就另外找到這套 TeamCity,不但容易安裝而且功能強大,在這裡稍做說明。
我的開發環境是VS.NET 2008,主要以C/C++為主,測試框架是採用Boost Unit Test Framework,而 TeamCity 原本是不支持boost的,因此還花了一番功夫才整合起來,這部份之後再撰文描述。
先看看TeamCity有那些優點:
- 容易安裝、設定,只要一個安裝檔案裝完,就已經完成,包含Server, Agent, WebServer等
- VCS Monitor,可以設計成只要有人commit code就自動做編譯及測試
- 支援許多編譯及測試環境(VS.NET, Ant, Command Line, NUnit, MSTest, CPPUnit…)
- 超強的Agent系統,可以建立Cloud Computing的環境來做編譯的動作,不必集中在一台Server
- 支援超多種VCS,大概唸的出來的都支援了(SVN, SourceSafe, Git, TFS…)
- 支援自行開發plugin,我的Boost Unit Testing就是這樣完成的
- 提供專業免費版(有20個Configurations旳限制)
- 豐富的回報機制(IM, e-mail, RSS, System Tray Notifier, IDE Plugin…)
- Personal Build功能,在commit前會先做build/test,test pass才會幫你commit code
- 其它的可以參考官方網站的Feature List
現在在導入TeamCity後,我只要在網頁中就可以看到所有projects的狀態,包含checkin的訊息、修改資訊、編譯狀態、測試狀態,對於要管理這麼多projects時,真的是非常方便。下面是官網的示範圖片(看看它有多少test cases,再看看自己的有多少 Orz)。
強烈推薦一定要試看看,這個比FireScrum還要有價值許多