2012-03-18 119 views
0

我们正在使用功能分支。如何避免将分支部署到生产服务器?

我们使用bash脚本来部署,并且该脚本有一个参数确定在何处部署:prod_server,test_env,local_virtualbox等

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

有没有一种很好的方法来做到这一点?我是否错过了一些适合这个问题的maven方法,或者我应该使用一些bashisms来检查我正在工作的哪个分支,并根据参数中给定的env名称进行限制?我应该只部署标签而不是分支?

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

回答

1

单独使用版本控制来解决这个问题: 如果您编写构建bash脚本,在主干或最新标记上执行svn co,并在此新鲜结帐上执行maven构建,则可以防止此问题。

如果你想在这个过程中使用maven: 我建议你在你的deploy bash脚本中放置一个检查,以确保如果你在最后一个控制点能够捕捉它的地方犯了一个错误。

在我与maven合作的项目中,我们将生产部分设计为一个配置文件。由于产品配置文件是唯一包含部署所需信息的产品(最终名称在第一次看到时对每一个产品都很明显),因此不可能将非生产型产品部署到生产环境中,但我不会不认为这适用于您(因为您声明您使用分支而不是用于特征开发的配置文件)。

因此,在生产情景模式设置的finalName这样和部署bash脚本检查它和你应该罚款:

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

这样,你总是有手动应用“,这是生产力“无论你在建什么标志。

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

相关问题