git - CI/CD 的 Git 分支和环境开发流程
问题描述
我有一个“开发过程”的问题,希望能得到一些经验和意见。
我正在与一家拥有典型dev
和env 的公司合作。有十几个不同的 git 存储库和一个与 CI/CD 的每个环境相关的分支。staging
production
每天有大约 15 名开发人员在跨分支处理任务。
dev
env 用于 QA,staging
是随时可部署的生产环境。这都是正常的业务,环境没有问题。
这是棘手的地方,将代码与 git 从一个环境合并到另一个环境的方向和过程:
dev
永远不会直接合并到staging
中。当前的过程是使用cherry-pick从dev
->获取代码,staging
这样在环境中的QA步骤中就没有来自其他开发人员的任何东西dev
被合并到staging
不应该被合并的地方。
这是一个非常混乱/危险的过程,IMO,因为如果你 [开发人员] 正在挑选你的提交,dev
那么staging
你可能会错过提交,你可以想象由此产生的头痛!
有没有更好的流程可以用于我们的环境建模?
解决方案
我知道这是基于意见的,可能不是每个人/情况的正确答案。(感谢@adam 提到 git-flow。)
环境:
- 生产
- 分期
- 开发者
Staging旨在成为一个稳定的发布/环境,可以在任何时间点部署到 master。Dev是staging之前的 QA 和开发环境。
Git 分支:
- 大师(生产)
- 分期
- 开发者
- 功能/[名称] 错误修复/[名称] 等(遵循 git-flow 模式)
开发过程/流程:为开发人员分配了一张票。开发人员从分支中签出一个新的功能/错误修复staging
分支。开发人员在 feature/bugfix 分支和 MR/PRdev
分支上进行工作,以便可以在开发环境中进行 QA。feature/bugfix
票证通过 QA 后,开发人员使用->打开 MR/PR staging
。feature/bugfix
合并后staging
可以丢弃。
需要定期更新分支机构的内务管理 - 最重要的是,dev
需要staging
经常更新以保持 QA 环境的健康和最新。
推荐阅读
- android - E/flutter(16289):[错误:flutter/lib/ui/ui_dart_state.cc(177)]未处理的异常:SocketException:套接字已关闭
- google-compute-engine - 为什么带有 COS 映像的 GCE VM 速度更快?
- swift - UICollectionViewDiffableDataSource cellProvider 比预期更频繁地调用
- edge-detection - Canny边缘检测器的计算复杂度
- git - git push 登录失败
- wpf - 如何在 F# 中使用 VisualTreeHelper 在 WPF 中查找父视觉对象?
- android - 如何在 bitbucket 管道中实现 android espresso 测试?
- ios - SwiftUI - 如果动画,视图会消失
- python - 当我想在 pycharm 中安装 cv2 时有什么问题?
- tensorflow - 将函数从 Python 转换为 TensorFlow