git-flow:制作"发布候选人的工作流程" / QA网站工件

时间:2016-08-12 11:39:05

标签: git maven branch git-flow branching-strategy

我们正在使用git-flow分支模型开发包含网络工件的多个项目。

请参阅:Vincent Driessen's git flow branching model

我们正在使用develop分支和jenkins自动构建和部署SNAPSHOT网络工件来测试环境。

我们手动运行git flow release startgit flow release finish来构建非快照工件,这些工件部署到我们的工件并最终部署在prod中。

(如何运行git flow xxx命令?这里是cheatsheet

我的问题:质量保证工作流程应如何运作?

鉴于:

  1. 我们不想将快照部署到QA
  2. 如果我们在QA中测试的相同工件部署在PROD
  3. 中,那就太好了
  4. 我们可以尽可能使用git flow脚本和分支模型
  5. 看看分支模型,我自己最好的理解是:

    1. 制作发布分支(例如release/1.1)。
    2. 从发布分支构建工件并在QA中进行测试。
    3. release/1.1分支中进行更改并根据需要返回步骤2
    4. 测试完成后,finish发布(合并为主人)
    5. 在prod。中部署工件。
    6. 有没有人有这方面的经验,特别是步骤2?如何唯一地标识发布分支中的工件?

      我们正在考虑使用发布候选版本版本控制,其中maven版本1.1.RC1表示release-candidate1,后面是1.1.RC2,最后是1.1(最终版本。)

3 个答案:

答案 0 :(得分:1)

我认为使用限定符是有意义的,因为maven总是会考虑使用比没有限定符1.1.RC-1的版本更早的限定符1.1的版本。

请注意,SNAPSHOT限定符是特殊的,因此maven(可能是Artifactory)将其视为与其他限定符不同。 Maven将其视为增量构建,而其他资格则不是。这意味着如果您不想使用SNAPSHOT限定符,则可能必须为发布分支中的每个提交设置新版本。

答案 1 :(得分:1)

我遇到了同样的问题并扩展了Vincent Driessen's git flow branching model以包含代表环境TEST,QA和PRD的分支。

我没有让MASTER包含生产中的最后一个代码,而是选择让MASTER默认指向QA中的最后一个版本。然后部署到珠三角只是宣传已经在QA上向珠三角发布的候选版本。

您现在可以对QA上的版本执行修补程序,这可能会比生产版本的修补程序更多。通过将主分支重置为要修复的生产版本,仍可以执行生产修补程序。

extended git flow

答案 2 :(得分:0)

很好的问题,我们想要做同样的事情。这就是我们想出的。与@ crea1类似,添加了新的限定符(补丁号)。现在,这可以是发布分支中单独发布的工件。

在实践中,它与你提议的不同:

  1. 列表项
  2. 创建发布分支
  3. 发布1.0.0版,使用此版本进行QA测试
  4. 修复一些错误,从发布分支执行maven 1.0.1版(.1是额外的限定符)
  5. 准备好后完成发布,版本类似于1.0.4
  6. 部署到prod
  7. 我们有许多内部依赖项可能会因测试而发生变化。这被证明是一种有效的方法。对于应用程序本身来说,它不是一个重要的版本,但是在QA完成后不必重建它会很好。这也适用于此。

    关键是释放时版本中有一个额外的丢弃号码。我建议不要做像RC1这样的事情。尽管它使描述更具描述性,但如果它是最终版本,我将感觉需要重新发布/构建RC,以便RC不在最终版本中。我希望能够将直接测试的相同工件直接投入到产品中,同时没有" RC"我的pom中的版本用于prod发布。

    在我看来,这应该包含在gitflow模型中,即候选发布版本。