Continuous Integration

by winson, about 1 year ago.

什麼是Continuous Integration呢?

開發團隊用Subversion或CVS常會checkin一堆垃圾,什麼是垃圾呢?就是沒經過測試的程式,可能是下班前checkin或一段時間checkin。這些垃圾很有可能被別人checkout出去,時間一久,程式碼鐵定一團混亂。

Continuous Integration軟體做些什麼事呢?設定一定的時間間隔自動從Subversion/ CVS把程式拉出來測試(當然要先寫好test case)、自動build、自動通知相關人等。

這就是像是一台精密的儀器隨時監控程式碼的心跳(heartbeat),一但程式碼沒心跳就掛了。

Continuous Integration的觀念最早是由馬汀大師提出來的,也因此他的公司早就根據這套理論貢獻出CruiseControl。這是一套用來實踐Continuous Integration做法的Java平台開放原始碼軟體,但由於Java的複雜特性使然,這一套軟體在設定等方面都太過麻煩,而且UI也不夠美觀。

第二代的CruiseControl重新用Ruby開發,改名叫做CruiseControl.rb,不但承襲以往的優點,並加入Ruby簡便的特性,同時也設計了優雅的使用界面,不只可用來保管Ruby/Rails程式碼,連Java/C/C++都非常適用。

就Ruby的程式碼而言,最大的優點是單元測試非常簡單易寫,所以CruiseControl.rb在做的其實就是自動去跑rake(如果是Rails),或找到test目錄下的test_xxxx.rb,並且自動去跑test case,並把結果呈現在瀏覽器上,最後送出通知。


  • Posted in Testing, on Wednesday, April 25, 2007, at 03:15 AM.