Continuous Integration is an Attitude, Not a Tool
http://jamesshore.com/Blog/Continuous-Integration-is-an-Attitude.html

很多人一提到CI(Continuous Integration), 都會誤解認為它就是一堆Tools所成的集合, 事實上不是這樣的.
首先我們來看agile的宣言

Contrary to popular belief, continuous integration is an attitude, not a tool. It's a shared agreement by the team that:

Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan

CI 是會了達到宣言中的working software, 因而所產生的practices. 也就是說我們不只口頭上說我們要agile, 並且我們的做事方法上, 也會配合agile精神來改變.

那什麼是CI呢?

Assembling software every time code changes

“ … is a software development practice where  members of a team integrate their work frequency…”

Each integration is verified by an automated build (including test) to defect integration errors as quickly as
possible

所以CI是希望程式一有變動, 便能快速確認大家的程式碼, 是否還能運作正常, 讓軟體經常保持在可運作的狀況下.

這也就作者為什麼說CI 是一種態度一種觀念, 而不是一堆tools. 根據作者的經驗, 他的觀點如下,首先他認為CI是:
   1. When we get the latest code from the repository, it will always build successfully and pass all tests.
   2. We will check in our code every two to four hours. (他這裡的經驗是大約是每2~4小時check-in 一次)

他們practice的其中一種作法是:
   1. Before check-in, run the build and tests and make sure they pass.
   2. Tell people not to update from the repository because you're doing an integration.
   3. Check in.
   4. Go to a different machine (often a dedicated "integration machine"), get the latest code from the repository, and make sure latest changes build and pass there, too.
   5. Done--tell people they can update again.

當然要完成這些工作有很多種方法, 一般常見的是利用不同的tools來加速其進行, 這也就是為什麼大家誤解CI就是一堆Tools. 其實是先有這些觀念和流程, 然後才找出一堆tool來配合工作的進行.

當然每個tool有每個tool強項的地方, 不會有一個tool可以解決所有的事情. 所以作者也提到不要一想到CI, 就只記得CI server - CruiseControl, 它也只能完成步驟4的部分內容而已

希望大家對CI的認識, 不要再只是侷限於它是一堆Tools.

arrow
arrow
    全站熱搜

    kojenchieh 發表在 痞客邦 留言(0) 人氣()