Help us learn about your current experience with the documentation. Take the survey.

Code Owners 故障排除

  • Tier: 高级版, 终极版
  • Offering: GitLab.com, GitLab 自托管版, GitLab 专用版

使用 Code Owners 时,您可能会遇到以下问题。

有关 Code Owners 功能如何处理错误的更多信息,请参阅 错误处理

验证您的 CODEOWNERS 文件

此功能的可用性由功能标志控制。 有关更多信息,请参阅历史记录。

查看 CODEOWNERS 文件 时,GitLab 会运行验证以帮助您发现语法和权限问题。如果没有发现语法问题,GitLab:

  • 不会对该文件运行更多验证器。
  • 对文件中找到的前 200 个唯一用户和组引用运行更多权限验证。

工作原理:

  1. 查找所有可以访问项目的引用。如果添加了用户或组引用,但没有项目访问权限,则显示错误。
  2. 对于每个有效的用户引用,检查用户是否有权限批准项目中的合并请求。如果用户没有该权限,则显示错误。
  3. 对于每个有效的组引用,检查最大角色值是否为 Developer 或更高。对于每个值低于 Developer 的组引用,显示错误。
  4. 对于每个有效的组引用,检查该组是否至少包含一个有权批准合并请求的用户。对于任何包含零个有权批准合并请求用户的组引用,显示错误。

批准不显示

在创建合并请求之前,CODEOWNERS 文件 必须存在于目标分支中。

Code Owner 批准规则仅在创建合并请求时更新。 如果您更新了 CODEOWNERS 文件,请关闭合并请求并创建一个新的。

批准显示为可选

如果满足以下任一条件,Code Owner 批准规则将是可选的:

用户未显示为可能的批准者

如果满足以下任一条件,用户可能不会显示在 Code Owner 合并请求批准规则中作为可能的批准者:

  • 某条规则阻止特定用户批准合并请求。 检查项目的 合并请求批准 设置。
  • Code Owner 组的可见性为私有,且当前用户不是 Code Owner 组的成员。
  • 特定用户名拼写错误或在 CODEOWNERS 文件中 格式错误
  • 当前用户是没有权限访问内部 Code Owner 组的外部用户。

查看目录 Code Owners 时用户或组不可见

查看目录时,Code Owners 可能不会根据您配置的规则显示预期的用户或组,但会正确显示目录下文件的 Code Owners。

例如:

* @dev-team
docs/ @tech-writer-team

docs/ 目录下的所有文件都显示 @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 组成员资格锁定。