使用 git 工作流和容器处理修补程序分支

问题描述

我有以下场景:

我们正在使用功能分支工作流和容器。

团队 A 的开发人员创建分支(从 master/main)来处理功能,一旦完成,代码将与发布分支合并。在发布分支上提交会启动一个管道来构建、运行测试并将容器部署到暂存环境。用户批准后,容器被“提升”为生产,开发人员将发布分支与主分支合并,创建标签并完成工作。

这很好用,除非我们需要修补程序。

当 A 团队的代码处于 staging 环境中时,B 团队开始在“hotfix”分支上工作,他们的提交也启动了一个管道来运行构建、测试、创建容器并部署到一个特殊的 staging 环境,我们称之为“修补程序阶段”。此时,我们有同一个项目的 2 个容器,正在验证不同的代码

如果团队 A 的容器获得批准,则将其部署到生产环境中,但如果团队 B 的容器获得批准,则也将其部署到生产环境中。问题是团队 A 的容器将在没有修补程序的情况下投入生产,而团队 B 的容器没有团队 A 的功能

团队 A 和团队 B 是不同的公司,每个公司都有自己的 SLA。他们不想将“hotfix”分支与“feature”分支(或“release”分支)合并。

有没有可以解决这个问题的 git 工作流程?

解决方法

在 git flow 中,功能分支应该从开发分支开始。

当需要发布时,会从开发中创建一个发布分支。 如果在发布阶段发现错误,则从发布分支创建修复分支,当错误解决时,修复分支必须合并到发布分支和开发分支(可以同时发展)。您可以针对在质量检查期间发现的所有错误执行此操作。

如果在以前的版本中发现错误,则必须从 main 启动一个修补程序分支并关闭到 develop。如果在那一刻有发布分支,您可以选择是否也发布热修复。

当事情看起来稳定时,会在发布分支上创建一个标签,这就是发布。您还可以使用候选发布标记,然后标记最终候选发布。

发布完成后,您可以关闭主分支的发布分支,在此期间开发可以发展并获得错误修复

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...