2012年7月16日 星期一

邁向自動建置佈署之路(2) -安裝 Jenkins


接續前一篇"邁向自動建置佈署之路(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] 
其中用紅色High light起來的這兩項,就是跟Continuous Integration (Build Automation)有關,使用CI不但對於開發者有好處,對於管理者也非常有幫助[2]:
  • 不懂技術的管理者,可以光看報表就知道系統的健康狀況。
  • 團隊開發時可以及早發現,在整合上是否有所問題。
  • 每個developer早點嗅出程式與系統的壞味道。
  • 可以讓整個團隊成員有共同的基底、共同的標準、共同協同合作的平台。
  • 可以貫穿整個系統開發生命週期,為了品質所花的任何一份力氣,都不會白費而有所累積。
關於CI的好處與介紹可以參考"軟體工程]持續整合 (Continuous integration, CI) 簡介",這位網友整理的很棒,這邊就不多介紹,所以今天要介紹的是我們使用的工具Jenkins。Jenkins

安裝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
張貼留言