正式なドキュメントは英語版であり、この日本語訳はAI支援翻訳により作成された参考用のものです。日本語訳の一部の内容は人間によるレビューがまだ行われていないため、翻訳のタイミングにより英語版との間に差異が生じることがあります。最新かつ正確な情報については、英語版をご参照ください。

チュートリアル: プロジェクト用の保護されたワークフローを構築する

  • プラン: Free、Premium、Ultimate
  • 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated

チームが新しいプロジェクトを開始するときは、効率性と適切なレビューのバランスが取れたワークフローが必要です。GitLabでは、ユーザーグループを作成し、それらのグループをブランチ保護と組み合わせ、承認ルールでそれらの保護を適用できます。

このチュートリアルでは、「Excelsior」という名前のプロジェクトの1.xおよび1.x.xリリースブランチに対する保護を設定し、最小限のワークフローを作成します:

  1. engineeringグループを作成する
  2. engineering内にサブグループを作成する
  3. ユーザーをサブグループに追加する
  4. Excelsiorプロジェクトを作成する
  5. 基本的なCODEOWNERSファイルを追加する
  6. 承認ルールを設定する
  7. ブランチでのコードオーナーの承認を強制する
  8. リリースブランチを作成する

はじめる前

  • メンテナーまたはオーナーのロールを持っている必要があります。
  • マネージャーのリストと彼らのメールアドレスが必要です。
  • バックエンドとフロントエンドのエンジニアのリストと彼らのメールアドレスが必要です。
  • ブランチ名のためのセマンティックバージョニングを理解している必要があります。

engineeringグループを作成する

Excelsiorプロジェクトを設定する前に、プロジェクトを所有するグループを作成する必要があります。ここで、Engineeringグループを設定します:

  1. 右上隅で、新規作成 plus )と新しいグループを選択します。
  2. グループを作成を選択します。
  3. グループ名Engineeringと入力します。
  4. グループURLengineeringと入力します。
  5. 表示レベル非公開に設定します。
  6. GitLabが最も役立つ情報を表示するように、エクスペリエンスをパーソナライズします:
    • ロールSystem administratorを選択します。
    • だれがこのグループを使用しますか?自分の会社やチームを選択します。
    • このグループを何に使う予定ですか?コードを保存したいを選択します。
  7. グループへのメンバー招待をスキップします。ユーザーは、このチュートリアルの後のセクションで追加します。
  8. グループを作成を選択します。

次に、よりきめ細かい制御のために、このengineeringグループにサブグループを追加します。

engineering内にサブグループを作成する

engineeringグループは良い出発点ですが、Excelsiorプロジェクトのバックエンドエンジニア、フロントエンドエンジニア、およびマネージャーは、異なるタスクと専門分野を持っています。

ここでは、Engineeringグループ内に、ユーザーが実行する作業の種類によってユーザーをセグメント化するための、よりきめ細かい3つのサブグループ(managersfrontendbackend)を作成します。その後、これらの新しいグループをengineeringグループのメンバーとして追加します。

まず、新しいサブグループを作成します:

  1. 上部のバーで検索または移動先を選択し、engineeringを検索します。

  2. Engineeringという名前のグループを選択します:

    検索結果にEngineeringグループが表示されている

  3. engineeringグループの概要ページで、右上隅にあるサブグループを作成を選択します。

  4. サブグループ名Managersと入力します。

  5. 表示レベル非公開に設定します。

  6. サブグループを作成を選択します。

次に、サブグループをengineeringグループのメンバーとして追加します:

  1. 上部のバーで検索または移動先を選択し、engineeringを検索します。
  2. Engineeringという名前のグループを選択します。
  3. 管理 > メンバーを選択します。
  4. 右上隅でグループを招待を選択します。
  5. 招待するグループを選択Engineering / Managersを選択します。
  6. サブグループを追加する際に、メンテナーロールを選択します。これにより、サブグループのメンバーがengineeringグループとそのプロジェクトにアクセスする際に継承できる最高のロールが設定されます。
  7. オプション。有効期限を選択します。
  8. 招待を選択します。

backendfrontendのサブグループを作成するために、このプロセスを繰り返します。完了したら、もう一度engineeringグループを検索します。その概要ページには、次のように3つのサブグループが表示されます:

Engineeringグループに3つのサブグループがある

ユーザーをサブグループに追加する

前のステップで、サブグループを親グループ(engineering)に追加した際、サブグループのメンバーをメンテナーロールに制限しました。このロールは、engineeringが所有するプロジェクトに対して継承できる最高のロールです。その結果:

  • ユーザー1はmanagerサブグループにゲストロールで追加され、engineeringプロジェクトでゲストロールを受け取ります。
  • ユーザー2はmanagerグループにオーナーロールで追加されます。このロールは設定した最大ロール(メンテナー)よりも高いため、ユーザー2はオーナーではなくメンテナーロールを受け取ります。

frontendサブグループにユーザーを追加するには:

  1. 上部のバーで検索または移動先を選択し、frontendを検索します。
  2. Frontendグループを選択します。
  3. 管理 > メンバーを選択します。
  4. メンバーを招待を選択します。
  5. フィールドに入力します。デフォルトでデベロッパーロールを選択し、このユーザーが他の作業をレビューする場合はメンテナーに増やします。
  6. 招待を選択します。
  7. すべてのフロントエンドエンジニアをfrontendサブグループに追加するまで、これらの手順を繰り返します。

次に、backendmanagersグループでも同様に行います。同じユーザーは複数のサブグループのメンバーになることができます。

Excelsiorプロジェクトを作成する

グループ構造が整ったので、チームが作業するexcelsiorプロジェクトを作成します。フロントエンドとバックエンドの両方のエンジニアが関わっているため、excelsiorは、作成したばかりのより小さなサブグループのいずれかではなく、engineeringに属する必要があります。

新しいexcelsiorプロジェクトを作成するには:

  1. 上部のバーで検索または移動先を選択し、engineeringを検索します。
  2. Engineeringという名前のグループを選択します。
  3. engineeringグループの概要ページで、右上隅にある新規作成 plus )とこのグループで > 新規プロジェクト/リポジトリを選択します。
  4. 空のプロジェクトの作成を選択します。
  5. プロジェクトの詳細を入力します。
    • プロジェクト名フィールドにExcelsiorと入力します。プロジェクトslugにはexcelsiorが自動的に入力されます。
    • 表示レベルで、公開を選択します。
    • リポジトリを初期化しREADMEファイルを生成するを選択して、初期ファイルをリポジトリに追加します。
  6. プロジェクトを作成を選択します。

GitLabはexcelsiorプロジェクトを作成し、そのホームページにリダイレクトします。次のようになるはずです:

Your new, almost-empty excelsior project

次のステップで、このページにある機能を使用します。

基本的なCODEOWNERSファイルを追加する

プロジェクトのルートディレクトリにCODEOWNERSファイルを追加して、適切なサブグループにレビューをルーティングします。この例では、4つのルールを設定します:

  • すべての変更は、engineeringグループの誰かによってレビューされる必要があります。
  • マネージャーはCODEOWNERSファイル自体への変更をレビューする必要があります。
  • フロントエンドエンジニアはフロントエンドファイルへの変更をレビューする必要があります。
  • バックエンドエンジニアはバックエンドファイルへの変更をレビューする必要があります。

GitLab Freeはオプションのレビューのみをサポートします。レビューを必須にするには、PremiumまたはUltimateが必要です。

excelsiorプロジェクトにCODEOWNERSファイルを追加するには:

  1. 上部のバーで検索または移動先を選択し、Excelsiorを検索します。

  2. Excelsiorという名前のプロジェクトを選択します。

  3. ブランチ名の横にあるプラスアイコン( plus )を選択し、次に新しいファイルを選択します: プロジェクト内に新しいファイルを作成する

  4. ファイル名CODEOWNERSと入力します。これにより、プロジェクトのルートディレクトリにCODEOWNERSという名前のファイルが作成されます。

  5. この例を編集エリアに貼り付け、グループ構造と一致しない場合は@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
  6. コミットメッセージに、次を貼り付けます:

    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
  7. 変更をコミットするを選択します。

CODEOWNERSファイルがプロジェクトのmainブランチに配置され、このプロジェクトで作成されるすべての将来のブランチで利用できるようになりました。

承認ルールを設定する

CODEOWNERSファイルは、ディレクトリとファイルタイプの適切なレビュアーを記述します。承認ルールは、それらのレビュアーにマージリクエストを指示します。ここでは、新しいCODEOWNERSファイルの情報を利用し、リリースブランチに保護を追加する承認ルールを設定します:

  1. 上部のバーで検索または移動先を選択し、Excelsiorを検索します。
  2. Excelsiorという名前のプロジェクトを選択します。
  3. 設定 > マージリクエストを選択します。
  4. マージリクエストの承認セクションで、承認ルールまでスクロールします。
  5. 承認ルールを追加を選択します。
  6. Enforce CODEOWNERSという名前のルールを作成します。
  7. すべて保護ブランチを選択します。
  8. GitLab PremiumおよびUltimateでルールを必須にするには、承認が必要1に設定します。
  9. managersグループを承認者として追加します。
  10. 承認ルールを追加を選択します。
  11. 承認の設定までスクロールし、**マージリクエストの承認ルールの編集を防ぎます。**が選択されていることを確認します。
  12. 変更を保存を選択します。

追加すると、Enforce CODEOWNERSルールは次のようになります:

新しい承認ルールが適用されている

ブランチでのコードオーナーの承認を強制する

プロジェクトにいくつかの保護を設定しましたが、プロジェクトの重要なブランチを保護するために、これらの保護を組み合わせる準備ができました:

  • ユーザーは論理グループとサブグループに分類されます。
  • CODEOWNERSファイルは、ファイルタイプとディレクトリの専門家を記述します。
  • あなたの承認ルールは、(GitLab Freeでは推奨され、PremiumおよびUltimateでは必須で)専門家に変更をレビューすることを促します。

excelsiorプロジェクトはリリースブランチ名にセマンティックバージョニングを使用しているため、リリースブランチが1.xおよび1.x.xのパターンに従うことがわかります。これらのブランチに追加されるすべてのコードが専門家によってレビューされ、マネージャーがどの作業をリリースブランチにマージするかについて最終決定を下すことを望んでいます。

一度に1つのブランチに対して保護を作成するのではなく、ワイルドカードブランチルールを設定して複数のブランチを保護します:

  1. 上部のバーで検索または移動先を選択し、Excelsiorを検索します。
  2. Excelsiorという名前のプロジェクトを選択します。
  3. 設定 > リポジトリを選択します。
  4. ブランチルールを展開する。
  5. ブランチルールの追加 > ブランチ名またはパターンを選択します。
  6. ドロップダウンリストから1.*と入力し、**ワイルドカード1.***を選択します。
  7. 直接コミットをプッシュするのではなく、全員にマージリクエストの提出を義務付けるには:
    1. マージを許可セクションで編集を選択し、メンテナーに設定して変更を保存を選択します。
    2. プッシュとマージを許可セクションで編集を選択し、なしに設定して変更を保存を選択します。
    3. 強制プッシュを許可を無効のままにします。
  8. GitLab PremiumおよびUltimateでは、コードオーナーに担当ファイルの変更をレビューさせるには、コードオーナーの承認が必要を切り替えます。
  9. ブランチの表で、Defaultとしてマークされているルールを見つけます。(GitLabのバージョンによっては、このブランチの名前がmainまたはmasterである場合があります。)このブランチの値を、1.*ルールに使用した設定に一致するように設定します。

1.*ブランチはまだ存在しませんが、ルールはすでに適用されています:

main and 1.x are now protected

リリースブランチを作成する

すべてのブランチ保護が整ったので、1.0.0リリースブランチを作成する準備ができました:

  1. 上部のバーで検索または移動先を選択し、Excelsiorを検索します。
  2. Excelsiorという名前のプロジェクトを選択します。
  3. 左側のサイドバーでコード > ブランチを選択します。
  4. 右上隅で、新しいブランチを選択します。名前を1.0.0にします
  5. ブランチを作成を選択します。

ブランチ保護がUIに表示されるようになりました:

  • 左側のサイドバーでコード > ブランチを選択します。ブランチの一覧で、1.0.0ブランチが保護されていると表示されるはずです:

    List of branches, showing 1.0.0 is protected

  • 左側のサイドバーで設定 > リポジトリを選択し、ブランチルールを展開すると、すべての保護ブランチの詳細が表示されます:

    List of protected branches and their protections

おつかれさまでした。エンジニアはそれぞれのブランチで独立して作業でき、1.0.0リリースブランチに提出されるすべてのコードは、専門家によってレビューされます。