教程:为您的项目构建受保护的工作流程
所有级别

当您的项目开始一个新项目时,他们需要一个工作流程,平衡效率和适当的审查。 在极狐GitLab中,您可以创建用户组,将这些组与分支保护相结合,然后使用批准规则强制执行这些保护。

此教程为示例项目“Excelsior”的1.x1.x.x发布分支设置了保护,并为该项目创建了一个基本的批准工作流程:

  1. 创建 engineering 群组
  2. engineering 中创建子组
  3. 将用户添加到子群组
  4. 创建 Excelsior 项目
  5. 添加基本 CODEOWNERS 文件
  6. 配置批准规则
  7. 在分支上强制执行 CODEOWNER 批准
  8. 创建发布分支

开始之前#

  • 您必须具有维护者或所有者角色。
  • 您需要一个经理列表及其电子邮件地址。
  • 您需要后端和前端工程师的列表及其电子邮件地址。
  • 您了解分支名称的语义版本控制。

创建 engineering 群组#

在设置 Excelsior 项目前,您应该创建一个拥有项目的群组。 在这里,您将设置 Engineering 群组:

  1. 在左侧边栏,顶部,选择 创建新的 ({plus}),然后选择 新群组
  2. 选择 创建群组
  3. 对于 群组名称,输入 Engineering
  4. 对于 群组 URL,输入 engineering
  5. 可见性级别 设置为 私有
  6. 个性化您的体验,以便 GitLab 向您显示最有帮助的信息:
    • 对于 角色,选择 系统管理员
    • 对于 谁将使用此群组? 选择 我的公司或团队
    • 对于 此群组将被用作? 选择 我想存储我的代码
  7. 跳过邀请成员加入群组。 您将在本教程的稍后部分添加用户。
  8. 选择 创建群组

接下来,您将在 engineering 群组中添加子群组,以实现更精细的控制。

engineering 中创建子群组#

engineering 群组是一个很好的开始,但 Excelsior 项目的后端工程师、前端工程师和经理有不同的任务和不同的专业领域。

在这儿,您将在 engineering 群组中添加三个更精细的子群组,以按工作类型细分用户:managersfrontendbackend。 然后,您将这些新组添加为 engineering 群组的成员。

首先,创建新的子群组:

  1. 在左侧边栏,顶部,选择 创建新的 ({plus}),然后选择 新群组

    The engineering group in search results

  2. engineering 群组的概述页面上,在右上角,选择 新建子群组

  3. 对于 子组名称,输入 Managers

  4. 可见性级别 设置为 私有

  5. 选择 创建子群组

接下来,将子群组作为 engineering 群组的成员进行添加:

  1. 在左侧边栏,选择 搜索或前往,然后搜索 engineering。 选择名为 Engineering 的群组。
  2. 选择 管理 > 成员
  3. 在右上角,选择 邀请群组
  4. 对于 选择要邀请的群组,选择 Engineering / Managers
  5. 添加子群组时,选择角色 维护者。 这将配置子群组成员在访问 engineering 群组及其项目时继承的最高角色。
  6. 可选。 选择到期日期。
  7. 选择 邀请

重复此过程以创建 backendfrontend 的子群组。 完成后,再次搜索 engineering 群组。 其概述页面应显示三个子群组,如下所示:

The engineering group has three subgroups

为子群组添加用户#

在之前的步骤中,当您将子群组添加到父群组 (engineering) 时,您将子群组成员限制为维护者角色。 这是他们可以继承的最高角色,用于 engineering 群组及其项目。 因此:

  • 用户 1 被添加到 manager 子群组,以访客角色,因此在 engineering 项目上收到访客角色。
  • 用户 2 被添加到 manager 组,以所有者角色。 这个角色比您设置的最大角色 (维护者) 高,所以用户 2 收到维护者角色而不是所有者。

要将用户添加到 frontend 子群组:

  1. 在左侧边栏,选择 搜索或前往,然后搜索 frontend。 选择 Frontend 组。
  2. 选择 管理 > 成员
  3. 选择 邀请成员
  4. 填写字段。 默认情况下,选择 开发人员 角色,如果此用户审查其他人的工作,则将其增加到 维护者
  5. 选择 邀请
  6. 重复这些步骤,直到您将所有前端工程师添加到 frontend 子群组。

现在对 backendmanagers 组重复此过程。 完成后,再次搜索 engineering 群组。 相同用户可以是多个子群组的成员。

创建Excelsior 项目#

现在您的群组结构已经到位,您可以创建 excelsior 项目,供团队在此工作。 由于前端和后端工程师都参与其中,因此 excelsior 应该属于 engineering 而不是您刚刚创建的较小子群组之一。

要创建新的 excelsior 项目:

  1. 在左侧边栏,选择 搜索或前往,然后搜索 engineering。 选择名为 Engineering 的群组。
  2. engineering 群组的概述页面上,在左上角,选择 创建新的 ({plus}),然后选择 在此群组中 > 新项目/存储库
  3. 选择 创建空白项目
  4. 输入项目详细信息:
    • 项目名称 字段中,输入 Excelsior项目 slug 应自动填充为 excelsior
    • 对于 可见性级别,选择 公共
    • 选择 使用 README 初始化存储库 以将初始文件添加到存储库。
  5. 选择 创建项目

极狐GitLab 为您创建了 excelsior 项目,并将您重定向到其主页。 它应该看起来像这样:

Your new, almost-empty excelsior project

您将会在下一步中使用此页面上的一个功能。

添加基本的 CODEOWNERS 文件#

在您项目的根目录下添加 CODEOWNERS 文件,以将审查路由到正确的子群组。 此示例设置四个规则:

  • 所有更改都应由 engineering 群组中的某人审查。
  • 应由经理审查对 CODEOWNERS 文件本身的任何更改。
  • 前端工程师应审查对前端文件的更改。
  • 后端工程师应审查对后端文件的更改。

NOTE: 极狐GitLab Free 支持仅可选审查。要使审查成为必需,您需要 GitLab 专业版或旗舰版。

要在您的 excelsior 项目中添加 CODEOWNERS 文件:

  1. 在左侧边栏,选择 搜索或前往,然后搜索 Excelsior。 选择名为 Excelsior 的项目。

  2. 在分支名称旁边,选择加号图标 ({plus}),然后选择 新建文件在项目中创建新文件

  3. 对于 文件名,输入 CODEOWNERS。 这将在您的项目根目录中创建一个名为 CODEOWNERS 的文件。

  4. 将此示例粘贴到编辑区域,如果 @engineering/ 与您的组结构不匹配,则进行更改:

    plaintext
    1# 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
  5. 对于 提交消息,粘贴:

    plaintext
    1Adds 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
  6. 选择 提交变更

CODEONWERS 文件现在已放置在您的项目 main 分支中,并可供此项目中创建的所有未来分支使用。

配置审批规则#

CODEOWNERS 文件描述了目录和文件类型的适当审查者。审批规则将合并请求定向到这些审查者。在这里,您将设置一个使用 CODEOWNERS 文件中的信息并为发布分支添加保护的审批规则:

  1. 在左侧边栏,选择 搜索或前往,然后搜索 Excelsior。 选择名为 Excelsior 的项目。
  2. 选择 设置 > 合并请求
  3. 合并请求批准 部分中,滚动到 审批规则
  4. 选择 添加审批规则
  5. 创建一个名为 Enforce CODEOWNERS 的规则。
  6. 选择 所有受保护的分支
  7. 要在极狐GitLab 专业版和极狐GitLab 旗舰版中使规则成为必需的,请将 所需批准 设置为 1
  8. managers 组添加为审批者。
  9. 选择 添加审批规则
  10. 滚动到 审批设置 并确保选中 防止在合并请求中编辑审批规则
  11. 选择 保存更改

当添加时, Enforce CODEOWNERS 规则如下所示:

New approval rule in place

在分枝上强制 CODEOWNER 审批#

您已经为您的项目配置了多个保护,现在您准备将这些保护组合在一起,以保护您的项目的重要分支:

  • 您的用户被分成逻辑群组和子尊组。
  • 您的 CODEOWNERS 文件描述了文件类型和目录的领域专家。
  • 您的审批规则鼓励 (在极狐GitLab Free 中) 或要求 (在极狐GitLab 专业版和极狐GitLab 旗舰版中) 领域专家审查更改。

您的 excelsior 项目使用 语义版本 作为发布分支名称,因此您知道发布分支遵循 1.x1.x.x 的模式。 您希望将所有代码添加到这些分支,由领域专家审查,并由经理做出最终决定,以将哪些工作合并到发布分支中。

与其为每个分支创建保护,配置通配符分支规则以保护多个分支:

  1. 在左侧导航栏,选择 搜索或前往,然后搜索 Excelsior。 选择名为 Excelsior 的项目。
  2. 选择 设置 > 存储库
  3. 展开 保护分支
  4. 分支 下拉菜单中,输入 1.*,然后选择 创建通配符 1.*
  5. 要要求每个人提交合并请求,而不是直接推送提交:
    1. 允许合并 设置为 维护者
    2. 允许推送和合并 设置为
    3. 保留 允许强制推送 未选中。
  6. 在极狐GitLab 专业版和极狐GitLab 旗舰版中,要要求代码所有者审查他们工作的文件,请切换 要求代码所有者批准
  7. 选择 保护
  8. 在分支表中,找到标记为 Default 的规则。 (根据您使用的 GitLab 版本,此分支可能名为 mainmaster。)将此分支的值设置为与 1.* 规则使用的值匹配。

您的规则现在就位,即使还没有 1.* 分支:

main and 1.x are now protected

创建发布分支#

现在,所有的分支保护已就位,您已经准备好创建您的 1.0.0 发布分支:

  1. 在左侧边栏,选择 搜索或前往,然后搜索 Excelsior。 选择名为 Excelsior 的项目。
  2. 选择 代码 > 分支
  3. 在右上角,选择 新建分支。 命名它 1.0.0
  4. 选择 创建分支

现在可以在 UI 上看到分支保护了:

  • 在左侧边栏,选择 代码 > 分支。 在分支列表中,分支 1.0.0 应显示为受保护:

    List of branches, showing 1.0.0 is protected

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

    List of protected branches and their protections

恭喜您!您的工程师可以在他们的分支中独立工作,所有提交到 1.0.0 发布分支的代码都将由领域专家审查。