Code Owners 故障排除
- Tier: 高级版, 终极版
- Offering: GitLab.com, GitLab 自托管版, GitLab 专用版
使用 Code Owners 时,您可能会遇到以下问题。
有关 Code Owners 功能如何处理错误的更多信息,请参阅 错误处理。
验证您的 CODEOWNERS 文件
此功能的可用性由功能标志控制。 有关更多信息,请参阅历史记录。
查看 CODEOWNERS 文件 时,GitLab 会运行验证以帮助您发现语法和权限问题。如果没有发现语法问题,GitLab:
- 不会对该文件运行更多验证器。
- 对文件中找到的前 200 个唯一用户和组引用运行更多权限验证。
工作原理:
- 查找所有可以访问项目的引用。如果添加了用户或组引用,但没有项目访问权限,则显示错误。
- 对于每个有效的用户引用,检查用户是否有权限批准项目中的合并请求。如果用户没有该权限,则显示错误。
- 对于每个有效的组引用,检查最大角色值是否为 Developer 或更高。对于每个值低于 Developer 的组引用,显示错误。
- 对于每个有效的组引用,检查该组是否至少包含一个有权批准合并请求的用户。对于任何包含零个有权批准合并请求用户的组引用,显示错误。
批准不显示
在创建合并请求之前,CODEOWNERS 文件 必须存在于目标分支中。
Code Owner 批准规则仅在创建合并请求时更新。
如果您更新了 CODEOWNERS 文件,请关闭合并请求并创建一个新的。
批准显示为可选
如果满足以下任一条件,Code Owner 批准规则将是可选的:
- 用户或组不是项目的成员。 Code Owners 不能继承父组的成员。
- 用户或组 格式错误或无法访问。
- 未设置 受保护分支上的 Code Owner 批准。
- 该部分 被标记为可选。
- 由于与其他 合并请求批准设置 冲突,没有符合条件的代码所有者可以批准合并请求。
用户未显示为可能的批准者
如果满足以下任一条件,用户可能不会显示在 Code Owner 合并请求批准规则中作为可能的批准者:
- 某条规则阻止特定用户批准合并请求。 检查项目的 合并请求批准 设置。
- Code Owner 组的可见性为私有,且当前用户不是 Code Owner 组的成员。
- 特定用户名拼写错误或在
CODEOWNERS文件中 格式错误。 - 当前用户是没有权限访问内部 Code Owner 组的外部用户。
查看目录 Code Owners 时用户或组不可见
查看目录时,Code Owners 可能不会根据您配置的规则显示预期的用户或组,但会正确显示目录下文件的 Code Owners。
例如:
* @dev-team
docs/ @tech-writer-teamdocs/ 目录下的所有文件都显示 @tech-writer-team 作为 Code Owners,但目录本身显示 @dev-team。
查看目录时会出现此行为,因为 语法规则 适用于目录下的所有文件,不包括目录本身。
要解决此问题,请更新 CODEOWNERS 文件以专门包含目录以及目录下的所有文件。例如:
* @dev-team
docs @tech-writer-team
docs/ @tech-writer-team批准规则无效
您可能会收到以下错误:
批准规则无效。
GitLab 已自动批准此规则以解除合并请求的阻塞。当批准规则使用的 Code Owner 不是项目的直接成员时,会出现此问题。
解决方法是检查组或用户是否已被邀请到项目中。
用户或组名称更改时 CODEOWNERS 未更新
当用户或组更改其名称时,CODEOWNERS 不会自动更新为新名称。
要输入新名称,您必须编辑该文件。
使用 SAML SSO 的组织可以 设置用户名 以 防止用户更改其用户名。
与全局 SAML 组成员资格锁定不兼容
Code Owners 功能要求项目具有直接组成员资格。 当启用 全局 SAML 组成员资格锁定 时, 它会阻止组作为直接成员被邀请到项目中。 这会在两个功能之间产生不兼容性。
如果您启用了全局 SAML 组成员资格锁定,则不能使用组或子组作为 Code Owners。 在这种情况下,您有以下选项:
- 使用单个用户而不是组作为 Code Owners。
- 如果使用基于组的 Code Owners 优先级更高,请禁用全局 SAML 组成员资格锁定。