チュートリアル: プロジェクト用の保護されたワークフローを構築する
- プラン: Free、Premium、Ultimate
- 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated
チームが新しいプロジェクトを開始するときは、効率性と適切なレビューのバランスが取れたワークフローが必要です。GitLabでは、ユーザーグループを作成し、それらのグループをブランチ保護と組み合わせ、承認ルールでそれらの保護を適用できます。
このチュートリアルでは、「Excelsior」という名前のプロジェクトの1.xおよび1.x.xリリースブランチに対する保護を設定し、最小限のワークフローを作成します:
engineeringグループを作成するengineering内にサブグループを作成する- ユーザーをサブグループに追加する
- Excelsiorプロジェクトを作成する
- 基本的なCODEOWNERSファイルを追加する
- 承認ルールを設定する
- ブランチでのコードオーナーの承認を強制する
- リリースブランチを作成する
はじめる前
- メンテナーまたはオーナーのロールを持っている必要があります。
- マネージャーのリストと彼らのメールアドレスが必要です。
- バックエンドとフロントエンドのエンジニアのリストと彼らのメールアドレスが必要です。
- ブランチ名のためのセマンティックバージョニングを理解している必要があります。
engineeringグループを作成する
Excelsiorプロジェクトを設定する前に、プロジェクトを所有するグループを作成する必要があります。ここで、Engineeringグループを設定します:
- 右上隅で、新規作成( )と新しいグループを選択します。
- グループを作成を選択します。
- グループ名に
Engineeringと入力します。 - グループURLに
engineeringと入力します。 - 表示レベルを非公開に設定します。
- GitLabが最も役立つ情報を表示するように、エクスペリエンスをパーソナライズします:
- ロールにSystem administratorを選択します。
- だれがこのグループを使用しますか?に自分の会社やチームを選択します。
- このグループを何に使う予定ですか?にコードを保存したいを選択します。
- グループへのメンバー招待をスキップします。ユーザーは、このチュートリアルの後のセクションで追加します。
- グループを作成を選択します。
次に、よりきめ細かい制御のために、このengineeringグループにサブグループを追加します。
engineering内にサブグループを作成する
engineeringグループは良い出発点ですが、Excelsiorプロジェクトのバックエンドエンジニア、フロントエンドエンジニア、およびマネージャーは、異なるタスクと専門分野を持っています。
ここでは、Engineeringグループ内に、ユーザーが実行する作業の種類によってユーザーをセグメント化するための、よりきめ細かい3つのサブグループ(managers、frontend、backend)を作成します。その後、これらの新しいグループをengineeringグループのメンバーとして追加します。
まず、新しいサブグループを作成します:
上部のバーで検索または移動先を選択し、
engineeringを検索します。Engineeringという名前のグループを選択します:engineeringグループの概要ページで、右上隅にあるサブグループを作成を選択します。サブグループ名に
Managersと入力します。表示レベルを非公開に設定します。
サブグループを作成を選択します。
次に、サブグループをengineeringグループのメンバーとして追加します:
- 上部のバーで検索または移動先を選択し、
engineeringを検索します。 Engineeringという名前のグループを選択します。- 管理 > メンバーを選択します。
- 右上隅でグループを招待を選択します。
- 招待するグループを選択に
Engineering / Managersを選択します。 - サブグループを追加する際に、メンテナーロールを選択します。これにより、サブグループのメンバーが
engineeringグループとそのプロジェクトにアクセスする際に継承できる最高のロールが設定されます。 - オプション。有効期限を選択します。
- 招待を選択します。
backendとfrontendのサブグループを作成するために、このプロセスを繰り返します。完了したら、もう一度engineeringグループを検索します。その概要ページには、次のように3つのサブグループが表示されます:
ユーザーをサブグループに追加する
前のステップで、サブグループを親グループ(engineering)に追加した際、サブグループのメンバーをメンテナーロールに制限しました。このロールは、engineeringが所有するプロジェクトに対して継承できる最高のロールです。その結果:
- ユーザー1は
managerサブグループにゲストロールで追加され、engineeringプロジェクトでゲストロールを受け取ります。 - ユーザー2は
managerグループにオーナーロールで追加されます。このロールは設定した最大ロール(メンテナー)よりも高いため、ユーザー2はオーナーではなくメンテナーロールを受け取ります。
frontendサブグループにユーザーを追加するには:
- 上部のバーで検索または移動先を選択し、
frontendを検索します。 Frontendグループを選択します。- 管理 > メンバーを選択します。
- メンバーを招待を選択します。
- フィールドに入力します。デフォルトでデベロッパーロールを選択し、このユーザーが他の作業をレビューする場合はメンテナーに増やします。
- 招待を選択します。
- すべてのフロントエンドエンジニアを
frontendサブグループに追加するまで、これらの手順を繰り返します。
次に、backendとmanagersグループでも同様に行います。同じユーザーは複数のサブグループのメンバーになることができます。
Excelsiorプロジェクトを作成する
グループ構造が整ったので、チームが作業するexcelsiorプロジェクトを作成します。フロントエンドとバックエンドの両方のエンジニアが関わっているため、excelsiorは、作成したばかりのより小さなサブグループのいずれかではなく、engineeringに属する必要があります。
新しいexcelsiorプロジェクトを作成するには:
- 上部のバーで検索または移動先を選択し、
engineeringを検索します。 Engineeringという名前のグループを選択します。engineeringグループの概要ページで、右上隅にある新規作成( )とこのグループで > 新規プロジェクト/リポジトリを選択します。- 空のプロジェクトの作成を選択します。
- プロジェクトの詳細を入力します。
- プロジェクト名フィールドに
Excelsiorと入力します。プロジェクトslugにはexcelsiorが自動的に入力されます。 - 表示レベルで、公開を選択します。
- リポジトリを初期化しREADMEファイルを生成するを選択して、初期ファイルをリポジトリに追加します。
- プロジェクト名フィールドに
- プロジェクトを作成を選択します。
GitLabはexcelsiorプロジェクトを作成し、そのホームページにリダイレクトします。次のようになるはずです:
次のステップで、このページにある機能を使用します。
基本的なCODEOWNERSファイルを追加する
プロジェクトのルートディレクトリにCODEOWNERSファイルを追加して、適切なサブグループにレビューをルーティングします。この例では、4つのルールを設定します:
- すべての変更は、
engineeringグループの誰かによってレビューされる必要があります。 - マネージャーはCODEOWNERSファイル自体への変更をレビューする必要があります。
- フロントエンドエンジニアはフロントエンドファイルへの変更をレビューする必要があります。
- バックエンドエンジニアはバックエンドファイルへの変更をレビューする必要があります。
GitLab Freeはオプションのレビューのみをサポートします。レビューを必須にするには、PremiumまたはUltimateが必要です。
excelsiorプロジェクトにCODEOWNERSファイルを追加するには:
上部のバーで検索または移動先を選択し、
Excelsiorを検索します。Excelsiorという名前のプロジェクトを選択します。ファイル名に
CODEOWNERSと入力します。これにより、プロジェクトのルートディレクトリにCODEOWNERSという名前のファイルが作成されます。この例を編集エリアに貼り付け、グループ構造と一致しない場合は
@engineering/を変更します:# All changes should be reviewed by someone in the engineering group * @engineering # A manager should review any changes to this file CODEOWNERS @engineering/managers # Frontend files should be reviewed by FE engineers [Frontend] @engineering/frontend *.scss *.js # Backend files should be reviewed by BE engineers [Backend] @engineering/backend *.rbコミットメッセージに、次を貼り付けます:
Adds a new CODEOWNERS file Creates a small CODEOWNERS file to: - Route backend and frontend changes to the right teams - Route CODEOWNERS file changes to managers - Request all changes be reviewed変更をコミットするを選択します。
CODEOWNERSファイルがプロジェクトのmainブランチに配置され、このプロジェクトで作成されるすべての将来のブランチで利用できるようになりました。
承認ルールを設定する
CODEOWNERSファイルは、ディレクトリとファイルタイプの適切なレビュアーを記述します。承認ルールは、それらのレビュアーにマージリクエストを指示します。ここでは、新しいCODEOWNERSファイルの情報を利用し、リリースブランチに保護を追加する承認ルールを設定します:
- 上部のバーで検索または移動先を選択し、
Excelsiorを検索します。 Excelsiorという名前のプロジェクトを選択します。- 設定 > マージリクエストを選択します。
- マージリクエストの承認セクションで、承認ルールまでスクロールします。
- 承認ルールを追加を選択します。
Enforce CODEOWNERSという名前のルールを作成します。- すべて保護ブランチを選択します。
- GitLab PremiumおよびUltimateでルールを必須にするには、承認が必要を
1に設定します。 managersグループを承認者として追加します。- 承認ルールを追加を選択します。
- 承認の設定までスクロールし、**マージリクエストの承認ルールの編集を防ぎます。**が選択されていることを確認します。
- 変更を保存を選択します。
追加すると、Enforce CODEOWNERSルールは次のようになります:
ブランチでのコードオーナーの承認を強制する
プロジェクトにいくつかの保護を設定しましたが、プロジェクトの重要なブランチを保護するために、これらの保護を組み合わせる準備ができました:
- ユーザーは論理グループとサブグループに分類されます。
- CODEOWNERSファイルは、ファイルタイプとディレクトリの専門家を記述します。
- あなたの承認ルールは、(GitLab Freeでは推奨され、PremiumおよびUltimateでは必須で)専門家に変更をレビューすることを促します。
excelsiorプロジェクトはリリースブランチ名にセマンティックバージョニングを使用しているため、リリースブランチが1.xおよび1.x.xのパターンに従うことがわかります。これらのブランチに追加されるすべてのコードが専門家によってレビューされ、マネージャーがどの作業をリリースブランチにマージするかについて最終決定を下すことを望んでいます。
一度に1つのブランチに対して保護を作成するのではなく、ワイルドカードブランチルールを設定して複数のブランチを保護します:
- 上部のバーで検索または移動先を選択し、
Excelsiorを検索します。 Excelsiorという名前のプロジェクトを選択します。- 設定 > リポジトリを選択します。
- ブランチルールを展開する。
- ブランチルールの追加 > ブランチ名またはパターンを選択します。
- ドロップダウンリストから
1.*と入力し、**ワイルドカード1.***を選択します。 - 直接コミットをプッシュするのではなく、全員にマージリクエストの提出を義務付けるには:
- マージを許可セクションで編集を選択し、メンテナーに設定して変更を保存を選択します。
- プッシュとマージを許可セクションで編集を選択し、なしに設定して変更を保存を選択します。
- 強制プッシュを許可を無効のままにします。
- GitLab PremiumおよびUltimateでは、コードオーナーに担当ファイルの変更をレビューさせるには、コードオーナーの承認が必要を切り替えます。
- ブランチの表で、
Defaultとしてマークされているルールを見つけます。(GitLabのバージョンによっては、このブランチの名前がmainまたはmasterである場合があります。)このブランチの値を、1.*ルールに使用した設定に一致するように設定します。
1.*ブランチはまだ存在しませんが、ルールはすでに適用されています:
リリースブランチを作成する
すべてのブランチ保護が整ったので、1.0.0リリースブランチを作成する準備ができました:
- 上部のバーで検索または移動先を選択し、
Excelsiorを検索します。 Excelsiorという名前のプロジェクトを選択します。- 左側のサイドバーでコード > ブランチを選択します。
- 右上隅で、新しいブランチを選択します。名前を
1.0.0にします - ブランチを作成を選択します。
ブランチ保護がUIに表示されるようになりました:
左側のサイドバーでコード > ブランチを選択します。ブランチの一覧で、
1.0.0ブランチが保護されていると表示されるはずです:左側のサイドバーで設定 > リポジトリを選択し、ブランチルールを展開すると、すべての保護ブランチの詳細が表示されます:
おつかれさまでした。エンジニアはそれぞれのブランチで独立して作業でき、1.0.0リリースブランチに提出されるすべてのコードは、専門家によってレビューされます。







