0

我们正在为我们的 webapp 寻找我们的持续集成系统的部署选项。我们正在构建一个 .war 文件。我们需要将它部署到几个不同的环境中(例如 DEV、QA、STAGE 等)。AFAIK,有两种方法可以传入 env 特定属性:

首先,在启动 Tomcat 时使用 -D 选项:

-Denv=DEV

这需要我们catalina.sh为每个环境定制脚本。

二、启动Tomcat前使用环境变量:

export env=DEV;

这需要我们调整每个环境的部署脚本。这取决于平台(即在 Windows 上您必须这样做set env=DEV)。

谁能告诉我这两个选项哪个更好?或者还有其他更好的吗?

4

1 回答 1

0

我们有一个部署到 14 个不同环境中的 Web 应用程序。为了管理这一点,我们为每个环境创建了一个独特的构建。

我们使用 maven 作为构建系统,因此每个环境都有一个独特的配置文件。该配置文件引用了一个用于过滤的属性文件,其中包含因环境而异的配置。此信息被标记为 Spring 上下文文件、web.xml、weblogic.xml 等。(我们不过滤源文件,因为这会很快变得丑陋。)

第二部分是我们的 Jenkins CI 服务器。对于每个环境,我们都有一个引用相应配置文件的工作。这指向了我们的 subversion repo 中一个众所周知的标签名称。所以流程是这样的:

  1. 开发发生并且代码提交到主干。
  2. 需要构建到一些环境中,所以我们创建一个名为“最新”的标签(如果存在旧副本,则删除它们)。同时,我们还创建了一个带有日期时间戳的标签,但这是可选的。
  3. 启动适当的哈德逊构建。这意味着我们不会构建一些开发人员工作站,并且构建已经配置,所以没有什么要记住的。
  4. 从 Jenkins 中拉出要部署的工件。

我已经看到应用程序服务器本身维护了应用程序配置,但除非你有像glu这样的东西来管理事物,否则它很快就会成为维护的噩梦。如果您有不同的开发和运营团队,则尤其如此。

于 2012-04-11T01:12:04.543 回答