是的,您需要在其中进行所有步骤的测试或登台环境,但是必须为单独的环境保留单独的配置文件。
Environments
|_property_files
|_ dev
|_ com.bla.util
| |_ example.properties
|_ com.bla.beans
| |_ someconfig.xml
|_ test
....
|_ production
....
|_database_updates
|_ dev
|_ insert_new_static_data.sql
|_ ...
...
基本上,在我的构建和部署脚本中,我采用一个环境属性,该属性将获取特定于环境的元数据文件(如XML文件),并在打包之前在我的构建位置中替换它们。进一步,在我的部署脚本中,我将在数据库更新中查找所有SQL文件,并针对该环境在已配置的数据库上执行这些文件。
我可以通过自定义构建任务来完成此操作,但是实际上我只是使用一些JUnit测试来为我完成此操作。如果发生任何SQL异常,则测试将失败,因此部署将失败。一般来说,SQL脚本也具有智能,如果环境中已存在必要的数据,则它们会跳过插入或更新。
对于在特定环境下运行的批处理或shell脚本,我也有一个类似的目录。
您问题的全部内容是这样的:它们应该始终得到更新,但不会更新。
这些配置可驱动您的自动化构建和部署,因此,如果不更新它们,则构建会失败,并且会通过电子邮件向经理发送。对于团队来说,维护特定版本的构建和部署配置与检入已编译的代码一样重要。两种违规行为都会破坏构建。
简而言之,更大程度地采用持续集成(CI)原则将有助于消除生产发布的痛苦。