教程:为您的项目构建一个受保护工作流
- Tier: 基础版,专业版,旗舰版
- Offering: JihuLab.com,私有化部署
当你的团队开始一个新项目时,他们需要一种能够在效率和适当审查之间取得平衡的工作流。在极狐GitLab中,你可以创建用户群组,将这些群组与分支保护相结合,然后通过审批规则来实施这些保护。
本教程为名为 "Excelsior" 的示例项目的 1.x 和 1.x.x 发布分支设置保护,并为该项目创建一个最小的审批工作流:
- 创建 engineering 群组
- 在 engineering 中创建子群组
- 将用户添加到子群组
- 创建 Excelsior 项目
- 添加一个基本的 CODEOWNERS 文件
- 配置审批规则
- 在分支上实施 CODEOWNER 审批
- 创建发布分支
在你开始之前
- 你必须至少拥有维护者角色。
- 你需要管理者及其电子邮件地址的列表。
- 你需要后端和前端工程师及其电子邮件地址的列表。
- 你理解分支名称的语义化版本控制。
创建 engineering 群组
在设置 Excelsior 项目之前,你应该创建一个群组来拥有该项目。在这里,你将设置 Engineering 群组:
- 在左侧边栏顶部,选择 创建新() 和 新建群组。
- 选择 创建群组。
- 在 群组名称 中输入 Engineering。
- 在 群组URL 中输入 engineering。
- 将 可见性级别 设置为 私有。
- 个性化你的体验,以便极狐GitLab 为你显示最有帮助的信息:
- 对于 角色,选择 系统管理员。
- 对于 谁将使用这个群组? 选择 我的公司或团队。
- 对于 你将用这个群组做什么? 选择 我想存储我的代码。
- 跳过邀请成员到群组。你将在本教程的后续部分中添加用户。
- 选择 创建群组。
接下来,你将为该 engineering 群组添加子群组,以实现更细粒度的控制。
在 engineering 中创建子群组
engineering 群组是一个良好的开始,但 Excelsior 项目的后端工程师、前端工程师和管理者有不同的任务和不同的专业领域。
在这里,你将在 Engineering 群组中创建三个更细化的子群组,以根据他们的工作类型对用户进行分段:managers、frontend 和 backend。然后你将这些新群组添加为 engineering 群组的成员。
首先,创建新子群组:
-
在左侧边栏,选择 搜索或前往 并搜索 engineering。选择名为 Engineering 的群组:

-
在 engineering 群组的概览页面中,在右上角,选择 新建子群组。
-
在 子群组名称 中输入 Managers。
-
将 可见性级别 设置为 私有。
-
选择 创建子群组。
接下来,将子群组添加为 engineering 群组的成员:
- 在左侧边栏,选择 搜索或前往 并搜索 engineering。选择名为 Engineering 的群组。
- 选择 管理 > 成员。
- 在右上角,选择 邀请群组。
- 对于 选择要邀请的群组,选择 Engineering / Managers。
- 添加子群组时选择角色 维护者。这将配置子群组成员在访问 engineering 群组及其项目时可以继承的最高角色。
- 可选。选择一个过期日期。
- 选择 邀请。
重复此过程以为 backend 和 frontend 创建子群组。当你完成时,再次搜索 engineering 群组。其概览页面应显示三个子群组,如下所示:

将用户添加到子群组
在上一步中,当你将子群组添加到父群组 (engineering) 时,你限制了子群组成员的最高角色为维护者角色。这个角色是他们可以继承的 engineering 拥有的项目的最高角色。因此:
- 用户 1 被添加到 manager 子群组中,拥有访客角色,并在 engineering 项目中获得访客角色。
- 用户 2 被添加到 manager 群组中,拥有所有者角色。这个角色高于你设置的最高角色(维护者),所以用户 2 获得维护者角色而不是所有者。
要将用户添加到 frontend 子群组:
- 在左侧边栏,选择 搜索或前往 并搜索 frontend。选择 Frontend 群组。
- 选择 管理 > 成员。
- 选择 邀请成员。
- 填写字段。默认选择 开发者 角色,如果此用户审查其他人的工作,则将其提升为 维护者。
- 选择 邀请。
- 重复这些步骤,直到将所有前端工程师添加到 frontend 子群组中。
现在对 backend 和 managers 群组做同样的事情。同一用户可以是多个子群组的成员。
创建 Excelsior 项目
现在你的群组结构已经到位,为团队创建 excelsior 项目进行工作。因为涉及到前端和后端工程师,所以 excelsior 应该属于 engineering 而不是你刚创建的任何较小的子群组。
要创建新的 excelsior 项目:
- 在左侧边栏,选择 搜索或前往 并搜索 engineering。选择名为 Engineering 的群组。
- 在 engineering 群组的概览页面上,在左侧边栏顶部,选择 新建 () 和 在此群组中 > 新建项目/仓库。
- 选择 创建空白项目。
- 输入项目详细信息:
- 在 项目名称 字段中输入 Excelsior。项目短链接 应自动填充为 excelsior。
- 对于 可见性级别,选择 公开。
- 选择 使用README初始化仓库 以在存储库中添加一个初始文件。
- 选择 创建项目。
极狐GitLab 为你创建了 excelsior 项目,并将你重定向到其主页。它应该看起来像这样:

你将在下一步中使用此页面上的一个功能。
添加一个基本的 CODEOWNERS 文件
在项目的根目录中添加一个 CODEOWNERS 文件,以便将审查路由到正确的子群组。此示例设置了四个规则:
- 所有更改都应由 engineering 群组中的某人审查。
- 经理应审查对 CODEOWNERS 文件本身的任何更改。
- 前端工程师应审查对前端文件的更改。
- 后端工程师应审查对后端文件的更改。
要将 CODEOWNERS 文件添加到你的 excelsior 项目:
-
在左侧边栏,选择 Search or go to 并搜索 Excelsior。选择名为 Excelsior 的项目。
-
在分支名称旁边,选择加号图标 (
),然后选择 New file:
-
对于 Filename,输入 CODEOWNERS。这将在项目的根目录中创建一个名为 CODEOWNERS 的文件。
-
将此示例粘贴到编辑区域中,如果 @engineering/ 不匹配你的群组结构,请进行更改:
plaintext1# All changes should be reviewed by someone in the engineering group 2* @engineering 3 4# A manager should review any changes to this file 5CODEOWNERS @engineering/managers 6 7# Frontend files should be reviewed by FE engineers 8[Frontend] @engineering/frontend 9*.scss 10*.js 11 12# Backend files should be reviewed by BE engineers 13[Backend] @engineering/backend 14*.rb -
对于 提交信息,粘贴:
plaintext1Adds a new CODEOWNERS file 2 3Creates a small CODEOWNERS file to: 4- Route backend and frontend changes to the right teams 5- Route CODEOWNERS file changes to managers 6- Request all changes be reviewed -
选择 提交变更。
CODEOWNERS 文件现在已在项目的 main 分支中,并可用于在此项目中创建的所有未来分支。
配置审批规则
CODEOWNERS 文件描述了目录和文件类型的适当审查者。审批规则将合并请求引导至这些审查者。这里,你将设置一个使用新 CODEOWNERS 文件中的信息并为发布分支添加保护的审批规则:
- 在左侧边栏,选择 搜索或前往 并搜索 Excelsior。选择名为 Excelsior 的项目。
- 选择 设置 > 合并请求。
- 在 合并请求审批 部分,滚动到 审批规则。
- 选择 添加审批规则。
- 创建一个名为 强制 CODEOWNERS 的规则。
- 选择 所有受保护分支。
- 要在极狐GitLab 专业版和极狐GitLab 旗舰版中使规则成为必需,请将 所需审批数 设置为 1。
- 添加 managers 群组作为审查者。
- 选择 添加审批规则。
- 滚动到 审批设置 并确保选择了 防止在合并请求中编辑审批规则。
- 选择 保存更改。
添加后,Enforce CODEOWNERS 规则如下所示:

在分支上实施 CODEOWNER 审批
你已经为项目配置了几项保护措施,现在你准备将这些保护措施结合起来以保护项目的重要分支:
- 你的用户已被分类到逻辑的群组和子群组中。
- 你的 CODEOWNERS 文件描述了文件类型和目录的主题专家。
- 你的审批规则在极狐GitLab 基础版中鼓励(或在极狐GitLab 专业版和极狐GitLab 旗舰版中要求)主题专家审查更改。
你的 excelsior 项目使用语义化版本控制来命名发布分支,因此你知道发布分支遵循 1.x 和 1.x.x 的模式。你希望所有添加到这些分支的代码都由主题专家审查,并由经理最终决定将哪些工作合并到发布分支中。
而不是为单个分支创建保护,配置通配符分支规则以保护多个分支:
- 在左侧边栏,选择 搜索或前往 并搜索 Excelsior。选择名为 Excelsior 的项目。
- 选择 设置 > 仓库。
- 展开 受保护分支。
- 从 分支 下拉列表中,输入 1.*,然后选择 创建通配符 1.*。
- 要求每个人提交合并请求,而不是直接推送提交:
- 将 允许合并 设置为 维护者。
- 将 允许推送和合并 设置为 无人。
- 保持 允许强制推送 禁用。
- 在极狐GitLab 专业版和极狐GitLab 旗舰版中,要要求代码所有者审查他们所处理文件的更改,请切换 需要代码所有者批准。
- 选择 保护。
- 在分支表中,找到标记为 默认 的规则。(根据你使用的极狐GitLab 版本,这个分支可能命名为 main 或 master。)将该分支的值设置为与你为 1.* 规则使用的设置相匹配。
你的规则现在已就位,即使尚不存在 1.* 分支:

创建发布分支
现在所有分支保护措施已就位,你准备创建你的 1.0.0 发布分支:
- 在左侧边栏,选择 搜索或前往 并搜索 Excelsior。选择名为 Excelsior 的项目。
- 选择 代码 > 分支。
- 在右上角,选择 新建分支。命名为 1.0.0。
- 选择 创建分支。
现在 UI 中可见分支保护:
-
在左侧边栏,选择 代码 > 分支。在分支列表中,分支 1.0.0 应显示为已受保护:

-
在左侧边栏,选择 设置 > 仓库,然后展开 分支规则 以查看所有受保护分支的详细信息:

恭喜!你的工程师可以在他们的分支中独立工作,并且所有提交给 1.0.0 发布分支的代码都将由主题专家审查。