如何避免将分支部署到生产服务器?

时间:2012-03-18 10:52:56

标签: version-control deployment maven

我们正在使用功能分支。

我们正在使用bash脚本进行部署,该脚本有一个参数,用于定义部署位置:prod_server,test_env,local_virtualbox等。

但是,功能分支和主干应始终仅部署到本地/测试,并且之前的稳定版本分支应该是唯一可以部署到prod env的分支。 (我问的唯一原因当然是最近我几乎意外地用一些功能分支覆盖了我们的产品)。

有一个很好的方法吗?我错过了一些maven正确解决这个问题的方法,或者我应该只使用一些bashisms来检查我正在处理哪个分支并根据参数中给出的env的名称进行限制?我应该只部署标签而不是分支吗?

(不确定它是否相关但是:java控制台应用程序,spring shop,maven用于构建)。

1 个答案:

答案 0 :(得分:1)

单独使用版本控制解决此问题: 如果您编写一个构建bash脚本,在主干或最新标记上执行svn co并在此新签出上执行maven构建,则可以阻止此操作。

如果你想在这个过程中使用maven: 无论如何,我建议您检查部署bash脚本,以确保在某个地方出错时,最后一个控制点会抓住它。

在我与maven合作的项目中,我们将生产部分设计为个人资料。由于prod配置文件是唯一一个包含部署所需信息的配置文件(并且最终名称使第一次看起来对每个人都很明显),因此无法将非生产性版本部署到生产环境中,但我不赞成我认为这适用于你(因为你声明你使用分支而不是配置文件进行功能开发)。

因此,在高效配置文件中设置finalName,并在deploy bash脚本中检查它,你应该没问题:

<profile>
    <id>productive</id>
    <build>
        <finalName>MyProgram-productive-${version}</finalName>
    </build>
</profile>

通过这种方式,您始终必须手动将'this are productive'标志应用于您正在构建的任何内容。

但是这不会阻止你在功能分支上设置'this is productive'标志,因为maven不知道它的版本控制情况。