接續前一篇"邁向自動建置佈署之路(1) "的討論,讓我們來複習一下做到Build Automation以及Deploy Automation到底有什麼好處?根據經驗可以提高開發效率,以及產生品質比較好的程式碼。不過我說的可能沒啥說服力,這時就要請出大神 - 根據約耳測試(The Joel Test) 裡面提到的幾個問題,就可以了解到你們軟體開發的成熟度,以及可以產出較好品質的程式碼機率,Yes 的回答越多,代表機率越高,No的答案越多,代表機率越低。有興趣的可以去翻一下"約耳趣談軟體──來自專案管理的現場實錄"
- 你有做版本控管嘛 (Do you use source control?)
- 你能只要一個步驟就可以建出結果嗎 (Can you make a build in one step?)
- 你能每天都至少有一個Build嗎 (Do you make daily builds?)
- 你有用Issue tracking system嗎(Do you have a bug database?)
- 你會先解決Bug再寫新的程式嗎 (Do you fix bugs before writing new code?)
- 能隨時取得一個最新的專案進度嗎(Do you have an up-to-date schedule?)
- 有Spec嗎(Do you have a spec?)
- 程式開發員在良好的工作狀態嗎(Do programmers have quiet working conditions?)
- 有花錢在能幫助你的用具上嗎 (Do you use the best tools money can buy?)
- 你有測試人員嗎 (Do you have testers?)
- 你在面試時有出上機考題嗎(Do new candidates write code during their interview?)
- 走廊使用性測試 (Do you do hallway usability testing?) [1]
- 不懂技術的管理者,可以光看報表就知道系統的健康狀況。
- 團隊開發時可以及早發現,在整合上是否有所問題。
- 每個developer早點嗅出程式與系統的壞味道。
- 可以讓整個團隊成員有共同的基底、共同的標準、共同協同合作的平台。
- 可以貫穿整個系統開發生命週期,為了品質所花的任何一份力氣,都不會白費而有所累積。
安裝Jenkins
進入Jenkins官方網站下載最新的jenkins。Jenkins 除了提供的war形式的下載,同時也提供各種作業系統的安裝檔,最簡單的安裝方式,就是將jenkins.war拷貝到tomcat_home的webapps目錄下,啟動tomcat。在流覽器的位址欄中輸入http://localhost:8080/jenkins就ok了。如果是Startup的小公司,甚至沒有自己的機房,我推薦這篇文章 "為小團隊的CI流程建立一個簡單的開始 ﹣架上雲端,讓一切自動化吧"。
設定Jenkins Cluster
如果公司內部只有一個專案,或是你的專案規模還算小,只跑單一台的Jenkins應該是綽綽有餘,但是如果公司內部專案規模大,模組又多,你又只有跑單一台Jenkins Instance,那你就會發現你所有Build的工作都處於排隊等待的狀態,因此還是建議還是要建置成Cluster,也就是建置 n 台同樣的 build slave,至少也要建立一個Master與一個Slave。
安裝常用Plugin
Jenkins 還有一個蠻強大的功能就是擁有許多3-party 的Plugin,像是SVN、Maven、Cobertura (Code coverage report)...等,只要進入他的Plugin 管理介面,裡面就有各式各樣的plugin ,可以裝一些自己有興趣的來試試看。設定Jenkins Dashboard
Jenkins還有一個蠻好用的功能就是Dashborad,我們可以依據專案屬性類別,把每個要Build的專案分門別類,比如說公司內部的共用Libray,或是特定的某些專案群組。此外還可以設定這個Dashboard 要顯示那寫指數,像我最常看的就是code coverage 和 待辦事項數量。好都準備好了,下一篇就來講怎麼做到Deploy automation
Reference:
[1] 「走廊使用性測試(Hallway usability)」是指在走廊攔住下一位經過的人,然後逼他試用你剛寫好的程式。如果能攔下五個人並且試用完成,就可以發現程式中95%應注意的使用性問題。
[2] 軟體工程]持續整合 (Continuous integration, CI) 簡介http://www.dotblogs.com.tw/hatelove/archive/2011/12/25/introducing-continuous-integration.aspx
沒有留言:
張貼留言