愛流浪的小風

技術隨手寫

使用Jenkins打造.Net CI Server (2) - 為什麼我們需要CI Server

| Comments

在一個軟體開發團隊中,CI Server就像是我們產品的守護神,平常感覺不到它的存在,卻默默地替我們軟體品質把關,一旦有人改壞了程式,馬上會在第一時間通知我們,也可以幫助我們將日常瑣碎的工作自動化,不用在替建置軟體的乾淨環境,或是如何將程式碼更新到伺服器上而煩惱,讓我們可以花更多時間與精力在專注開發軟體上。

核心概念

CI Server是Continuout Integration Server (持續整合伺服器)的縮寫,持續整合代表了我們為了提升軟體的品質,不斷反覆重複進行的過程。透過CI Server的幫助,可以確保產出程式碼的品質,降低部署網站所花費的時間,甚至將我們習慣在開發後進行的工作都交給它,(ex. 複雜度分析、安全性掃瞄...等),並且完全不會佔用我們所開發使用的電腦。CI Server會自動監控我們的版本控制系統(Version Control System),一旦發現有程式碼簽入版本控制系統,就會自動針對最新的Commit進行建置、單元測試,甚至是部署到測試伺服器上等工作,可以確保我們版本控制系統中的的程式碼隨時都處在一個穩定的狀態,也可以透過CI Server所產出的各項報表觀察軟體的品質、穩定度等各項環節是否符合預期。

對我們的影響

對開發人員來說,在導入CI Server之後的開發,和導入之前並沒有任何的不同,一樣的從版本控制系統上取得原始碼,進行開發後簽入最新的程式碼,完全不需要花費任何的時間去適應導入CI Server後的新流程,因為完全一模一樣!甚至可以說讓開發人員花在雜事上的時間變少了,因為不再需要再自己手動進行各種軟體品質的檢查,把這些額外卻固定的工作都交給CI Server來處理。

導入CI Server後不同的是,再也不用擔心從版本控制系統上取得的程式碼可不可以用,是否能夠通過編譯(Compile),配合單元測試,更可以讓修改既有程式碼時不會影響到系統的正常運作,大大的增加了程式碼的可靠度和可重用度,甚至我們可以每天進行針對全系統的整合性測試,增加了開發者對產品穩定度的信心。

對專案的管理者來說,可以透過CI Server提供的報表,輕鬆地掌握目前專案開發的狀況。透過單元測試報表,看出目前測試程式的涵蓋率及通過率,確保工作項目的完成度。透過靜態程式碼分析報表,找出系統潛在的問題,統一成員的程式碼分析風格。加上自動化部署,部署工作不在佔用資深開發人員的時間,讓開發者可以減少Routing Deploy工作浪費的時間,專注在更重要的工作上,也可以確保每一個最新的程式碼,都會即時的被更新到測試伺服器上供其他人員測試或瀏覽。

使用CI Server的優點

  1. 完全的自動化,第一次設定好之後就不需要再管它
  2. Web介面 (Jenkins),只要透過瀏覽器可以隨時操作瀏覽
  3. 不需重新適應流程,完全依照既有的開發步驟,導入不會打亂習慣的節奏
  4. 提高專案開發透明度,軟體成員和管理者可以透過報表輕鬆掌握目前軟體的狀況
  5. 養成良好的開發習慣 (版本控制、單元測試以及統一的程式碼風格)
  6. 提早發現潛在的風險 (程式碼複雜度、安全性)
  7. 保持軟體穩定,有更改就測試,建置異常馬上發出通知給團隊成員,不怕改壞程式

總結

有了CI Server,可以提高大家對於開發出來產品的信心,因為我們可以透過各種報表說服大家產品的內容是完全Feat Goal,並經過測試!也可以讓開發人員養成良好的開發習慣,多花30%的時間撰寫單元測試,卻可以減少日後無數的維護成本。在更改別人開發的程式碼時,只要確認更動的程式碼有通過寫好的測試,就不怕程式碼被改壞!讓所有在版本控制系統中的程式碼都是可用的,不會因為維護的人員離職,就產生年久失修的問題,大大降低重工率。

萬一真的有人不小心改壞程式碼時,也可以透過整合測試找出更改後邊際效應(Side Effect),不會等到系統真的上線才發現有異常,最大的好處是整個過程都是自動化並且持續進行的,每一天都能享受到它帶來的好處,不但改善了軟體的品質,也改變了使用者的生活,再也不怕改壞東西,也讓程式碼的品質不斷的提高,達成一個正向循環。

Comments

comments powered by Disqus