gitlab代码审查codereview

gitlab-ce支持有限度的代码审核

准备工作

  1. 创建三个用户,分别是bob, bob1, bob2
  • bob是maintainer, bob1和bob2是developer
  • 只有bob有merge request权和直接提交代码到master的权限
  • bob1, bob2没有merge request权限也没有权限直接提交代码到master的权限
  • 这里设置一个成员为maintainer的原因是模拟team leader, 也可以都设置为developer)
  1. 配置好gitlab runner
  2. 每个人创建自己的分支:bob自己的分支是bob000, bob1自己的分支是bob111, bob2自己的分支是bob222
  3. 设置protected branch,这里设置的是master分支。也可以支持通配符。
    gitlab代码审查codereview_第1张图片
    image.png

配置和工作流程

  1. 每个用户都禁止直接提交代码到master分支(即使是有权限的用户),master是开发环境的持续集成分支
  2. 每个用户都有自己的分支,可以直接提交到自己的分支
  3. 不允许用户直接merge到master分支,允许发起merge request合并到master分支
  4. 发起的merge request只有在代码审核后才允许被merge
  5. merge的时候可以选择“直接merge”,也可以选择"只有pipeline成功才允许merge"

演示

maintainer发起merge request

  1. bob在bob000上提交代码,发起merge request(不选择Assignee)
  2. bob1和bob2审核代码
  3. bob合并审核后的代码到master分支
    gitlab代码审查codereview_第2张图片
    image.png

developer发起merge request

  1. bob1在bob111上提交代码,发起merge request
  2. bob和bob2审核代码
  3. bob合并审核后的代码到master分支
    gitlab代码审查codereview_第3张图片
    image.png

developer发起merge request,并在代码审核时修改代码

  1. bob1在bob111上提交代码
  2. bob2审核发现问题
  3. bob1在线修改
  4. bob2再次审核,通过
  5. bob审核,通过, merge


    gitlab代码审查codereview_第4张图片
    image.png

developer发起merge request,处理冲突

  1. bob在master分支修改了一行代码(把代码从import abcdef修改为import abcbob)
  2. bob1在bob111分支修改了同一行代码(把代码从import abcdef修改为import abbob111)
  3. bob1把bob111分支merge request到master分支(因为修改了同一行,所以会有冲突)
  4. 在merge request界面按照提示解决冲突,点击"use ours"意思是选择bob111分支的代码。解决完冲突就可以继续代码审核并merge啦。


    gitlab代码审查codereview_第5张图片
    image.png

后记

gitlab做代码审核的缺点

  1. gitlab-ce不支持多个approver(多个人也能审核,但界面没有任何提示,要自己主动去审核);gitlab-ee支持多个approver也能设置最少需要多少人代码审核才能merge
  2. 不支持多行备注,只能单行备注
  3. 如果需要,可以尝试gitlab+gerrit进行代码代码审核或者gitlab+reviewboard,这些都是免费的。如果是付费的,就不用担心这个问题啦。
  4. gitlab各角色权限 https://docs.gitlab.com/ee/user/permissions.html

你可能感兴趣的:(gitlab代码审查codereview)