- 开始之前
- 创建
engineering
群组 - 在
engineering
中创建子群组 - 为子群组添加用户
- 创建Excelsior 项目
- 添加基本的 CODEOWNERS 文件
- 配置审批规则
- 在分枝上强制 CODEOWNER 审批
- 创建发布分支
教程:为您的项目构建受保护的工作流程
当您的项目开始一个新项目时,他们需要一个工作流程,平衡效率和适当的审查。 在极狐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
群组的概述页面上,在右上角,选择 新建子群组。 - 对于 子组名称,输入
Managers
。 - 将 可见性级别 设置为 私有。
- 选择 创建子群组。
接下来,将子群组作为 engineering
群组的成员进行添加:
- 在左侧边栏,选择 搜索或前往,然后搜索
engineering
。 选择名为Engineering
的群组。 - 选择 管理 > 成员。
- 在右上角,选择 邀请群组。
- 对于 选择要邀请的群组,选择
Engineering / Managers
。 - 添加子群组时,选择角色 维护者。 这将配置子群组成员在访问
engineering
群组及其项目时继承的最高角色。 - 可选。 选择到期日期。
- 选择 邀请。
重复此过程以创建 backend
和 frontend
的子群组。 完成后,再次搜索 engineering
群组。 其概述页面应显示三个子群组,如下所示:
为子群组添加用户
在之前的步骤中,当您将子群组添加到父群组 (engineering
) 时,您将子群组成员限制为维护者角色。 这是他们可以继承的最高角色,用于 engineering
群组及其项目。 因此:
- 用户 1 被添加到
manager
子群组,以访客角色,因此在engineering
项目上收到访客角色。 - 用户 2 被添加到
manager
组,以所有者角色。 这个角色比您设置的最大角色 (维护者) 高,所以用户 2 收到维护者角色而不是所有者。
要将用户添加到 frontend
子群组:
- 在左侧边栏,选择 搜索或前往,然后搜索
frontend
。 选择Frontend
组。 - 选择 管理 > 成员。
- 选择 邀请成员。
- 填写字段。 默认情况下,选择 开发人员 角色,如果此用户审查其他人的工作,则将其增加到 维护者。
- 选择 邀请。
- 重复这些步骤,直到您将所有前端工程师添加到
frontend
子群组。
现在对 backend
和 managers
组重复此过程。 完成后,再次搜索 engineering
群组。 相同用户可以是多个子群组的成员。
创建Excelsior 项目
现在您的群组结构已经到位,您可以创建 excelsior
项目,供团队在此工作。 由于前端和后端工程师都参与其中,因此 excelsior
应该属于 engineering
而不是您刚刚创建的较小子群组之一。
要创建新的 excelsior
项目:
- 在左侧边栏,选择 搜索或前往,然后搜索
engineering
。 选择名为Engineering
的群组。 - 在
engineering
群组的概述页面上,在左上角,选择 创建新的 (),然后选择 在此群组中 > 新项目/存储库。 - 选择 创建空白项目。
- 输入项目详细信息:
- 在 项目名称 字段中,输入
Excelsior
。 项目 slug 应自动填充为excelsior
。 - 对于 可见性级别,选择 公共。
- 选择 使用 README 初始化存储库 以将初始文件添加到存储库。
- 在 项目名称 字段中,输入
- 选择 创建项目。
极狐GitLab 为您创建了 excelsior
项目,并将您重定向到其主页。 它应该看起来像这样:
您将会在下一步中使用此页面上的一个功能。
添加基本的 CODEOWNERS 文件
在您项目的根目录下添加 CODEOWNERS 文件,以将审查路由到正确的子群组。 此示例设置四个规则:
- 所有更改都应由
engineering
群组中的某人审查。 - 应由经理审查对 CODEOWNERS 文件本身的任何更改。
- 前端工程师应审查对前端文件的更改。
- 后端工程师应审查对后端文件的更改。
要在您的 excelsior
项目中添加 CODEOWNERS 文件:
- 在左侧边栏,选择 搜索或前往,然后搜索
Excelsior
。 选择名为Excelsior
的项目。 - 在分支名称旁边,选择加号图标 (),然后选择 新建文件:
- 对于 文件名,输入
CODEOWNERS
。 这将在您的项目根目录中创建一个名为CODEOWNERS
的文件。 -
将此示例粘贴到编辑区域,如果
@engineering/
与您的组结构不匹配,则进行更改:# All changes should be reviewed by someone in the engineering group * @engineering # A manager should review any changes to this file CODEOWNERS @engineering/managers # Frontend files should be reviewed by FE engineers [Frontend] @engineering/frontend *.scss *.js # Backend files should be reviewed by BE engineers [Backend] @engineering/backend *.rb
-
对于 提交消息,粘贴:
Adds a new CODEOWNERS file Creates a small CODEOWNERS file to: - Route backend and frontend changes to the right teams - Route CODEOWNERS file changes to managers - Request all changes be reviewed
- 选择 提交变更。
CODEONWERS 文件现在已放置在您的项目 main
分支中,并可供此项目中创建的所有未来分支使用。
配置审批规则
CODEOWNERS 文件描述了目录和文件类型的适当审查者。审批规则将合并请求定向到这些审查者。在这里,您将设置一个使用 CODEOWNERS 文件中的信息并为发布分支添加保护的审批规则:
- 在左侧边栏,选择 搜索或前往,然后搜索
Excelsior
。 选择名为Excelsior
的项目。 - 选择 设置 > 合并请求。
- 在 合并请求批准 部分中,滚动到 审批规则。
- 选择 添加审批规则。
- 创建一个名为
Enforce CODEOWNERS
的规则。 - 选择 所有受保护的分支。
- 要在极狐GitLab 专业版和极狐GitLab 旗舰版中使规则成为必需的,请将 所需批准 设置为
1
。 - 将
managers
组添加为审批者。 - 选择 添加审批规则。
- 滚动到 审批设置 并确保选中 防止在合并请求中编辑审批规则。
- 选择 保存更改。
当添加时, Enforce CODEOWNERS
规则如下所示:
在分枝上强制 CODEOWNER 审批
您已经为您的项目配置了多个保护,现在您准备将这些保护组合在一起,以保护您的项目的重要分支:
- 您的用户被分成逻辑群组和子尊组。
- 您的 CODEOWNERS 文件描述了文件类型和目录的领域专家。
- 您的审批规则鼓励 (在极狐GitLab Free 中) 或要求 (在极狐GitLab 专业版和极狐GitLab 旗舰版中) 领域专家审查更改。
您的 excelsior
项目使用 语义版本 作为发布分支名称,因此您知道发布分支遵循 1.x
和 1.x.x
的模式。 您希望将所有代码添加到这些分支,由领域专家审查,并由经理做出最终决定,以将哪些工作合并到发布分支中。
与其为每个分支创建保护,配置通配符分支规则以保护多个分支:
- 在左侧导航栏,选择 搜索或前往,然后搜索
Excelsior
。 选择名为Excelsior
的项目。 - 选择 设置 > 存储库。
- 展开 保护分支。
- 在 分支 下拉菜单中,输入
1.*
,然后选择 创建通配符1.*
。 - 要要求每个人提交合并请求,而不是直接推送提交:
- 将 允许合并 设置为 维护者。
- 将 允许推送和合并 设置为 无。
- 保留 允许强制推送 未选中。
- 在极狐GitLab 专业版和极狐GitLab 旗舰版中,要要求代码所有者审查他们工作的文件,请切换 要求代码所有者批准。
- 选择 保护。
- 在分支表中,找到标记为
Default
的规则。 (根据您使用的 GitLab 版本,此分支可能名为main
或master
。)将此分支的值设置为与1.*
规则使用的值匹配。
您的规则现在就位,即使还没有 1.*
分支:
创建发布分支
现在,所有的分支保护已就位,您已经准备好创建您的 1.0.0
发布分支:
- 在左侧边栏,选择 搜索或前往,然后搜索
Excelsior
。 选择名为Excelsior
的项目。 - 选择 代码 > 分支。
- 在右上角,选择 新建分支。 命名它
1.0.0
。 - 选择 创建分支。
现在可以在 UI 上看到分支保护了:
恭喜您!您的工程师可以在他们的分支中独立工作,所有提交到 1.0.0 发布分支的代码都将由领域专家审查。