首页 > 解决方案 > 设计 GitLab 工作流程

问题描述

我们正在评估 GitLab 的迁移,我们目前正在使用带有 Gerrit 代码审查工具的 git(本地)。在评估 GitLab 期间,IAM 认为设计我们团队采用的工作流程具有挑战性。

以下是我的工作流程用例:

  1. 从 master 创建一个分支
  2. git commit 并推送到分支
  3. 同行开发人员对提交的代码进行审查
  4. 如有审核意见,请修改并推送
  5. 第 3 步(由同行开发人员审核)
  6. 在分支上运行测试
  7. 按 Lead (Maintainer) 合并提交到分支
  8. 使用分支代码部署我们的开发环境
  9. 维护者将分支合并到主控

需要建议什么是理想的方法,我遇到了挑战,比如我无法修改任何更改,GitLab 支持修改吗?

标签: gitlabgitlab-ci

解决方案


你描述的看起来不错。我在应该适应 gitlab 的步骤中添加了注释。

您的工作流程可能如下所示:

  1. ...
  2. ...
  3. 当功能准备好进行审查时,只需创建Merge Request将开发分支合并到主分支(或任何其他分支)。请注意,默认情况下,开发分支在 Gitlab 上不受保护,但您可以在项目设置中更改它。
  4. ...
  5. ...
  6. 测试可以自动化,例如使用.gitlab-ci.yml和 gitlab 运行器。如果你有自动化的单元/功能/回归测试,gitlab 会在每次提交后运行它们。然后在创建合并请求审查员和功能开发人员之后,除了在开发分支上做了哪些更改之外,如果所有测试都通过了,他们就会清楚地看到。合并请求可以被 Gitlab 阻止(在项目配置中进行适当的设置),并要求所有测试作业都通过。所以我建议测试不仅仅在这一步运行,而是在任何自动提交之后运行。

  7. 不需要这一步。当开发人员创建分支并对其进行处理时。我知道 gerrit 创建 refs/for/yourDevelopmentBranch 所以只有在补丁集被批准后,才会创建分支。Gitlab 和 Gerrit 之间存在差异,因此您绝对应该阅读它们以了解两者的不同行为,例如这里

  8. 您还可以在 .gitlab-ci.yml 中将其定义为带有manual触发器的作业,或者在每次提交分支后将更改部署到开发环境。

  9. ...


推荐阅读