软件部署过程

时间:2016-03-03 10:03:18

标签: java spring maven jenkins deployment

我正在研究Java / Spring Web应用程序,并对软件构建过程有疑问,特别是关于阶段和prod环境。

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

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

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

1 个答案:

答案 0 :(得分:1)

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

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

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

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

    • application.war
    • config-tst.zip
    • config-stg.zip
    • config-prd.zip
  4. 因此,在部署到测试环境时,部署war并解压缩config-tst.zip。部署到分段时,可以部署相同的war和config-stg.zip等。

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