【发布时间】:2018-04-24 14:34:37
【问题描述】:
我正在使用 Git (bitbucket) + Jenkins 流程为我的客户管理发布。我们只有两个环境 TEST 和 PROD。我遵循以下简单流程。 (我不确定它是否有用,但我使用.war 工件和Java 项目和Maven 作为构建工具)
注意:test 是分支,TEST 是整个帖子中的环境
- 从
master为每个功能创建本地分支 - 在本地进行更改并创建 PR,目标 =
master每个功能 - 如果代码更改看起来不错,请将 PR 与
master合并 - 在
TEST环境上发布master - 如果在
TEST上一切正常,我在PRODenv 上发布master
但是关于流的问题(如下所述),
- 如果有多个功能(比如说
Feature-1、Feature-2、Feature-3)在 TEST 上以最小的间隙一一移动,并且我只想在 PROD 上发布Feature-2,那么上面的流程不会帮帮我
为了解决上述问题,我尝试了这样的方法,
- 在 bitbucket 上从
master创建了一个名为test的分支 - 从
master为每个功能创建本地分支 - 在本地进行更改并创建 PR,目标 =
test每个功能 - 如果代码更改看起来不错,请将 PR 与
test合并 - 在
TEST环境上发布test - 如果特定功能在
TEST上看起来都不错,那么我为相同功能创建第二个 PR,目标 =masteronPRODenv - 在
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