Git - 多环境开发

标签 git gitlab devops

我们是一家小型软件开发公司,最初只有 2 个人,但现在正在稳步发展。因此我们需要一个使用 Git 的开发策略,但我们遇到了一些问题。我们使用 Gitlab 作为我们的 Git 供应商。

情况:

  • 我们有 3 个环境都运行不同版本的代码:开发、QA 和生产
  • 每个环境都有自己的 Git 分支:开发、QA 和生产
  • 我们使用 Jenkins 为每个环境 pull 和构建正确的分支。目前这不是自动化的,但我们打算在未来实现自动化。
  • 开始新功能或修复时,我们通过从生产分支创建功能分支。我们编写代码并将我们的功能分支与开发、QA 和生产 merge 。

现在我们遇到的问题是,当我们使用 merge 请求将我们的功能分支 merge 到开发和 QA 时,我们还会看到在生产环境中所做的更改。但这些更改已经与开发和 QA merge ,因此这些更改无效。然而,这使得跟踪提交和进行代码审查变得极其困难。

我们是一支年轻的团队,这是我们第一次处理此类问题。可能我们必须完全改变我们的 Git 策略,因此非常欢迎就实现不同策略的多种可能性提供一些反馈。

最佳答案

这个问题有点宽泛,您可以在这里采用多种策略。

通常,每个环境有一个分支最终会使部署管道复杂化,因为 Git 分支不是为发布管理而设计的。 Git 旨在使用“标签”进行发布管理。

这是如何工作的:

  • 所有功能分支都 merge 到 master
  • 最新的母版由 QA 测试。 QA 完成测试后,标记提交并将其发布到生产环境。
  • 如果 master 中存在错误,则在 merge 新功能之前先修复错误。

一个警告是功能分支必须在 merge 之前由开发人员和审查人员进行彻底测试。我想说这是您期望开发人员和审核人员付出的最少努力。

关于Git - 多环境开发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64497699/

相关文章:

git - 将未跟踪文件添加到 GIT 中的未暂存区域

xcode - Git pull 后 Xcode 看不到项目中的文件

git - 使用Gitlab的API,如何在分支之间切换?

sql-server - 通过 Octopus 和 TeamCity 将数据库包部署到 SQL Server

docker-compose:如何立即查看文件更改(开发时)

amazon-web-services - 重用现有资源作为cloudformation中的参数

git:管理输入数据测试实践

git - STATUS_ACCESS_VIOLATION 与 git svn

ruby-on-rails - Gitlab CI : Is it possible to speed up 'bundle install' ?

GitLab 测试覆盖率可视化不适用于简单示例