- 概要
- 保護ブランチの設定
- マージ許可とプッシュ許可設定の使用
- 特定のユーザーへのプッシュおよびマージアクセスの制限
- ワイルドカード保護ブランチ
- 保護ブランチの作成
- 保護ブランチの削除
- コードオーナーによるブランチの承認
- 保護ブランチでのパイプラインの実行
- 変更履歴
保護ブランチ
GitLab における権限は、基本的にリポジトリやブランチに対する読み込みや書き込みの権限という考えに基づいて定義されています。 特定のブランチに対してさらに制限を加えるために、ブランチを保護することができます。
概要
デフォルトでは、プロテクトブランチは4つの単純なことを行います:
- メンテナー権限を持つユーザー以外は、メンテナーを作成できません。
- 許可権限を持つユーザー以外からのプッシュを防ぎます。
- 誰かがブランチに無理やり押し込むのを防ぎます。
- これにより、ブランチを削除することができなくなります。
経年変化についてはChangelogセクションをご覧ください。
デフォルトのブランチ保護レベルは管理エリアで設定します。
保護ブランチの設定
ブランチを保護するには、少なくともメンテナーの権限レベルが必要です。master
ブランチはデフォルトで保護されていることに注意してください。
- プロジェクトの設定➔リポジトリに移動します。
- スクロールして、保護されたブランチのセクションを見つけます。
-
ブランチのドロップダウンメニューから、保護したいブランチを選択し、保護をクリックします。 下のスクリーンショットでは、
develop
ブランチを選択しています。 -
保護されたブランチは、「保護されたブランチ」リストに表示されます。
マージ許可とプッシュ許可設定の使用
GitLab 8.11で導入されました。
GitLab 8.11 以降、ブランチ保護のレイヤーが追加され、保護ブランチをより細かく管理できるようになりました。 開発者がプッシュできる」オプションは「プッシュ許可」設定に置き換えられ、メンテナーや開発者が保護ブランチにプッシュすることを許可/禁止できるようになりました。
Allowed to push” と “Allowed to merge” の設定を使うと、さまざまなロールが保護ブランチで実行できるアクションを制御することができます。 たとえば、”Allowed to push” を “No one” に設定し、”Allowed to merge” を “Developers + Maintainers” に設定すると、保護ブランチへの変更に対して_全員が_マージリクエストを送信するようになります。 これは、GitLab ワークフローのようなワークフローと互換性があります。
しかし、そのような必要がなく、強制プッシュやブランチの削除からの保護だけが有用なワークフローもあります。 そのようなワークフローでは、「プッシュ許可」を「開発者 + メンテナー」に設定することで、書き込み権限を持つすべての人に保護されたブランチへのプッシュを許可することができます。
保護されたブランチを作成するとき、あるいは作成した後で、”Already protected” エリアのドロップダウンリストから必要なオプションを選択することで、”Allowed to push” や “Allowed to merge” オプションを設定することができます。
保護ブランチを作成する際にこれらのオプションを選択しなかった場合、デフォルトで「メンテナー」に設定されます。
特定のユーザーへのプッシュおよびマージアクセスの制限
GitLab Starter8.11で導入されました。
GitLab Enterprise Editionでは、ロール(メンテナー、開発者)や特定のユーザーを選択することで、保護されたブランチへのアクセスを制限することができます。 ドロップダウンメニューから、ロールやマージまたはプッシュアクセスさせたいユーザーを選択してください。
保護」をクリックすると、ブランチが「保護されたブランチ」リストに表示されます。
ワイルドカード保護ブランチ
GitLab 8.10 で導入されました。
ワイルドカードで保護ブランチを指定すると、ワイルドカードにマッチするすべてのブランチが保護されます。 たとえば、以下のようになります:
ワイルドカードプロテクトブランチ | ブランチのマッチング |
---|---|
*-stable
|
production-stable ,staging-stable
|
production/*
|
production/app-server ,production/load-balancer
|
*gitlab*
|
gitlab gitlab/staging 、master/gitlab/production
|
保護されたブランチの設定 (「開発者がプッシュできる」など) は、マッチするブランチすべてに適用されます。
たとえば、*-stable
とproduction-*
はどちらもブランチにマッチしますproduction-stable
。この場合、保護された_ブランチに_“Allowed to push” (プッシュを許可する) のような設定が production-stable
あれば、その設定も継承されます。
保護されているブランチの名前をクリックすると、一致するすべてのブランチのリストが表示されます:
保護ブランチの作成
GitLab 11.9 で導入されました。
保護ブランチやワイルドカード保護ブランチが「誰も プッシュを許可しない」に設定されている場合、開発者 (およびより高い権限レベルを持つユーザー) は、以下の条件を満たしていれば新しい保護ブランチを作成することができます。マージ許可これは UI あるいは API でのみ可能です (コマンドラインや Git クライアントアプリケーションから誤って保護ブランチを作成してしまうことを防ぐためです)。
ユーザーインターフェイスから新しいブランチを作成するには:
- リポジトリ>ブランチにアクセスしてください。
- 新規ブランチをクリックしてください。
- ブランチ名を入力し、既存のブランチやタグ、コミットを選択します。 すでに保護されているブランチやコミットのみが対象となります。
保護ブランチの削除
GitLab 9.3 で導入されました。
時折、保護されているブランチを削除したり、クリーンアップすることが必要になることがあります。
メンテナー権限以上のユーザーは、GitLab のウェブインターフェイスから手動で保護ブランチを削除することができます:
保護されたブランチの削除は、Git 経由ではなくウェブインターフェイス経由でのみ許可されています。 つまり、コマンドラインや Git クライアントアプリケーションから誤って保護されたブランチを削除することはできません。
コードオーナーによるブランチの承認
マージリクエストによって変更されたファイルに対して、コードオーナーの承認を最低 1 つ要求することができます。 コードオーナーの承認は、新しいブランチを保護するときに設定するか、またはすでに保護されているブランチに設定することができます。
新しいブランチを保護し、コードオーナーの承認を可能にします:
- プロジェクトの設定 >リポジトリに移動し、保護ブランチを展開します。
- ブランチの保護までスクロールし、保護したいブランチかワイルドカードを選択し、マージ許可者とプッシュ許可者を選択し、コードオーナーからの承認を必要とするスライダーを切り替えます。
- 保護」をクリックします。
すでに保護されているブランチに対してコードオーナーの承認を可能にするため:
- プロジェクトの設定 >リポジトリに移動し、保護ブランチを展開します。
- 保護ブランチまでスクロールダウンし、選択したブランチのコードオーナー承認者スライダーを切り替えます。
有効にすると、これらのブランチを対象としたマージリクエストはすべて、マッチしたルールごとにコードオーナーの承認が必要になります。 さらに、保護されたブランチへの直接のプッシュは、ルールがマッチした場合に拒否されます。
保護ブランチでのパイプラインの実行
保護されたブランチへのマージまたはプッシュの権限は、ユーザーがCI/CDパイプラインを実行し、それらのブランチに関連するジョブのアクションを実行できるかどうかを定義するために使用されます。
パイプラインのセキュリティモデルの詳細については、保護されたブランチのセキュリティを参照してください。
変更履歴
11.9
- 開発者 (およびより高い権限レベルを持つユーザー) が API やユーザーインターフェイスを通じて保護されたブランチを作成できるようにします。
9.2
- 保護されたブランチをウェブインターフェイスから削除できるようになりました(issue #21393)。
8.11
- プッシュできない保護ブランチを作成できるようにしました(マージリクエスト !5081)。
8.10
- プッシュ権限のない開発者が保護されたブランチにマージできるようにしました(マージリクエスト !4892)。
- ワイルドカードを使用して保護ブランチを指定できるようにしました(マージリクエスト !4665)。