如何使用Git(bitbucket)+ Jenkins管理发布个人功能?

时间:2018-04-24 05:02:59

标签: git maven jenkins continuous-integration continuous-deployment

我正在使用Git(bitbucket)+ Jenkins流程来管理我的客户端版本。我们只有两个env TESTPROD。我遵循以下简单的流程。 (我不确定它是否有用,但我在.war项目使用Java工件,Maven作为构建工具

注意: test是分支,TEST是整个帖子中的环境

  • master
  • 为每个功能创建本地分支
  • 对local进行更改并使用target = master每个功能创建PR
  • 如果代码更改看起来很好,则将PR与master合并
  • master env
  • 上发布TEST
  • 如果TEST上的所有内容都很好看,我会在master env
  • 上发布PROD

但是有关于流程的问题(如下所述),

  • 如果有多个功能(让我们说Feature-1Feature-2Feature-3)在TEST上逐个移动,间隙最小,我只想发布{在PROD上{1}},然后上面的流程对我没有帮助

为了弄清楚上面的问题,我试过这样的事情,

  • 在bitbucket
  • 上从Feature-2创建了一个名为test的分支
  • master
  • 为每个功能创建本地分支
  • 对local进行更改并使用target = master每个功能创建PR
  • 如果代码更改看起来很好,则将PR与test合并
  • test env
  • 上发布test
  • 如果特定功能在TEST上看起来都很好,那么我会在TEST env
  • 上为target = master为同一功能创建第二个PR
  • PROD
  • 上发布master

但是这种方法也存在问题,我正在尝试用以下方案解释问题

  • 假设我已经创建了Feature-1,Feature-2,Feature-3(逐个顺序但有一些差距)的PR,其中target = PROD分支并合并了所有分支
  • 在执行上述操作时,我必须从test获取每个PR,否则我无法将其与test分支合并
  • 现在,让我们说我只想在test上发布Feature-2,所以当我为Feature-2分支创建目标= PROD的PR时,它还附带功能 - 1个更改(因为我必须从master拉取而且Feature-1已经在test上),这是不可取的。

我的基本目标是能够在任何环境中随时发布任何功能。我确信git提供了许多工具来做到这一点,但由于test的知识限制,我无法弄清楚。有没有人可以帮我上面的?

提前感谢您抽出时间阅读本文。

2 个答案:

答案 0 :(得分:0)

您是否考虑使用配置表激活/停用PROD环境中的功能?像流口水这样的东西。

您可以通过变量保护所有功能,例如,在测试中激活此变量。当您的功能已签名时,您可以在PROD中激活它。

如果一切都受到保护,那么您将哪个拉取请求发送到PROD并不重要。

如果您切换到这个新流程,您可能想要添加第3阶段PRE-PROD,其中您的设置与您的PROD环境完全相同。

答案 1 :(得分:0)

你只需要使用master分支,所以对于你的最后一个场景: 你有3个目标为test的PR,所有3个分支都是从master创建的,你需要做的是将master合并回测试和所有其他尚未合并的fetleure分支之后一个分支合并到master以这种方式你将是安全的(有时,你会有合并冲突,但是它是预期的。)