コードオーナーのトラブルシューティング
- プラン: Premium、Ultimate
- 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated
コードオーナーを使用する場合、以下の問題が発生することがあります。
コードオーナー機能がエラーを処理する方法について詳しくは、エラー処理を参照してください。
CODEOWNERSファイルを検証します
この機能の利用可否は、機能フラグによって制御されます。詳細については、履歴を参照してください。
CODEOWNERSファイルを表示すると、GitLabは構文と権限のイシューを見つけるのに役立つように検証を実行します。構文のイシューが見つからない場合、GitLabは以下を行います:
- ファイルに対して検証をさらに実行しません。
- ファイルで見つかった最初の200件の一意のユーザーとグループ参照に対して、権限の検証をさらに実行します。
仕組みは次のとおりです:
- プロジェクトにアクセスできるすべての参照を検索します。ユーザーまたはグループの参照が追加されても、プロジェクトへのアクセス権がない場合は、エラーを表示します。
- 有効なユーザーの参照ごとに、ユーザーがプロジェクトでマージリクエストを承認する権限を持っていることを確認します。ユーザーがその権限を持っていない場合は、エラーを表示します。
- 有効なグループの参照ごとに、最大のロールの値がデベロッパー以上であることを確認します。デベロッパーよりも低い値を持つグループの参照ごとに、エラーを表示します。
- 有効なグループの参照ごとに、グループにマージリクエストを承認する権限を持つユーザーが少なくとも1人含まれていることを確認します。マージリクエストを承認する権限を持つユーザーが1人も含まれていないグループの参照については、エラーを表示します。
承認が表示されない
CODEOWNERSファイルは、マージリクエストが作成される前に、ターゲットブランチに存在している必要があります。
コードオーナーの承認ルールは、マージリクエストが作成されたときにのみ更新されます。CODEOWNERSファイルを更新する場合は、マージリクエストを閉じて、新しいマージリクエストを作成してください。
承認がオプションとして表示される
次のいずれかの条件に該当する場合、コードオーナーの承認ルールはオプションです:
- ユーザーまたはグループがプロジェクトのメンバーではありません。コードオーナーは、親グループからメンバーを継承できません。
- ユーザーまたはグループが不正な形式であるか、アクセスできません。
- 保護ブランチでのコードオーナーの承認が設定されていません。
- セクションがオプションとしてマークされています。
- 他のマージリクエストのapproval設定との競合により、マージリクエストを承認できる対象となるコードオーナーがいません。
ユーザーが承認者の候補として表示されない
次のいずれかの条件に該当する場合、ユーザーがコードオーナーのマージリクエストの承認ルールの承認者として表示されない場合があります:
- ルールが、特定のユーザーがマージリクエストを承認することを禁止しています。プロジェクトのマージリクエストの承認設定を確認してください。
- コードオーナーグループの表示レベルが非公開であり、現在のユーザーがコードオーナーグループのメンバーではありません。
- 特定のユーザー名のスペルが間違っているか、
CODEOWNERSファイルで不正な形式です。 - 現在のユーザーは、内部のコードオーナーグループへの権限を持たない外部ユーザーです。
ディレクトリのコードオーナーを表示すると、ユーザーまたはグループが表示されない
コードオーナーは、ディレクトリを表示する際に、構成されたルールに基づいて目的のユーザーまたはグループを表示しない場合がありますが、ディレクトリの下にあるファイルのコードオーナーは正しく表示します。
例:
* @dev-team
docs/ @tech-writer-teamdocs/ディレクトリの下にあるすべてのファイルは、@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で提案されています。