我们正在使用git-flow
分支模型开发包含网络工件的多个项目。
请参阅:Vincent Driessen's git flow branching model
我们正在使用develop
分支和jenkins
自动构建和部署SNAPSHOT
网络工件来测试环境。
我们手动运行git flow release start
和git flow release finish
来构建非快照工件,这些工件部署到我们的工件并最终部署在prod中。
(如何运行git flow xxx
命令?这里是cheatsheet)
我的问题:质量保证工作流程应如何运作?
鉴于:
git flow
脚本和分支模型看看分支模型,我自己最好的理解是:
release/1.1
)。QA
中进行测试。release/1.1
分支中进行更改并根据需要返回步骤2 finish
发布(合并为主人)有没有人有这方面的经验,特别是步骤2
?如何唯一地标识发布分支中的工件?
我们正在考虑使用发布候选版本版本控制,其中maven版本1.1.RC1
表示release-candidate1
,后面是1.1.RC2
,最后是1.1
(最终版本。)
答案 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上的版本执行修补程序,这可能会比生产版本的修补程序更多。通过将主分支重置为要修复的生产版本,仍可以执行生产修补程序。
答案 2 :(得分:0)
很好的问题,我们想要做同样的事情。这就是我们想出的。与@ crea1类似,添加了新的限定符(补丁号)。现在,这可以是发布分支中单独发布的工件。
在实践中,它与你提议的不同:
我们有许多内部依赖项可能会因测试而发生变化。这被证明是一种有效的方法。对于应用程序本身来说,它不是一个重要的版本,但是在QA完成后不必重建它会很好。这也适用于此。
关键是释放时版本中有一个额外的丢弃号码。我建议不要做像RC1这样的事情。尽管它使描述更具描述性,但如果它是最终版本,我将感觉需要重新发布/构建RC,以便RC不在最终版本中。我希望能够将直接测试的相同工件直接投入到产品中,同时没有" RC"我的pom中的版本用于prod发布。
在我看来,这应该包含在gitflow模型中,即候选发布版本。