一篇訪談,只對其中的工具感興趣,轉載

CSDN:Esri研發中心是如何進行Java項目開發管理的?

陳抒:Esri北京研發中心的總經理Moxie先生來自美國,因此按照那邊的標準要求軟件研發過程。項目管理採用Scrum敏捷方法,強調工程師的自我管理。我主要介紹一下我們的代碼評審系統和持續集成系統。

首先我們使用Git進行代碼管理,不同於VSS、CVS、Subversion,這是個分佈式版本系統,功能極其強大,但是學習成本高,原理和使用技巧複雜。在此基礎上,採用了Gerrit進行用戶權限管理和代碼評審管理,程序員的代碼只有經過評審才能進入Git倉庫。Gerrit是Android社區的評審系統,有很嚴謹的工作流,適合於那些關注代碼質量的團隊。持續集成,也就是代碼入庫後,會有服務器自動編譯代碼,運行單元測試,產生報表,打包並安裝。這裏麪包含大量的技術細節。下面有個使用場景:

程序員A編寫一個Java的庫,經過代碼評審後入庫,一臺Jenkins服務器發現代碼已經更新,自動從Git中獲取最新代碼,進行編譯。這個Java庫採用Maven構建,因此編譯後可以運行測試用例,進行代碼靜態掃描(使用Checkstyle、PMD、FindBugs),並將測試結果,代碼掃描結果, 測試覆蓋率等生成HTML報表發往報表服務器。如果測試通過的情況下,編譯後的jar包會被部署在Nexus服務器上,供其他程序使用。

程序員B正在開發一個Web程序,也是通過Maven構建自己的工程,通過Maven的依賴管理很容易的就將Nexus服務器上的A寫的jar包引入到自己的工程使用。當B的程序通過評審進入代碼倉庫,Jenkins服務器獲取最新代碼進行構建,同樣進行代碼掃描,運行單元測試,然後負責將war包遠程部署到一臺web服務器上用於併發測試。

程序員C正在製作一個安裝包,他編寫腳本安裝web服務器和B的程序,以及其他一些產品需要的程序和文檔。他所有的腳本和文件也會被提交到代碼倉庫中,Jenkins服務器檢查到更新後會獲取並運行一些事先編寫的腳本執行復制文件,創建壓縮包的工作。然後通過SSH公鑰方式自動的登錄到一臺運行KVM的Linux機器上,將其中的一個虛擬機恢復到某個測試狀態。再登錄到這個虛擬機上,安裝這個壓縮包。

當一切都自動化的完成後,經理和工程師們都可以通過瀏覽器訪問虛擬機,來檢查產品的功能,通過報表系統來檢查代碼是否規範,測試是否通過。這個自動化過程其實是跨語言的。Java社區在這方面特別成熟,提供了很多有用的工具,因此我們先在Java開發中廣泛使用。同時我們也已經用於JavaScript語言,還打算集成C++項目。另外,Esri工程師分佈在全球各地,數量衆多。因此我們正在建設基於GitLab的公司內部的Social coding模式,讓工程師們像在社交網站上一樣看到其他工程師的工作,並分享自己的工作。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章