【问题标题】:Software deployment process [closed]软件部署过程[关闭]
【发布时间】:2016-03-03 10:03:18
【问题描述】:

我正在开发 Java/Spring Web 应用程序,并且有一个关于软件构建过程的问题,尤其是关于阶段和产品环境的问题。

现在,在当前项目中,我们有以下流程 - 我们将 Git 开发代码分支合并到 stage,然后使用 Maven 和 Jenkins 构建和部署项目到 stage 环境。一旦阶段被验证,我们将合并阶段以掌握 Git 分支,并再次使用 Maven 和 Jenkins 构建和部署项目到生产。

这是一个正确的过程吗?我们是否需要为 stage 和 prod 环境构建单独的 war 文件(就像我们目前所做的那样),或者我们是否需要构建一个单一的 war 文件,将其部署到 stage env 并提供 stage 参数,测试和验证它,然后部署与 prod 环境相同的 war 文件,但带有 prod 参数?

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

【问题讨论】:

    标签: java spring maven jenkins deployment


    【解决方案1】:

    在将版本从暂存升级到生产时,您通常希望将完全相同的二进制版本部署到生产,以确保您在暂存中测试的版本在生产中的行为相同。

    当您为生产创建一个新构建时,您无法保证它的行为与您为暂存所做的构建相同。如您所知,构建服务器上的 Java 版本或其他工具可能在这期间发生了变化。

    有多种方法可以解决配置挑战。您应该首先从应用程序中剥离所有特定于环境的配置(在您的情况下为 WAR),这样您就可以在所有环境中使用相同的二进制文件。 接下来,您可以:

    1. 手动管理目标环境本身的配置
    2. 使用 Puppet 或 Chef 等供应系统自动推出配置更改
      或(以下选项是我的偏好:)
    3. 使用每个环境的配置构建包(只是简单的 zip 文件)。
      构建结果示例:

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

    因此,当您部署到您的测试环境时,您需要部署 war 并解压缩 config-tst.zip。当你部署到 staging 时,你部署相同的 war 和 config-stg.zip 等。

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

    【讨论】:

      猜你喜欢
      • 2020-05-27
      • 2013-07-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-31
      • 1970-01-01
      • 2010-09-26
      • 2013-08-15
      相关资源
      最近更新 更多