Git流程发送功能进行测试,只部署特定的功能到live
我们正在努力处理Git流流程,并将功能部署到测试和实时环境中:Git流程发送功能进行测试,只部署特定的功能到live,git,version-control,merge,git-flow,Git,Version Control,Merge,Git Flow,我们正在努力处理Git流流程,并将功能部署到测试和实时环境中: 我们希望所有准备好进行测试的功能都组合起来并部署到测试环境中 我们只想在实时环境中部署特定的功能 我们使用Git流的方式存在问题: 开发人员A按照正常的gitflow流程从“开发”创建一个特性,并在一个新特性中进行开发。 当准备好进行测试时,他将自己的特性合并到“开发”分支中,并将“开发”分支部署到测试环境中 开发人员B随后遵循相同的过程。这两个特性现在都合并到“开发”分支中,并且这两个更改都在测试环境中可见 客户机在测试环境中
- 我们希望所有准备好进行测试的功能都组合起来并部署到测试环境中
- 我们只想在实时环境中部署特定的功能
- 拉最新的“qa”分支
- 在“qa”部门时
- 将您的功能合并到“qa”中
- 删除该功能
- 撤消与qa的合并
- 确保您在主分支中
- 如果可能,测试项目和更改
- 将所需的所有文件复制到Live server
我通读了这些答案,但对我们没有多大帮助,或者我不理解并修复您的流程,以便您将git merges to master与客户测试解耦。如果他们希望能够确定功能是否应该是活动的(并要求它们不存在),那么他们要么需要参与讨论以合并开发,或者,您应该使用功能开关来部署功能,但可以将其关闭,以便在功能不存在时显示。4年后,我将尝试回答自己的问题。 尽管@AlBlue的另一个答案是100%正确的方法,但这并不总是可能的 下面是四个Gitflow选项,它们允许单独的测试环境,并且只允许合并到master中的特定功能:
- 如第一个问题所述,为集成测试创建一个单独的分支,并将每个特性合并到该分支中以获得批准。更多信息可以在这里找到 . 缺点是你会有很多分支,如果有其他选择的话,我不喜欢这个解决方案李>
- Cherry pick:经常合并到develop中,在develop上进行集成测试,一旦测试获得批准,Cherry pick应该进入发布/主版本的特性。(没有尝试过,但似乎是一项任务)
- 使用功能开关(如Alblue所述)
- “修复您的流程,以便将git merges与master与客户测试分离”——正如AlBlue在回答中所说的那样。这现在是我们的首选选项,因为我们现在已经对自动化部署进行了排序。对于每个功能,只需点击一个按钮即可创建一个单独的托管环境(Azure devops+Azure hosting),因此在将每个功能合并到develop之前,都需要对其进行测试李>
develope
。如果批准仍然悬而未决,那么这是完成批准所需的一个步骤。如果功能需要客户单独批准/撤销,为什么不直接从eachfeature
分支在QA服务器上单独发布和测试它们?在您的示例中,在完成特性之前,但一旦它准备好进行测试,Dev A将把特性A分支直接推送到服务器,Dev B将对特性B执行相同的操作。这可能意味着QA服务器的repo现在将包含这些特性分支。在服务器上,您可以设置多个虚拟主机端点,其中每个功能分支都将被客户端签出以供评估(例如,客户端在一个url中检查功能A;在另一个url中查看功能B,等等)。获批的将遵循正常的git流程
周期develope>release>master
。版本
甚至可以推送到集成测试主QA url,以便在最后一分钟测试所有一起工作的已批准功能。@Hugofereira,感谢您的回复!客户机的基础架构以及测试人员不允许多个实例进行测试。他们只有qa.site.com和live.site.com。他们想要