从主服务器或修补程序部署到生产?

时间:2013-12-04 02:36:46

标签: java git deployment git-flow

经过几年的SVN使用后,我们正在公司采用Git。 git flow非常适合我们对master / hotfix / develop / release分支的需求。除了一个难题,到目前为止一切进展顺利。 我们的项目是weblogic的Java应用程序,我们在项目构建中生成一个WAR文件。

背景是:

  • 我们有master作为包含生产代码的主干
  • 新的修补程序是从主
  • 分支出来的
  • 开发人员提交修补程序
  • 质量检查测试修补程序
  • 二元通过QA-wise认可

最大的问题是:

  • 我们应该将二进制文件从修补程序部署到生产吗?
  • 或者我们应该合并到掌握,从那里构建,测试然后部署到生产?

我知道master将是支持生产代码的分支。所以我有从修补程序部署的问题。 但是,从master进行部署意味着在相同的代码库上有2个QA周期,因为2个版本(在修补程序和主服务器上)可能会产生不同的二进制文件,具体取决于maven依赖关系/构建环境/ ... 同一代码库上的2个QA周期是浪费资源。

我在网上搜索并发现了很少的参考资料。在这里和那里,我看到人们说他们从master部署,而其他人从修补程序部署。问题是,从master部署的人通常都在解析的语言项目(PHP,Perl,...)上,因此他们没有要考虑的二进制文件。

你们中是否有人遇到过这个问题?你采取了什么方法?

提前致谢!

2 个答案:

答案 0 :(得分:0)

为小补丁分支短期释放分支的重点是,您可以准确选择应用于已知状态的内容。你可能有一个1.0.0版本,但你需要一些错误修正来制作1.0.1。在这种情况下,从1.0.0开始分支并应用你的错误修正并从那里释放是有意义的。

从发布分支合并到master并从那里进行发布也有效,但是首先要问你为什么要创建分支以及这实际上是否是一个修补程序。从质量的角度来看,最好是在目标分支上进行开发,而不是孤立地工作,最后进行最终合并 - 因为就像你说你需要两个QA周期一样。

要问的问题似乎是您是否要严格控制要在新版本中包含的提交,或者您是否对包含该提交的任何版本都有好处。

我不清楚部署类型(未编译的脚本语言与编译语言)如何与讨论相关。

答案 1 :(得分:-1)

这是关于git分支的优秀帖子 - 希望这有帮助

来源:http://nvie.com/posts/a-successful-git-branching-model/