我正在使用Git(bitbucket)+ Jenkins流程来管理我的客户端版本。我们只有两个env TEST
和PROD
。我遵循以下简单的流程。 (我不确定它是否有用,但我在.war
项目使用Java
工件,Maven
作为构建工具
注意: test
是分支,TEST
是整个帖子中的环境
master
master
每个功能创建PR master
合并master
env TEST
TEST
上的所有内容都很好看,我会在master
env PROD
但是有关于流程的问题(如下所述),
Feature-1
,Feature-2
,Feature-3
)在TEST上逐个移动,间隙最小,我只想发布{在PROD上{1}},然后上面的流程对我没有帮助为了弄清楚上面的问题,我试过这样的事情,
Feature-2
创建了一个名为test
的分支
master
master
每个功能创建PR test
合并test
env test
TEST
上看起来都很好,那么我会在TEST
env master
为同一功能创建第二个PR
PROD
master
但是这种方法也存在问题,我正在尝试用以下方案解释问题
PROD
分支并合并了所有分支test
获取每个PR,否则我无法将其与test
分支合并test
上发布Feature-2,所以当我为Feature-2分支创建目标= PROD
的PR时,它还附带功能 - 1个更改(因为我必须从master
拉取而且Feature-1已经在test
上),这是不可取的。 我的基本目标是能够在任何环境中随时发布任何功能。我确信git提供了许多工具来做到这一点,但由于test
的知识限制,我无法弄清楚。有没有人可以帮我上面的?
提前感谢您抽出时间阅读本文。
答案 0 :(得分:0)
您是否考虑使用配置表激活/停用PROD环境中的功能?像流口水这样的东西。
您可以通过变量保护所有功能,例如,在测试中激活此变量。当您的功能已签名时,您可以在PROD中激活它。
如果一切都受到保护,那么您将哪个拉取请求发送到PROD并不重要。
如果您切换到这个新流程,您可能想要添加第3阶段PRE-PROD,其中您的设置与您的PROD环境完全相同。
答案 1 :(得分:0)
你只需要使用master
分支,所以对于你的最后一个场景:
你有3个目标为test
的PR,所有3个分支都是从master
创建的,你需要做的是将master
合并回测试和所有其他尚未合并的fetleure分支之后一个分支合并到master
以这种方式你将是安全的(有时,你会有合并冲突,但是它是预期的。)