温馨提示×

如何在CentOS上使用GitLab进行代码审查

小樊
44
2026-01-10 03:03:57
栏目: 智能运维

在 CentOS 上使用 GitLab 进行代码审查

一 环境准备与安装

  • 准备一台 CentOS 7/8 服务器,建议内存至少 4GB,并开放 HTTP/HTTPS(80/443)SSH(22) 端口。
  • 安装依赖与邮件服务:
    • sudo yum install -y curl policycoreutils-python openssh-server perl postfix
    • sudo systemctl enable --now sshd postfix
    • sudo firewall-cmd --permanent --add-service=http --add-service=https && sudo firewall-cmd --reload
  • 配置清华镜像源并安装 GitLab CE:
    • 新建 /etc/yum.repos.d/gitlab-ce.repo,内容:
      • [gitlab-ce]
      • name=Gitlab CE Repository
      • baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el$releasever/
      • gpgcheck=0
      • enabled=1
    • sudo yum makecache && sudo yum install -y gitlab-ce
  • 初始化与启动:
    • 编辑 /etc/gitlab/gitlab.rb,设置 external_url(如:http://192.168.1.202 或 https://your.domain)
    • 如需自定义 Nginx 端口:nginx[‘listen_port’] = 8899
    • 执行 sudo gitlab-ctl reconfigure && sudo gitlab-ctl status
    • 初始管理员密码:sudo cat /etc/gitlab/initial_root_password(生成后 24 小时自动删除,请尽快修改)

二 建立代码审查流程

  • 角色与权限:在项目或 Group 的 Members 中为成员分配角色(如 Guest/Reporter/Developer/Master/Owner),一般让资深成员担任 Master 负责合并,其他成员为 Developer 提交 MR 并接受评审。
  • 分支策略与保护:采用 Gitflow 或简化主干开发,在 Settings → Repository → Protected Branchesmaster/dev 等保护分支设置为仅 Maintainers/Masters 可合并,必要时将 Allowed to push 设为 No one,强制通过 Merge Request 变更。
  • 开发到合并的标准流程:
    • 开发:git checkout -b feature/xxx → 编码自测 → git push origin feature/xxx
    • 评审:在 GitLab 创建 Merge Request(MR),指定 Assignee/Reviewers,填写变更目的、测试步骤、关联 Issue,在 Changes 进行 Inline/Side-by-side 评审,提出评论与建议
    • 修订:作者根据评审意见 amend/rebase 后再次推送,MR 自动更新
    • 冲突:本地合并目标分支解决冲突后推送,继续评审
    • 合并与清理:评审通过并由维护者合并,删除已合并的 feature 分支

三 自动化质量门禁与通知

  • 服务端提交前校验(Server Hooks):在 /etc/gitlab/gitlab.rb 配置全局自定义钩子目录并放置脚本,示例:
    • gitaly[‘custom_hooks_dir’] = “/opt/gitlab/custom_hooks”
    • 创建目录与可执行脚本(如 pre-receive.d/pre-receive),脚本依据语言/工具(如 pylint/checkstyle/pmd)做静态检查,退出码 0 通过、非 0 拒绝推送。该方式对全仓库统一生效,适合强制代码风格与质量基线。
  • CI 自动化检查与门禁:安装并注册 GitLab Runner,在 .gitlab-ci.yml 定义 stages(如 build/test/code-quality),通过工具(如 SonarQube/PMD/Checkstyle)产出报告,结合 rules/only/needs 控制何时允许合并;必要时在 MR 流水线中设置 手动批准门禁 阶段,未达标则阻断合并。
  • 即时通知:在 Settings → Integrations 配置 Webhook,选择 Merge request events,对接 钉钉/企业微信/飞书 机器人,实现 MR 创建、评审、合并等事件的自动提醒,减少人工通知成本。

四 审查规范与最佳实践

  • 分支与提交规范:
    • 分支命名:如 feature/bugfix/hotfix/release/,与保护分支配套使用
    • Commit Message:采用 Angular 规范(Header/Body/Footer),示例:feat(user): add login validation;保证信息清晰、可回溯
  • MR 写作与沟通:
    • 描述包含 变更背景、影响范围、测试步骤、回滚方案,关联 Issue
    • 控制 MR 体量(建议单 MR 不超过约 200 行变更),便于快速评审
    • 评审语气友好、聚焦问题本质,复杂问题建议线下沟通后回到 MR 记录结论
  • 合规与自动化:
    • 使用 CODEOWNERS 指定目录/文件的必审角色或组,确保关键路径受控
    • 启用 流水线事件 与报告展示,结合安全/质量门禁提升合并门槛
    • 通过 Webhook 与团队沟通工具联动,形成闭环提醒与追踪

0