【问题标题】:How to manage releasing individual features with Git (bitbucket) + Jenkins?如何使用 Git (bitbucket) + Jenkins 管理发布单个功能?
【发布时间】:2018-04-24 14:34:37
【问题描述】:

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

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

  • master 为每个功能创建本地分支
  • 在本地进行更改并创建 PR,目标 = master 每个功能
  • 如果代码更改看起来不错,请将 PR 与 master 合并
  • TEST 环境上发布master
  • 如果在 TEST 上一切正常,我在 PROD env 上发布 master

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

  • 如果有多个功能(比如说Feature-1Feature-2Feature-3)在 TEST 上以最小的间隙一一移动,并且我只想在 PROD 上发布 Feature-2,那么上面的流程不会帮帮我

为了解决上述问题,我尝试了这样的方法,

  • 在 bitbucket 上从 master 创建了一个名为 test 的分支
  • master 为每个功能创建本地分支
  • 在本地进行更改并创建 PR,目标 = test 每个功能
  • 如果代码更改看起来不错,请将 PR 与 test 合并
  • TEST 环境上发布test
  • 如果特定功能在 TEST 上看起来都不错,那么我为相同功能创建第二个 PR,目标 = master on PROD env
  • PROD 上发布master

但是这种方法也有问题,我正在尝试用下面的场景来解释问题

  • 假设我已经为 Feature-1、Feature-2、Feature-3 创建了 PR(一个一个按顺序有一些间隙),目标 = test 分支并合并所有分支
  • 在执行上述操作时,我必须为每个 PR 从 test 拉取,否则我无法将其与 test 分支合并
  • 现在,假设我只想在 PROD 上发布 Feature-2,所以当我使用 target = master 为 Feature-2 分支创建 PR 时,它还附带 Feature-1 更改(因为我必须采取从test 拉取并且Feature-1 已经在test 上),这是不希望的。

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

提前感谢您抽出宝贵时间阅读这篇文章。

【问题讨论】:

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


    【解决方案1】:

    您是否考虑过使用配置表来激活/停用您的 PROD 环境中的功能?有点像流口水。

    您通过一个变量保护您的所有功能,例如,您在测试中激活此变量。当您的功能被签署后,您可以在 PROD 中激活它。

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

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

    【讨论】:

    • 很好的建议,感谢它,但如果可能的话,我希望将这些东西限制在 git 中
    【解决方案2】:

    您只需要使用 master 分支进行 ocrestrate,因此对于您的最后一个场景: 您有 3 个目标为 test 的 PR,并且所有 3 个分支都是从 master 创建的,您需要做的是在一个分支合并到 @ 后将 master 合并回测试和所有其他尚未合并的功能分支987654325@ 这样你就安全了(ofc,有时你会遇到合并冲突,但这是意料之中的)。

    【讨论】:

    • 嗨@BigGinDaHouse:感谢您的回答,但我无法理解您的方法,您能否解释一下它如何解决问题?
    • 这与您在第二种方法中所做的完全一样,但不是合并回功能分支test分支合并master分支
    • 但它不能解决我的问题。正确的?我无法在 PROD 上单独部署 Feature-2
    • 您可以,例如,如果 Feature-1 没有通过您在 TEST env 上的测试,则意味着它不会合并到 master 分支(这是您的 PROD)中。使用 master + Feature-* 分支,TEST 将永远是新鲜的,你需要关心这一点
    • 但在这种情况下,我一次只能在 TEST 上部署一个功能,这不应该是限制,对吧?
    猜你喜欢
    • 1970-01-01
    • 2020-03-28
    • 2010-11-05
    • 1970-01-01
    • 2014-07-23
    • 2014-03-31
    • 2018-05-14
    • 2018-12-06
    • 2013-09-30
    相关资源
    最近更新 更多