劉壯飛
【摘要】 目前,軟件產品在各個領域開發(fā)和應用,軟件產品推陳出新采用迭代發(fā)布,頻繁更新,給IT支撐帶來了極大的壓力,也對版本的管控力度和管控水平提出了更高的要求。那么,我們在日常的管控過程中,如何提升版本增量的便利性,提升效率,保障版本按時保質發(fā)布。本文主要重在解決以上問題,提供一種基于SVN開源框架并進行二次開發(fā)功能,實現(xiàn)版本的管控、自助增量、自動編譯、打包和部署和發(fā)布功能。以期望通過可視化、自動化和自助的方式來實現(xiàn)產品版本從版本制定、研發(fā)代碼增量、編譯和打包部署的整個過程,最終實現(xiàn)JaveEE項目的自動化、自助式的版本增量工作,提升版本管理工作的質量和效率。
【關鍵字】 自助發(fā)布 自動發(fā)布 持續(xù)交付 持續(xù)繼承 版本管理 福富
一、現(xiàn)存問題
CRM,客戶關系管理系統(tǒng),業(yè)務特點是開發(fā)周期長,補丁次數多,需求要求緊,重復工作量大,每次發(fā)布均要做大量版本管控和準備工作,以確保補丁版本發(fā)布的準確性和及時性,目前主要采用人工增量完成版本迭代,存在以下問題:
1.研發(fā)提交不規(guī)范,存在錯、漏,影響版本質量;
2.研發(fā)與配置間溝通不暢導致版本質量下降;
3.配置人員不夠細心導致產品版本存在錯、漏影響質量;
4.配置工作機械性、重復性工作大,壓力大;
5.配置工作效率低下,延遲版本準備。
那么,如何做好產品的版本準備就成為一個亟待解決的緊迫問題。
二、方案與思路
經過綜合分析、考慮,主要有三個方面訴求:一、限制研發(fā)確保提交版本的準確性,二、減少配置人員工作量,提升工作效率釋放人員,三、輔助日常項目管理。
需要包含以下功能模塊:版本規(guī)劃管理、代碼質量管理、自助增量管理和項目輔助管理。
2.1版本規(guī)劃管理
對產品版本的規(guī)劃,確認版本需要包含哪些補丁,以任務單為顆粒度,任何代碼的提交均需要有任務單,確保任何一個代碼可追溯。
2.2代碼質量管理
1)控制代碼必須使用插件方可提交,方案是在svn服務器上增加鉤子腳本,對所有提交的代碼驗證,必須包含某特殊字符,如:”$”或其他特殊符號,凡無該符號,一律不允許提交。
2)開發(fā)eclipse客戶端插件,引入svn開源框架,利用svn的api對研發(fā)提交的內容進行識別和記錄,記錄的主要內容為:任務單號、文件路徑、名稱、差異部分內容、涉及行數(增、刪)內容等,便于在后續(xù)的版本打包、自助增量和項目統(tǒng)計使用。
3)插件提交頁面,“提交代碼”按鈕增加自定規(guī)則校驗功能,支持java、js、正則表達式多方式校驗,提升代碼質量。
2.3自助增量管理
通過自助式增量、編譯、打包和受控等幾個環(huán)節(jié),解決配置人員工作量大、重復機械勞動、配置質量低、研發(fā)與配置人員溝通不暢導致版本質量等問題,主要實現(xiàn)功能如下:
1) 開發(fā)WEB頁面(可集成在Eclipse),提供研發(fā)人員日常的工作任務:代碼上傳、解壓、編譯和受控等幾個步驟,每個按鈕提供相應的處理邏輯,針對研發(fā)人員提交的增量壓縮包進行處理。
2) 提供研發(fā)人員自助上傳增量補丁包功能,利用svn框架采集的信息,識別增量補丁包提交的文件數量、路徑和文件內容等,對增量包內容進行逐一驗證,從而降低研發(fā)人員提交代碼錯、漏的情況發(fā)生,提升增量補丁包質量。
3) 提供自助一鍵編譯和受控功能,編譯功能,主要是通過調用maven開源框架提供的api對項目代碼進行自助一鍵編譯。在編譯通過后,通過調用svn框架的提交功能,實現(xiàn)版本的自動受控功能。
2.4項目輔助管理
這里,主要是開發(fā)統(tǒng)計頁面,利用各個環(huán)節(jié)產生的配置管理員版本制定記錄,研發(fā)人員提交記錄、編譯成敗記錄等,對研發(fā)人員工作成果進行統(tǒng)計,輔助項目管理,初步評估員工、團隊的績效。
有了上面四個大模塊的功能,項目組即可利用本工作平臺,初步實現(xiàn)了釋放配置人員、提升版本質量、固化增量流程等目標。結合后續(xù)的Jenkins進行持續(xù)繼承,Selenium+RF自動化測試和灰度發(fā)布等技術,即可實現(xiàn)版本的持續(xù)交付工作。
三、總結與展望
通過以上方式,為研發(fā)、配置人員提供了便利提升了工作效率,固化、規(guī)范了工作流程,釋放了人力,降低工作壓力,對研發(fā)提供補丁的準確性進行校驗,提升版本質量,在版本持續(xù)交付過程中起到規(guī)范化、標準化、自動化的工作流程,并為進一步的持續(xù)集成和持續(xù)交付奠定了踏實的基礎。
當然,主要是基于SVN,僅支持Eclipse插件方式控制研發(fā)人員的代碼提交,暫時不支持Git,CVS等,且工具無法支持Netbeans和TortoiseSVN的界面方式進行控制,還有待進一步研究,提升該解決方案的通用性。
參 考 文 獻
[1]《持續(xù)交付》James A.Whittaker/Jason Arbon,人民郵電出版社出版,2013年10月
[2]《Google軟件測試之道》John Ferguson Smart,John Ferguson Smart,2011年7月27日