在持续集成过程中,对于多部署环境的配置时常会让发布人员异常头疼。很多情况下是先发布后手动修改,这种方式严重限制了持续集成自动化的特点;另外一种高级的办法是让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的多部署环境持续集成的自动化进行。