正式なドキュメントは英語版であり、この日本語訳はAI支援翻訳により作成された参考用のものです。日本語訳の一部の内容は人間によるレビューがまだ行われていないため、翻訳のタイミングにより英語版との間に差異が生じることがあります。最新かつ正確な情報については、英語版をご参照ください。

コードオーナーのトラブルシューティング

  • プラン: Premium、Ultimate
  • 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated

コードオーナーを使用する場合、以下の問題が発生することがあります。

コードオーナー機能がエラーを処理する方法について詳しくは、エラー処理を参照してください。

CODEOWNERSファイルを検証します

この機能の利用可否は、機能フラグによって制御されます。詳細については、履歴を参照してください。

CODEOWNERSファイルを表示すると、GitLabは構文と権限のイシューを見つけるのに役立つように検証を実行します。構文のイシューが見つからない場合、GitLabは以下を行います:

  • ファイルに対して検証をさらに実行しません。
  • ファイルで見つかった最初の200件の一意のユーザーとグループ参照に対して、権限の検証をさらに実行します。

仕組みは次のとおりです:

  1. プロジェクトにアクセスできるすべての参照を検索します。ユーザーまたはグループの参照が追加されても、プロジェクトへのアクセス権がない場合は、エラーを表示します。
  2. 有効なユーザーの参照ごとに、ユーザーがプロジェクトでマージリクエストを承認する権限を持っていることを確認します。ユーザーがその権限を持っていない場合は、エラーを表示します。
  3. 有効なグループの参照ごとに、最大のロールの値がデベロッパー以上であることを確認します。デベロッパーよりも低い値を持つグループの参照ごとに、エラーを表示します。
  4. 有効なグループの参照ごとに、グループにマージリクエストを承認する権限を持つユーザーが少なくとも1人含まれていることを確認します。マージリクエストを承認する権限を持つユーザーが1人も含まれていないグループの参照については、エラーを表示します。

承認が表示されない

CODEOWNERSファイルは、マージリクエストが作成される前に、ターゲットブランチに存在している必要があります。

コードオーナーの承認ルールは、マージリクエストが作成されたときにのみ更新されます。CODEOWNERSファイルを更新する場合は、マージリクエストを閉じて、新しいマージリクエストを作成してください。

承認がオプションとして表示される

次のいずれかの条件に該当する場合、コードオーナーの承認ルールはオプションです:

ユーザーが承認者の候補として表示されない

次のいずれかの条件に該当する場合、ユーザーがコードオーナーのマージリクエストの承認ルールの承認者として表示されない場合があります:

  • ルールが、特定のユーザーがマージリクエストを承認することを禁止しています。プロジェクトのマージリクエストの承認設定を確認してください。
  • コードオーナーグループの表示レベルが非公開であり、現在のユーザーがコードオーナーグループのメンバーではありません。
  • 特定のユーザー名のスペルが間違っているか、CODEOWNERSファイルで不正な形式です
  • 現在のユーザーは、内部のコードオーナーグループへの権限を持たない外部ユーザーです。

ディレクトリのコードオーナーを表示すると、ユーザーまたはグループが表示されない

コードオーナーは、ディレクトリを表示する際に、構成されたルールに基づいて目的のユーザーまたはグループを表示しない場合がありますが、ディレクトリの下にあるファイルのコードオーナーは正しく表示します。

例:

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

docs/ディレクトリの下にあるすべてのファイルは、@tech-writer-teamをコードオーナーとして表示しますが、ディレクトリ自体は@dev-teamを表示します。

この動作は、ディレクトリを表示するときに、構文ルールがディレクトリの下にあるすべてのファイルに適用され、ディレクトリ自体は含まれないために発生します。これを解決するには、CODEOWNERSファイルを更新して、ディレクトリの下にあるすべてのファイルとともに、ディレクトリを具体的に含めます。例:

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

承認ルールが無効です

次のようなエラーが表示されることがあります:

Approval rule is invalid.
GitLab has approved this rule automatically to unblock the merge request.

このイシューは、承認ルールがプロジェクトの直接のメンバーではないコードオーナーを使用する場合に発生します。

回避策は、グループまたはユーザーがプロジェクトに招待されていることを確認することです。

ユーザー名またはグループ名が変更されたときにCODEOWNERSが更新されない

ユーザーまたはグループが名前を変更すると、CODEOWNERSは新しい名前で自動的に更新されません。新しい名前を入力するには、ファイルを編集する必要があります。

SAML SSOを使用している組織は、ユーザーがユーザー名を変更できないように、ユーザー名を設定できます。

グローバルグループメンバーシップロックとの非互換性

コードオーナー機能には、プロジェクトへの直接のグループメンバーシップが必要です。グローバルグループメンバーシップロックが有効になっている場合、グループがプロジェクトに直接のメンバーとして招待されるのを防ぎます。これにより、2つの機能間に非互換性が生じます。

グローバルのSAMLまたはLDAPグループメンバーシップロックが有効になっている場合、グループまたはサブグループをコードオーナーとして使用することはできません。

グローバルのSAMLまたはLDAPグループメンバーシップロックのいずれかを有効にした場合は、次のオプションがあります:

  • グループの代わりに個々のユーザーをコードオーナーとして使用します。
  • グループベースのコードオーナーを使用することがより優先度が高い場合は、グローバルグループメンバーシップロックを無効にします。

継承されたグループメンバーのサポートは、イシュー288851で提案されています。