在持續集成過程中,對於多部署環境的配置時常會讓發佈人員異常頭疼。很多情況下是先發布後手動修改,這種方式嚴重限制了持續集成自動化的特點;另外一種高級的辦法是讓ant在編譯過程中排除制定配置,這種辦法保留了持續集成的自動化特點,無需依賴人工干預,但在測試、準生產環境配置變更較頻繁的情況下,仍對自動化發佈造成影響。
爲了解決上述問題,本人採用了ant編譯過程中動態傳入參數來控制選取不同配置文件的方式,方法很簡單,詳情如下:
①讓步署環境敏感的配置文件與部署環境一一對應
②ant編譯過程中傳入環境參數
③ant根據環境參數選取不同配置文件編譯到發佈程序中
以javaWEB程序舉例,某project:acms與部署環境敏感的配置文件爲src/datasource.properties
①部署環境有三個:開發、測試(test)、生產(prod),根據三個環境分別生成對應配置文件(默認爲開發,避免開發人員修改配置文件debug)
②定義變量deployenv,默認爲測試環境(test)
<!-- 部署環境 -->
<property name="deployenv" value="test"/>
③將與部署環境對應的配置文件拷貝至WebContent/WEB-INF/classes下,再將其重命名爲datasource.properties文件
<!-- 根據部署環境,拷貝對應數據庫配置到classes -->
<echo message="deployenv:${deployenv}"/>
<copy todir="WebContent/WEB-INF/classes" file="src/datasource_${deployenv}.properties"/>
<move file="WebContent/WEB-INF/classes/datasource_${deployenv}.properties" tofile="WebContent/WEB-INF/classes/datasource.properties"/>
④本項目使用hudson作爲持續集成工具,配置ant properties傳入參數
至此即可完成對於project:acms的多部署環境持續集成的自動化進行。