チュートリアル: プロジェクト用の保護されたワークフローを構築する
- プラン: Free、Premium、Ultimate
- 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated
チームが新しいプロジェクトを開始する場合、効率性と適切なレビューのバランスが取れたワークフローが必要です。GitLabでは、ユーザーグループを作成し、それらのグループと保護ブランチを組み合わせて、それらの保護を承認ルールで適用できます。
このチュートリアルでは、サンプルプロジェクト「Excelsior」の1.xと1.x.xのリリースブランチに対する保護を設定し、プロジェクトの最小限の承認ワークフローを作成します:
engineeringグループを作成するengineeringでサブグループを作成する- ユーザーをサブグループに追加する
- Excelsiorプロジェクトを作成する
- 基本的なCODEOWNERSファイルを追加する
- 承認ルールを設定する
- ブランチでコードオーナーの承認を適用する
- リリースブランチを作成する
はじめる前
- メンテナーロール以上が必要です。
- マネージャーとそのメールアドレスのリストが必要です。
- バックエンドエンジニアとフロントエンドエンジニア、およびそれらのメールアドレスのリストが必要です。
- ブランチ名のセマンティックバージョニングを理解している必要があります。
engineeringグループを作成する
Excelsiorプロジェクトをセットアップする前に、プロジェクトを所有するグループを作成する必要があります。ここでは、エンジニアリンググループをセットアップします:
- 左側のサイドバーの上部で、新規作成( )を選択し、新規グループを選択します。
- グループを作成を選択します。
- グループ名に
Engineeringを入力します。 - グループURLに、
engineeringと入力します。 - 表示レベルをプライベートに設定します。
- GitLabに最も役立つ情報が表示されるように、エクスペリエンスをパーソナライズします:
- ロールで、System administrator(システム管理者)を選択します。
- **だれがこのグループを使用しますか?**で、自分の会社やチームを選択します。
- **このグループを何に使う予定ですか?**で、コードを保存したいを選択します。
- グループへのメンバーの招待はスキップしてください。このチュートリアルの後のセクションでユーザーを追加します。
- グループを作成を選択します。
次に、より詳細な制御を行うために、このengineeringグループにサブグループを追加します。
engineeringでサブグループを作成する
engineeringグループは良いスタートですが、Excelsiorプロジェクトのバックエンドエンジニア、フロントエンドエンジニア、およびマネージャーには、異なるタスクと、異なる専門分野があります。
ここでは、エンジニアリンググループにさらに3つの詳細なサブグループを作成して、ユーザーを仕事の種類別にセグメント化します。managers、frontend、backend。次に、これらの新しいグループをengineeringグループのメンバーとして追加します。
まず、新しいサブグループを作成します:
左側のサイドバーで検索または移動先を選択し、
engineeringを検索します。Engineeringという名前のグループを選択します:engineeringグループの概要ページの右上隅にある新しいサブグループを選択します。サブグループ名に、
Managersを入力します。表示レベルをプライベートに設定します。
サブグループを作成を選択します。
次に、engineeringグループのメンバーとしてサブグループを追加します:
- 左側のサイドバーで検索または移動先を選択し、
engineeringを検索します。Engineeringという名前のグループを選択します。 - 管理 > メンバーを選択します。
- 右上にあるグループを招待を選択します。
- 招待するグループを選択で、
Engineering / Managersを選択します。 - サブグループを追加するときに、メンテナーのロールを選択します。これにより、
engineeringグループとそのプロジェクトにアクセスするときに、サブグループのメンバーが継承できる最高のロールが構成されます。 - オプション。有効期限日を選択します。
- 招待を選択します。
このプロセスを繰り返して、backendとfrontendのサブグループを作成します。完了したら、engineeringグループをもう一度検索します。概要ページには、次のように3つのサブグループが表示されます:
ユーザーをサブグループに追加する
前の手順で、親グループ(engineering)にサブグループを追加したときに、サブグループのメンバーをMaintainerのロールに制限しました。このロールは、engineeringが所有するプロジェクトに対して継承できる最高のロールです。結果:
- ユーザー1はゲストのロールで
managerサブグループに追加され、engineeringプロジェクトでゲストのロールを受け取ります。 - ユーザー2はオーナーのロールで
managerグループに追加されます。このロールは、設定した最大のロール(Maintainer)よりも高いため、ユーザー2はオーナーの代わりにMaintainerのロールを受け取ります。
ユーザーを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は、オプションのレビューのみをサポートしています。レビューを必須にするには、GitLab PremiumまたはGitLab Ultimateが必要です。
CODEOWNERSファイルをexcelsiorプロジェクトに追加するには:
左側のサイドバーで検索または移動先を選択し、
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およびGitLab Ultimateでルールを必須にするには、承認が必要を
1に設定します。 managersグループを承認者として追加します。- 承認ルールを追加を選択します。
- 承認の設定までスクロールし、**マージリクエストの承認ルールの編集を防ぎます。**が選択されていることを確認します。
- 変更を保存を選択します。
追加すると、Enforce CODEOWNERSルールは次のようになります:
ブランチでコードオーナーの承認を適用する
プロジェクトにいくつかの保護を設定したので、これらの保護を組み合わせて、プロジェクトの重要なブランチを保護する準備ができました:
- ユーザーは論理的なグループとサブグループに分類されます。
- CODEOWNERSファイルは、ファイルの種類とディレクトリの主題分野のエキスパートを記述しています。
- 承認ルールは、(GitLab Freeで)主題分野のエキスパートが変更をレビューすることを推奨(またはGitLab PremiumおよびGitLab Ultimateで)必須にします。
excelsiorプロジェクトは、リリースブランチ名にセマンティックバージョニングを使用するため、リリースブランチが1.xと1.x.xのパターンに従うことを知っています。これらのブランチに追加されたすべてのコードを主題分野のエキスパートがレビューし、マネージャーがリリースブランチにマージされる作業について最終的な決定を下すことを希望します。
ブランチごとに保護を作成するのではなく、ワイルドカードブランチルールを構成して、複数のブランチを保護します:
- 左側のサイドバーで検索または移動先を選択し、
Excelsiorを検索します。プロジェクトExcelsiorを選択します。 - 設定 > リポジトリを選択します。
- ブランチルールを展開します。
- ブランチルールの追加 > ブランチ名またはパターンを選択します。
- ドロップダウンリストから
1.*と入力し、**ワイルドカードの作成1.***を選択します。 - コミットを直接プッシュするのではなく、すべてのユーザーにマージリクエストを送信させるには、次のようにします:
- マージを許可セクションで、編集を選択し、メンテナーに設定して、変更を保存を選択します。
- プッシュとマージを許可セクションで、編集を選択し、なしに設定して、変更を保存を選択します。
- 強制プッシュを許可を無効のままにします。
- GitLab PremiumとGitLab Ultimateで、コードオーナーが作業するファイルへの変更をレビューすることを要求するには、コードオーナーの承認が必要を切り替えます。
- ブランチの表で、
Defaultとマークされたルールを見つけます。(お使いのGitLabのバージョンによっては、このブランチの名前がmainまたはmasterになっている場合があります)。このブランチの値が、1.*ルールに使用した設定と一致するように設定します。
1.*ブランチがまだ存在していなくても、ルールが適用されるようになりました:
リリースブランチを作成する
すべてのブランチ保護が適用されたので、1.0.0リリースブランチを作成する準備ができました:
- 左側のサイドバーで検索または移動先を選択し、
Excelsiorを検索します。プロジェクトExcelsiorを選択します。 - 左側のサイドバーで、コード > ブランチを選択します。
- 右上隅で、新しいブランチを選択します。
1.0.0という名前を付けます。 - ブランチを作成を選択します。
ブランチ保護がUIに表示されるようになりました:
左側のサイドバーで、コード > ブランチを選択します。ブランチのリストでは、
1.0.0ブランチが保護されていることを示す必要があります:左側のサイドバーで、設定 > リポジトリを選択し、ブランチルールを展開して、すべての保護ブランチの詳細を表示します:
おつかれさまでした。エンジニアはそれぞれのブランチで独立して作業でき、1.0.0リリースブランチの検討のために提出されたすべてのコードは、主題分野のエキスパートによってレビューされます。







