概述&目的
由於中心項目過多,但所有項目特點是持續時間長,變更少,所以易於做CI(持續集成)的build和test,持續檢查每個項目軟件的健康狀況。但前期做持續集成遇到一些問題,在持續集成軟件本身Jenkins設計上出現問題:是由於不同項目(版本分支)過多導致Jenkins環境設置過多,所以需要重新考慮一套有利於測試和項目上的持續集成環境的框架,此設計供大家討論。
方案
針對項目過多和Jenkins分支過多不善於管理,每個項目都登錄jenkins進行操作,沒有多線的感念,管理混亂,從而分析了其中問題從而整理了對於此Jenkins框架的方案。
目前公司持續集成的測試分類很多,不同的人員都有登錄master主機的權限,可能會導致誤操作或者修改,影響jenkins執行過程和和結果。
應對方案
使用一台服務器作為Jenkins的master,其余項目均應用在節點機子上,從而節省維護多個Jenkins 的成本,只需要維護主機上的Jenkins配置和插件等,從機器也只需要安裝主機上的節點jar包即可,詳情設計如下:
設置和應用 Jenkins
- 確認服務器環境(windows,linux)。
- 確認維護項目(NDS,拿鐵等)。
- 確認項目負責人(開發,測試)主要由測試去維護,詳情請見4章框架
- 准備一台配置較好服務器作為 Jenkins master,主機可以做hosts映射,局域網內用域名維護。
- 准備從機器,在主機(Jenkins master)上設置節點(slave),不同的項目應用不同的節點,節點命名規則:姓名簡拼+服務器后綴IP+項目名稱,例如從機器的IP為10.38.29.101.維護的項目NDS,維護者謝超,節點名稱與標簽則為:XC101NDS。
- 工程目錄設置在從機器上,因為涉及數據測試過多,從而也節省主機的硬盤消耗。
- 權限分配,不同user只能訪問自己的在主機上Jenkins project的配置,但會有admin賬號管理所有的Jenkins project,游客(未登錄者)只可以瀏覽測試結果(所有項目的)
- 測試過程監控,制作sql數據,保存每次測試記錄和結果,比如記錄字段為:ID、項目名稱、啟動原本因、啟動者、測試結果等,其余的待完善TBD
流程
此流程附帶開發交付階段(紅框內),不考慮開發部署也可以。標准流程如下:
- 獲取軟件/工具等
- 運行自動化測試
- 發送測試報告
開發流程被置灰了,未來如果測試部署也可考慮。
項目 1
從代碼管理工具上(aligi,SVN)t上獲取branch/trunk的代碼。
項目 2
檢查項目 1 中下載的源代碼是否有安全性等問題,運行開發檢查測試。
項目 3
檢查項目完成后,構建工作開始。
項目 4
成功構建完成后,是在構建驗證測試(Build Verification Test,BVT)環境中安裝該構建版本。在 BVT 環境中運行 BVT 測試案例。如果 BVT 測試成功通過,可以輸出到開發或者測試應用服務器
項目 5
測試可通過successful郵件或者測試自己的jenkins去獲取開發對應的輸出軟件/工具,此留也可以作為測試的流程1,制作測試自己的測試環境Jenkins
項目 6
在測試環境中下載開發版本。應用軟件/工具后,Jenkins 會觸發項目 7,以便運行功能驗證測試(Functional Verification Test,FVT)。
項目 7
FVT 是一個自動測試列表,其中包括很多測試:校驗,檢查,統計等。FVT 測試通過后,會發送測試通過郵件,類似一封Successful的郵件,告知相關人員。
下圖1則是顯示了整體流程。若該項目成功完成后,會觸發開始下一個項目。如果項目失敗,那么流程將會結束並向相關人員發送電子郵件。
持續構建框架的拓撲結構
- 圖2 的左側顯示了開發組部署服務器和Jenkins。
- 圖2的右側展示了測試組持續集成測試構建框架,添加 Jenkins 以后,會有一個 Jenkins 主機器。構建工具和插件已安裝在該服務器上。不同的項目對應着不同的Jenkins 代理(節點)--不同的節點對應着不同的slave服務器,不同的slave服務器又有不同的Tester去維護,當然所有的Tester也可以訪問主機上的Jenkins Master進行project配置。工作動作在從機器上運行,FVT 項目在 Jenkins 主機器上運行。所有測試環境都作為 Jenkins 從機器提供服務。它們由 Jenkins 主機器控制,並運行安裝項目。測試環境則運行功能驗證。
- 再將不同項目與不同從服務器綁定,就能更輕松地跟蹤各種任務,因為不同的機器擁有不同的角色。
結束語
這樣做持續集成會幫助測試和開發自動部署和測試的各種工作,從而節約其寶貴的時間。該框架還能幫助大家盡早發現流程中的任何問題或缺陷,優勢如下:
1. 減少多項目的溝通成本,可以讓組內人員看到其他人員在做的項目
2. 利於維護、跟蹤
3. 方便管理,減少配置環境成本
針對項目過多和Jenkins分支過多不善於管理,分析了其中問題從而整理了對於此Jenkins框架的方案。