用Docker和Git搭建在線開發環境
為什么要在云端搭建開發環境
如今,在傳統的開發模式下,版本控制,自動化測試,持續集成都已經陸陸續續放到的云端。
- 測試工程師,可以用過自動化測試腳本在云端做大規模的回歸測試
- 運維工程師,可以通過自動化的部署工具在云端快速部署應用
- 產品負責人,可以通過版本控制工具控制產品的發布
唯獨開發工程師還在利用手中的電腦,筆記本等設備來完成開發工作。
在項目開發階段,我們通常面臨下面幾個問題:
1. 在項目啟動階段,如何讓開發工程師快速搭建,并配置開發環境,來縮短項目啟動時間和成本。
2. 在項目開發階段,如何讓開發工程師有:
- 完全相同的開發環境,來降低調試成本。
- 近似于產品環境的架構,來降低部署時因環境差異帶來的風險。
- 降低對開發設備性能和種類要求,來降低設備成本。
- 靈活的分配開發資源(CPU,內存,存儲),讓需要大量開發資源的工程師快速拿到資源。
云端開發環境要解決的問題總結
基于以上思考,我總結了以下4個云端開發環境要解決的問題:
- 保證每個開發工程師都能快速的獲得一致的“開箱即用”的開發環境
- 開發環境擺脫開發設備的種種限制,例如操作系統,設備性能
- 讓開發環境盡可能模擬產品環境的結構。
- 靈活的分配開發資源
在云端搭建開發環境的挑戰
一個“開箱即用”的開發環境應該包括:功能完備的代碼編輯器, 一個應用運行環境,一個調試工具箱。
- 為了擺脫設備的限制,集成開發環境可以用HTML5等主流瀏覽器兼容技術實現。
- 為了靈活的分配資源和模擬產品環境,可以將應用運行環境放在云端,并使用容器技術配置。
- 調試工具包括日志的輸出,斷點等功能。
技術難點總結
- 在線的集成開發環境:兼容各大主流瀏覽器
- 隔離的運行環境:隔離,可定制,高效
- 調試代碼:查看日志,可設置跟蹤斷點
潛在的可選技術
基于技術難點,我做了一些調查研究,選擇了幾個備選的開源技術。
- 在線集成開發環境: ICEcoder, Eclipse Orino, Codiad
- 隔離的運行環境: 云端虛擬機, Docker
- 代碼調試: fluentd
目前,只確定了使用Docker來實現運行環境。
集成在線開發環境,我使用Git來解耦代碼運行環境和編輯環境,并代碼同步。
代碼調試,我使用獨立的fluentd服務收集日志,通過SSH登錄到虛擬機查看fluent收集的Docker日志。
云端開發環境的架構概要
下面這張圖是一個簡單的架構說明。首先,使用Git來解耦代碼的編輯和運行環境。
我在云端,使用Docker搭建了Git裸庫,裸庫中用Git hook來同步代碼。使用Docker來運行應用,通過瀏覽器來檢查結果。
因為,代碼的編輯和運行環境的分離,開發工程師可以靈活的選擇開發工具。開發工具可以是在線編輯器,也可以是本地的編輯器。
借助于Docker的靈活性,開發工程師可以快速配置出應用運行環境,并分享給開發團隊成員。
概念驗證
- 在本地編輯代碼
- 用Git同步到云端
- 用docker運行代碼查看結果