我们应该如何处理拉动请求到hotfix / *分支?

时间:2016-08-18 15:19:47

标签: git tfsbuild devops git-flow octopus-deploy

TL; DR - 如何为动态创建的分支实现Pull请求?

我们在TFS git中使用了一个经过修改的gitflow工作流程,其中包含用于构建和测试的新TFS 2015 Build系统,以及用于部署的Octopus。

我们有以下设置:

  • master - 将预览版本发布到我们的INT服务器
  • release / v * - 将发布版本发布到QA - > UAT - > PREPROD - > LIVE
  • feature / * - 构建和测试功能的代码。不部署到环境。
  • hotfix / v * - 将发布版本发布到PREPROD - > LIVE for urgent hotfixes

没有开发分支。我们从我们推送发布/ v *时创建的标签中分支hotfix / v *分支,以便修复实时环境。这一切都非常顺利......直到我们在“master”上实现安全性,并对除feature / *分支之外的所有分支强制执行Pull请求。

我被要求在推送时启用PR来掌握,释放/ *和hotfix / *分支。师父没问题 - 可能是因为它是一个持久的分支;一旦完成工作,所有其他三种分支类型都会合并为主,并且PR对此非常有效。我已经使用TFS REST API在新创建的版本/ *和hotfix / *分支上启用动态分支策略。

但是,当我们尝试对发布/ *和hotfix / *分支所做的更改强制执行PR时,我们正面临工作流问题。这些分支是由开发人员在需要时动态创建的 - 创建者的第一次推送可以包括任何更改,然后将这些更改部署到Octopus。对于发布分支,这通常是正常的,因为我们所做的只是增加文件中的版本号,并推送更改。对发布/ *分支的任何进一步更改都要求开发人员在发布/ *分支(比如releasefix / v1.1.2)之外创建另一个分支,以便他们在发布分支中创建PR。这有点尴尬(有点危险),但对我们来说是一种可接受的方法。

当我们想要PR修补程序/ *分支时出现问题。目前的工作流程如下:

  • Developer从发布标记创建一个名为“hotfix / v1.1.3”的分支,其中版本为LIVE版本+ 1补丁增量
  • 开发人员根据所需的修复
  • 对修补程序分支进行更改
  • 开发人员远程推送修补程序分支,然后启动构建并创建Octopus版本。此版本可以自由升级为PREPROD和LIVE ,无需 进行代码审查。
  • 然后将hotfix / v1.1.3分支合并到master中,并且当前存在任何release / *分支。

在TFS构建的标准“推送触发器”设置之上,TFS还有一个代码策略,允许我们在创建PR时运行构建 - 但之后 PR被批准(除了公关正在合并的分支机构)。 release / *和hotfix / *分支通常合并为master,但我们需要在PR批准后在这两个分支上运行发布版本,而不是之前!

有没有人有任何建议?我唯一的想法是完全废弃修补程序分支,并维护最新的实时发布/ *分支,并将修补程序合并到其中。我们遇到的问题是我们需要针对修补程序在章鱼(PREPROD - > LIVE)中定位不同的生命周期,因为QA和UAT可能正被另一个版本分支使用。

作为旁注,我们必须使用release / *分支,因为我们可以在任何时候进行多个版本。这允许我们为不同的环境维护单独的错误修复 - 进入gitflow的开发/主设置对我们不起作用,感觉就像向后一步。

0 个答案:

没有答案