我想知道使用ant支持多个构建版本的最佳方法是什么。在我目前的项目中,我有3个环境(开发,测试,生产)。有2个生产服务器具有不同的配置(不同的数据库,活动目录,Web服务URL等)。一次至少运行2个测试版本。还有一些其他配置选项仅用于测试具有启用/禁用功能的行为。
如何使用ant处理它?</ p>
目前我们有一些目录,其中包含每个配置的文件集(persistence.xml,datasource,web.xml,jboss特定文件,几个应用程序属性文件...),这些文件在构建期间被复制到正确的目录中(它是变为A LOT,并且在所有配置中可见变化要求我们更改所有配置的文件。) 有一些任务,比如build-moduleA-dev,build-moduleB-dev,build-moduleA-test ......
通常,构建过程如下所示:
所以,我想知道:
答案 0 :(得分:3)
如果你已经这样做了,你不清楚你写的是什么,但你应该为每个环境生成相同的构建工件,然后可以通过不同的环境作为构建管道的一部分来提升。
就您的每个环境配置而言,您可以将它们视为构建工件,区别在于每个环境都有不同的人工制品。另一种方法是将配置存储在数据库或LDAP中,应用程序在启动时加载。但是,通常有一些环境配置无法存储在DB或LDAP中,至少是DB或LDAP来从中获取环境配置。
然后,特定环境的部署过程取决于构建工件和该环境的配置工件。我已经使用Apache Ivy和Ant来管理这些依赖项(以及普通的依赖项),我强烈推荐它。
同样,对于您的部署过程,您应该使用Puppet或CfEngine之类的内容。它们允许您对您的环境执行幂等部署,因此,不是说“给定我认为环境所处的状态,执行这些操作以使其进入我想要的状态”,它允许您说“无论状态如何”环境进入,找出需要执行和执行它们的动作,进入我想要的状态。
我知道这超出了您关于管理配置的问题,但只有在整个部署管道图片中,您才能更好地管理每个环境配置。
有关部署管道的更多详细信息,我强烈推荐本书Continuous Delivery。我相信你会发现第2章:配置管理非常相关。