マージリクエスト承認者
マージリクエストは、マージする前に承認者が必要なように設定することができます。GitLab Freeでは、Developer以上の権限を持つすべてのユーザーがマージリクエストを承認することができますが、これらの承認はオプションです。GitLab Premiumと GitLab Ultimateはさらに柔軟性を提供します:
- 作業をマージする前に、承認者の数とタイプについて必要なルールを作成します。
- 特定のファイルのコードオーナーとして機能するユーザーのリストを指定し、作業をマージする前にそのユーザーの承認を必要とします。
マージリクエスト承認者はプロジェクトごとに設定でき、一部の承認者はグループレベルで設定できます。マージリクエスト承認ルールのグループレベルの設定のサポートは、このエピックで追跡されています。GitLab Premiumと GitLab UltimateのセルフマネジメントGitLabインスタンスの承認者は、インスタンス全体の承認を設定することもできます。
承認の仕組み
マージリクエスト承認ルールでは、作業をプロジェクトにマージする前に必要な承認者の最小数を設定できます。また、これらのルールを拡張して、どのタイプのユーザーが作業を承認できるかを定義することもできます。作成できるルールの例には、次のようなものがあります:
- 特定の権限を持つユーザーは、常に作業を承認できます。
- コードオーナーは、自分が所有するファイルの作業を承認することができます。
- 特定の権限を持つユーザーは、リポジトリへのマージ権限を持っていなくても、作業を承認することができます。
- 特定の権限を持つユーザーは、特定のマージリクエストの承認ルールを上書きすることを許可または拒否できます。
設定することもできます:
- マージリクエスト承認者の追加設定により、プロジェクトが必要とする監視とセキュリティのレベルをよりコントロールできます。
- GitLab UIやマージリクエスト承認者APIを使って、マージリクエスト承認のルールや設定を行うことができます。
マージリクエストを承認する
資格のある承認者がオープンなマージリクエストにアクセスすると、GitLab はマージリクエストの本文の後にこれらのボタンのいずれかを表示します:
- 承認します:承認:マージリクエストにはまだ必要な数の承認者がいません。
- 追加で承認します:マージリクエストは必要な数の承認者を持っています。
- 承認を取り消します:マージリクエストを表示しているユーザーは、すでにマージリクエストを承認しています。
承認者は、マージリクエストにコメントを追加する際に/approve
クイックアクションを使用することもできます。 GitLab 13.10 以降では、ユーザーがマージリクエストを承認してレビュアーリストに表示されると、名前の横に緑のチェックマーク({check-circle-filled})が表示されます。
設定した数と種類の承認者をマージ リクエストが受け取った後、別の理由でブロックされない限り、マージできます。マージリクエストは、マージ競合、未解決スレッド、失敗した CI/CD パイプラインなどの他の問題によってブロックされることがあります。
マージリクエスト作成者が自分のマージリクエストを承認できないようにするには、次の設定を有効にします。 作成者の承認を防ぐを有効にしてください。
承認ルールのオーバーライドを有効にすると、デフォルトの承認ルールに変更する前に作成されたマージリクエストは影響を受けません。唯一の例外は、ルールの対象ブランチの変更です。
オプションの承認者
GitLab 13.2 で導入されました。
GitLab では Developer 以上の権限を持つすべてのユーザーがマージリクエストを承認することができます。GitLab Freeでの承認者はオプションであり、承認なしでマージリクエストがマージされるのを防ぐことはできません。
必要な承認者
13.9でGitLab Premiumに移行しました。
必要な承認者は、指定したユーザー数とタイプによるコードレビューを強制します。承認者がいなければ、作業はマージできません。必須承認者は複数のユースケースを可能にします:
- リポジトリにマージされるすべてのコードのレビューを強制します。
- 承認ルールにより、提案されたコード変更のレビュアーと最小レビュアー数を指定します。
- すべてのコード変更案について、バックエンド、フロントエンド、品質保証、データベースなどのレビュアーカテゴリを指定します。
- 変更されたファイルのコードオーナーを使用して、誰がその作業をレビューすべきかを決定します。
- テストカバレッジを低下させるコードをマージする前に、承認者を要求します。
- GitLab Ultimateのユーザーは、脆弱性をもたらす可能性のあるコードをマージする前にセキュリティチームの承認を求めることもできます。
無効なルール
フラグ: セルフマネジメントのGitLabでは、デフォルトでこの機能が利用可能です。この機能を隠すには、管理者がinvalid_scan_result_policy_prevents_merge
という機能フラグを無効にします。
承認ルールが満たされない場合、そのルールは常にAuto approved と表示されます。これは以下の条件に適用されます:
- 承認者はマージリクエストの作成者のみです。
- 承認ルールに資格のある承認者(グループまたはユーザー)が割り当てられていません。
- 必要な承認の数が、資格のある承認者の数を超えています。
これらのルールは、スキャン結果ポリシーによって作成されていない限り、自動的に承認され、それぞれのマージ リクエストのブロックを解除します。スキャン結果ポリシーによって作成された無効な承認ルールにはアクションが必要であると表示され、自動的に承認されないため、それぞれのマージ リクエストがブロックされます。
関連するトピック
- マージリクエスト承認者 API
- 自己管理インストールのインスタンスレベルの承認ルール