gitlab不同的角色权限划分

1. Guest(访客)

  • 项目级别权限
    • 查看项目、代码、议题(Issues)和合并请求(Merge Requests)。
    • 发表评论(但不能直接修改代码或合并请求)。
    • 无法访问仓库的代码修改或 CI/CD 相关功能。
  • 群组级别权限
    • 查看群组和子群组的基本信息。

适用场景:仅需查看项目进展的外部协作者或观察员。


2. Reporter(报告者)

  • 包含 Guest 的所有权限,并额外支持:
    • 查看项目代码、仓库、Wiki 和 CI/CD 流水线。
    • 创建和管理议题(Issues)、标记(Labels)。
    • 查看项目统计和分析(如代码片段、里程碑)。
    • 无法推送代码或操作合并请求(MR)。

适用场景:测试人员、产品经理等需要跟踪问题但无需修改代码的角色。


3. Developer(开发者)

  • 包含 Reporter 的所有权限,并额外支持:
    • 代码管理:创建分支、推送代码、创建合并请求(MR)。
    • CI/CD:触发流水线、管理流水线变量(需配置)。
    • 项目管理:创建/编辑 Wiki、管理议题看板。
    • 数据库:访问项目级别的数据库(如 GitLab 的 Database功能)。
    • 合并请求:批准 MR(需项目设置允许)。

注意:默认无法推送到受保护分支(需 Maintainer 授权)。

适用场景:开发团队成员,需要提交代码和协作。


4. Maintainer(维护者)

  • 包含 Developer 的所有权限,并额外支持:
    • 仓库管理:推送/删除分支、管理受保护分支和标签。
    • CI/CD:编辑流水线配置(.gitlab-ci.yml)、管理环境变量。
    • 项目设置:修改项目名称/描述、配置 Webhooks、集成服务。
    • 合并请求:合并 MR(即使未批准)。
    • 部署:管理环境(如生产环境)、执行手动部署。
    • 删除项目(需确认)。

适用场景:技术负责人或 DevOps 工程师,负责项目维护和发布。


5. Owner(所有者)

  • 仅存在于群组级别(项目级别的最高角色是 Maintainer)。
  • 包含 Maintainer 的所有权限,并额外支持:
    • 群组管理:删除群组、转移项目、管理群组成员权限。
    • 财务/订阅:管理群组的许可证(如升级付费计划)。
    • 安全:配置 SAML/SSO、LDAP 集成(企业版)。
    • 子群组和项目:可对所有子资源进行完全控制。

适用场景:群组管理员或企业架构师,负责整体资源管理。


群组与项目说明

  • 项目与群组权限:角色在项目内和群组内是独立的。例如,一个用户在群组是 Developer,但在某个子项目可以是 Maintainer。
  • 自定义权限:企业版支持更细粒度的权限控制(如“仅允许 Developer 访问特定环境”)。
  • 受保护分支:即使 Developer 角色也可能无法推送代码到主分支,需 Maintainer 显式保护分支并授权。

权限对比表(关键操作)

操作 Guest Reporter Developer Maintainer Owner (群组)
查看代码
创建议题
推送代码
合并 MR ✗ (需授权)
删除项目
管理群组成员

根据团队协作需求合理分配角色,可参考 GitLab 官方文档:权限文档