我在一家相对较小的咨询公司工作,该公司为大公司提供 Java 企业 Web 应用程序。在最近与客户的一次会面中,我提出了一些关于如何根据他们的工作方式调整我们的发布流程的想法。
对于每个应用程序平台,他们通常都有一个开发、测试和生产环境,我们的应用程序就在其中部署。此外,我们有一个本地开发环境,我们在其中进行大部分开发工作。
我们目前的方法是我们有 4 组配置数据,每个环境一组。如果我们为其中一个环境准备发布,我们交换配置并使用 maven 生成用于部署在 tomcat 服务器上的 war 文件。此外,我们使用 git 进行版本控制。
我想将这个过程自动化到一个整体的构建过程中,但希望得到一些关于采用哪种方法的反馈:
配置
- 配置应该作为war文件的一部分集成到构建中还是外部化并输入到Web应用程序中?使用maven如何实现这一点?
- 您如何处理多平台配置的差异?(例如,基于标志的方法作为构建过程的一部分)
人工制品生成
- 我的目标是为每个环境提供一个 rpm 而不是一个 war 文件,这样我就可以控制安装路径并使安装可逆。这是一种常见的做法吗?
版本控制
- 我们使用 git 进行版本控制,在单个存储库中包含 dev、stage 和 release 分支。目前我们还将所有平台配置存储到同一个存储库中,我认为这与 dev/stage/release 分支无关。放入单独的存储库是否有意义?