2016-03-03 59 views
1

我正在研究Java/Spring Web应用程序,并且对软件构建过程有疑问,特别是关于舞台和产品环境。软件部署过程

现在,在当前项目中,我们有一个以下过程 - 我们将Git dev代码分支合并到舞台上,然后使用Maven和Jenkins构建和部署项目来构建舞台环境。一旦阶段被验证,我们正在合并阶段来掌握Git分支,并再次使用Maven和Jenkins构建和部署项目进行生产。

这是一个正确的过程吗?我们是否需要为阶段和prod环境构建单独的war文件(就像我们目前所做的那样),还是需要构建单个war文件,将其部署到env阶段并提供阶段参数,然后对其进行测试和验证,然后部署同样的战争文件来刺激环境,但与prod参数?

在第二种方法的情况下如何正确参数化必须在Tomcat上运行的单个应用程序,并使用stage和prod的不同参数?另外,我们正在使用Maven过滤功能..在这种情况下如何处理它呢?

回答

1

当从登台到生产促进一个版本,你通常要部署的是完全相同的二进制版本到生产,以确保您在升级测试版本将具有相同的行为在生产中。

当您为生产制作新版本时,您无法保证它的行为与您为暂存制作的版本相同。对于您所知道的,构建服务器上的Java版本或其他工具可能在两者之间发生了变化。

有多种方法可以解决配置问题。你应该从应用程序中剥离所有环境特定的配置(在你的情况下是一个WAR),这样你就可以在所有的环境中使用相同的二进制文件。 接着,则可以:

  1. 管理在目标环境本身手动
  2. 使用供应系统像木偶或厨师自动推出配置更改
    或(该选项下面具有配置我的偏好:)
  3. 用每个环境的配置构建软件包(只是普通的zip文件)。
    实施例构建结果:

    • application.war
    • config-tst.zip
    • config-stg.zip
    • config-prd.zip

所以,当您部署到测试环境时,您将部署war并解压缩config-tst.zip。当你部署到分期,你部署相同的战争和config-stg.zip等

希望这会有所帮助,祝你好运!