チュートリアル組織のセットアップ

GitLabでは、以下の方法で会社のGitLab組織を設定・管理します:

  • グループ、サブグループ、プロジェクトの作成。
  • これらのグループやプロジェクトで、グループメンバーにさまざまなロールを割り当てます。

このチュートリアルでは、あなたは小さなソフトウェア会社の IT 管理者です。この会社は GitLab を使っていて、マーケティング、営業、開発の各部門に分かれています。

マーケティングとセールスの組織はすでにセットアップしました。このチュートリアルでは、ソフトウェア開発者の組織を設定します。この組織には以下の正社員がいます:

  • IT管理者1名あなた。
  • プロダクトマネージャーアレックス・スミス
  • エンジニアリング・マネージャー1名ブレイク・ワン
  • ソフトウェア開発者3名:チャーリー・デヴィ、デヴォン・イヴァノフ、エヴァン・キム。
  • UXデザイナー1名:フランキー・アリ
  • テクニカルライター1名グレイソン・ガルシア

また、コンテンツ・ストラテジストとしてハンター・シルバが在籍。

あなたが作るんです:

  1. ソフトウェア開発者組織。
  2. 作業を管理するグループ、サブグループ、プロジェクト。
  3. グループやプロジェクトにユーザーを追加し、それらのユーザーにロールを割り当てます。
  4. 特定の作業のために組織内のプロジェクトを作成し、そのプロジェクトにユーザーを追加します。

前提条件:

  • 自分で管理する GitLab インスタンスの管理者権限を持っていること。

組織の親グループとサブグループを作成します。

まず、ソフトウェア開発組織全体の親グループとなるグループ「開発」を作成します。

  1. 自分で管理する GitLab インスタンスを開きます。
  2. 左サイドバーの上部にある「新規作成({プラス})」から新規グループ」を選択します。
  3. グループの作成]を選択します。
  4. グループ名] にDevelopmentと入力します。
  5. グループのURLにdevelopment-group と入力します。グループ・パスが使用可能です」というメッセージが表示されます。グループ URL はネームスペースに使用されます。
  6. 可視性のレベルでは、グループを非公開にします。つまり、このグループのサブグループも非公開にする必要があります。
  7. 以下の質問に答えて、GitLab体験をパーソナライズしましょう:
    • ロール] には、[開発チームリーダー] を選択してください。このロールは、メンバーの権限に影響するロールとは異なります。
    • このグループを使用する人]では、[自分の会社またはチーム]を選択します。
    • このグループを何に使用しますか?
  8. GitLab メンバーや他のユーザーをグループに招待しないでください。
  9. グループの作成]を選択します。

GitLabでは、名前空間は関連するプロジェクトを整理する場所を提供します。

組織の親グループを作成しました。次はサブグループを作成します。

組織サブグループの作成

このチュートリアルでは、開発者が以下の作業エリアに編成されていると仮定します:

  • 製品管理。
  • エンジニアリング
  • ユーザー・エクスペリエンス。
    • UXデザイン。
    • テクニカルライティング

この組織構造を反映したサブグループを作成します。

サブグループとプロジェクトには、少なくとも親グループの可視性設定と同程度の制限を設 定する必要があります。たとえば、非公開の親グループと公開のサブグループを持つことはできません。

  1. 左のサイドバーで、Search を選択するか、次のページに進んでください。
  2. 私のグループをすべて表示」を選択します。
  3. 開発者」を選択します。オーナーロールを持っているので、グループ名の横にオーナーラベルが表示されているはずです。
  4. 親グループの概要ページで、右上の「New subgroup」を選択します。
  5. サブグループ名」に、「Product Management」と入力します。
  6. サブグループのスラッグには、自動的にproduct-management が入力されます。このフィールドは変更しないでください。
  7. Visibility level(可視レベル)では、親グループである Development も非公開であるため、Private(非公開)のみを選択できます。
  8. サブグループの作成]を選択します。
  9. 次のサブグループについて繰り返します:
    • Engineering.
    • User Experience.
      • UX Design.
      • Technical Writing.

UXデザインとテクニカルライティングは、ユーザーエクスペリエンスサブグループにネストされたサブグループです。

これで、組織のサブグループが作成されました。次に、組織のユーザーを作成します。

組織のユーザーを作成します。

組織のユーザーを手動で作成します。これらはテストユーザーです。最初のテストユーザー、Alex Smith を作成します:

  1. 左のサイドバーで、Search を選択するか、次のページに進んでください。
  2. Admin Areaを選択します。
  3. 左側のサイドバーで、[概要] > [ユーザー]を選択します。
  4. 新規ユーザーを選択します。
  5. 必須項目を入力します:
    • お名前 Alex Smith
    • ユーザー名 alexsmith
    • メールアドレス alexsmith@example.com
    • 他のフィールドはそのままにしてください。
  6. ユーザーの作成]を選択します。

実際のユーザーの場合、ユーザーの電子メールにリセットリンクが送信され、そのユーザーは初回サインイン時に強制的にパスワードを設定されます。しかし、このユーザーは偽の電子メールを使用したテストユーザーであるため、電子メールによる確認を使用せずにユーザーのパスワードを設定する必要があります。

テストユーザーのパスワード設定

  1. ユーザーを選択します。
  2. 編集]を選択します。
  3. パスワードとパスワード確認フィールドを入力します。
  4. 変更を保存を選択します。

これで最初のテストユーザーが作成されました。他のユーザーについても、これを繰り返します:

名前ユーザー名メール
Blake Wangblakewangblakewang@example.com
Charlie Devicharliedevicharliedevi@example.com
Devon Ivanovdevonivanovdevonivanov@example.com
Evan Kimevankimevankim@example.com
Frankie Alifrankiealifrankieali@example.com
Grayson Garciagraysongarciagraysongarcia@example.com
Hunter Silvahuntersilvahuntersilva@example.com

組織のユーザーを作成しました。次に、これらのユーザーをさまざまなグループやサブグループに追加します。

グループとサブグループへのユーザーの追加

ユーザーをグループに追加すると、グループ内のすべてのプロジェクトにアクセスできるようになります。

まず、すべてのユーザーを親グループのDevelopmentに追加します。

  1. 左のサイドバーで「検索」を選択するか、開発」グループを見つけてください。
  2. 管理 > メンバーを選択します。
  3. メンバーを招待] を選択します。
  4. プロダクトマネージャー、アレックス・スミスのフィールドを入力します。
    • Alexにオーナーロールを与えます。このロールは、グループ内のすべてのサブグループプロジェクトに適用されます。
    • Accessの有効期限は空白のままにしておきます。
  5. 招待]を選択します。
  6. 次のユーザーにもこのプロセスを繰り返します:

    ユーザーロールアクセス有効期限
    ブレイク・ワンメンテナー空白
    チャーリー・デヴィ開発者空白
    デボン・イワノフ開発者空白
    エヴァン・キム開発者空白
    フランキー・アリレポーター空白
    グレイソン・ガルシアレポーター空白
    ハンター・シルバゲスト2025-12-31

    同じロールとアクセス有効期限があれば、複数のユーザーを同時に招待することができます。

すべてが正しく設定されていることを確認します。

DevelopmentグループとすべてのサブグループのGroup Membersページで、これらのグループのメンバーシップを確認します。

ソース] は、ユーザーがこのグループのメンバシップを持つ元です。追加されたメンバは、グループに直接追加したため、直接メンバです。

最大ロール] は、追加されたメンバがこのグループで許可される最高レベルのアクセス権です。この列のドロップダウンリストを使用して、このグループ内の追加メンバーのロールを変更できます。

親グループのメンバーとして追加したすべてのユーザーは、同じロールを持つすべてのサブグループのメンバーにもなります。

メンバシップタイプでサブグループをフィルタリング

サブグループをフィルタリングして、どのユーザーがそのサブグループの直接のメンバーであり、どのメンバーが親グループからそのサブグループのメンバーシップを継承しているかを表示できます。

  1. 左のサイドバーで「検索」を選択するか、開発」グループを見つけてください。
  2. ユーザー・エクスペリエンス]サブグループを選択します。
  3. 左側のサイドバーで、[サブグループ情報] > [メンバー] を選択します。
  4. Membersページで、Filter membersフィールドを選択します。
  5. Membership を選択し、Inherited を選択し、Returnを押します。

これで、そのサブグループのメンバシップを継承しているユーザー エクスペリエンス サブグループ メンバ ーだけが表示されます。

各ユーザーは、組織内のロールに関連付けられたサブグループのメンバになる必要があります。グループとサブグループからユーザーを削除することを決定します。

グループとサブグループからのユーザーの削除

サブグループからメンバーを直接削除することはできません。親グループからのみ削除できます。

親グループに戻り、Alex Smith以外のメンバーを削除してください:

  1. 左のサイドバーで「検索」を選択するか、「検索」から親グループを探します。
  2. 管理 > メンバーを選択します。
  3. 削除するメンバーの行で垂直の省略記号({ellipsis_v})を選択し、[メンバーの削除] を選択します。
  4. メンバーの削除] の確認ボックスで、[サブグループとプロジェクトからも直接ユーザーのメンバシップを削除する] チェック ボックスをオンにします。
  5. メンバの削除] を選択します。

これで、親グループとサブグループには1人のメンバーしかいなくなり、そのメンバーはオーナーロールを持つことになります。

次に、サブグループに直接ユーザーを追加します。

サブグループにユーザーを追加します。

異なるサブグループに直接ユーザーを追加します。

Product Management サブグループにユーザーを追加します。

  1. 左のサイドバーで「検索」を選択するか、開発」グループを見つけてください。
  2. Product Managementサブグループを選択します。
  3. 左側のサイドバーで、[サブグループ情報] > [メンバー] を選択します。

あなたを除くと、Alexがこのサブグループの唯一のメンバーであり、直接のメンバーです。しかし、あなたは彼らがオーナーではなくメンテナーのロールを持つべきだと考えています。

サブグループのユーザーロールの変更

メンバーページで直接ロールを変更することはできません。サブグループ内のロールを変更するには、メンテナーとしてサブグループに招待してください。

  1. メンバーを招待] を選択します。
  2. プロダクトマネージャー、アレックス・スミスのフィールドを入力します。
    • Alexにメンテナーのロールを与えます。
    • Accessの有効期限は空白のままにしておきます。
  3. 招待]を選択します。

以下のメッセージが表示されます:

The following member couldn't be invited
Review the invite errors and try again:
- Alex Smith: Access level should be greater than or equal to Owner inherited membership from group Development

Alexには親グループのメンバシップが継承されているため、サブグループの親グループのロールよりも低いアクセスレベルのサブグループのロールを与えることはできません。

Alexは、組織内でのロールから適切であるため、このサブグループのオーナーとして維持することにします。この招待をキャンセルするには、[キャンセル]を選択します。

Product Management サブグループには、適切なメンバーとロールがあります。次に、Engineering サブグループにユーザーを追加します。

ユーザをEngineeringサブグループに追加します。

Engineeringサブグループにユーザーを招待します。

  1. 左のサイドバーで「検索」を選択するか、開発」グループを見つけてください。
  2. Engineeringサブグループを選択します。
  3. 左サイドバーで、サブグループ情報 > メンバーを選択します。メンバーは、オーナーロールを持つあなたとAlexだけです。これらは継承されたロールです。
  4. メンバーを招待] を選択します。
  5. 以下のメンバーのフィールドを入力します:

    ユーザーロールアクセス有効期限
    ブレイク・ワンメンテナー空白
    チャーリー・デヴィ開発者空白
    デボン・イワノフ開発者空白
    エヴァン・キム開発者空白
  6. 招待]を選択します。

    Blake Wang はこのサブグループで、エンジニアリングマネージャとしての責任に基づき、メンテナーのロールを持っています。3人の開発者は全員 Developer のロールを持っています。これらは直接的なロールです。

  7. このサブグループのメンバーページで直接ロールを変更できます。Blake Wang をこのサブグループのオーナーに変更します。
  8. 開発者グループのメンバーページに戻ります。Engineeringサブグループのメンバが親グループのメンバではないことがわかります。

ユーザーを必要なグループやサブグループに直接追加することで、ユーザーが不必要にグループのメンバーになる問題を避けることができます。異なるグループやプロジェクトへのアクセスをより正確に制御することができます。

ユーザーをユーザー・エクスペリエンス・サブグループに追加します。

ユーザー・エクスペリエンス・サブグループには、さらにネストされた 2 つのサブグループがあります:

  • UXデザイン。
  • テクニカルライティング

ユーザーで言えば、UXデザインはフランキー・アリとハンター・シルバだけ、テクニカルライティングはグレイソン・ガルシアだけです。

User Experienceサブグループに3人のユーザーを追加すると、権限が継承されるため、ネストした両方のサブグループに全員が含まれます。

したがって、これらのユーザーを [ユーザー・エクスペリエンス] サブグループに追加するのではなく、適切なネストされたサブグループに直接追加します。

  1. 左のサイドバーで「検索」を選択するか、開発」グループを見つけてください。
  2. ユーザー・エクスペリエンス]サブグループを選択し、[UXデザイン]サブグループを選択します。
  3. 左側のサイドバーで、[サブグループ情報] > [メンバー] を選択します。現在のメンバーは、あなたと Alex Smith だけです。これらは継承されたロールです。
  4. メンバーを招待] を選択します。
  5. フィールドに入力し、次のメンバーの招待を選択します:

    ユーザーロールアクセス有効期限
    フランキー・アリメンテナー空白
    ハンター・シルバゲスト2025-12-31
  6. テクニカル・ライティング・サブグループも同様です:

    ユーザーロールアクセス有効期限
    グレイソン・ガルシアメンテナー空白

ユーザーを適切なネストされたサブグループに追加しました。Grayson Garcia もユーザーエクスペリエンスサブグループに追加する必要があります。

ユーザーを他のサブグループに追加します。

テクニカルライティングサブグループでのロールはそのままに、グレーソンを特定のロールとしてユーザーエクスペリエンスサブグループに追加することができます。

  1. ユーザーエクスペリエンスサブグループに移動します。
  2. 左側のサイドバーで、[サブグループ情報] > [メンバー] を選択します。現在のメンバーは、あなたと Alex Smith だけです。これらは継承されたロールです。
  3. メンバーを招待] を選択します。
  4. Grayson Garciaを開発者として招待します。これは、Technical Writingサブグループのメンテナーよりも低い権限のロールです。

これは、Grayson Garciaがユーザーエクスペリエンスサブグループで不必要に高い権限を持たないことを意味します。

ただし、権限が継承されるため、Grayson Garcia をユーザー エクスペリエンス サブグループに追加すると、UX デザイン ネスト サブグループにも開発者として追加されます。

グループとサブグループの継承権限に注意してください。ユーザーを最小限のグループとサブグループに追加して、不注意でユーザーを必要のないグループに追加する可能性を最小限に抑えます。

  1. ユーザー・エクスペリエンスのサブグループ・メンバーページに移動します。
  2. フランキー・アリとハンター・シルバをレポーターとして追加します。ハンターにも同じ有効期限を設定します。
  3. テクニカルライティングのネストサブグループへ。

フランキー・アリとハンター・シルバは、権限の継承によりテクニカルライティングサブグループのメンバーになりました。

グループ、サブグループ、メンバーの設定が完了しました。

次に、メンバーが作業するためのプロジェクトをグループの1つに作成します。

プロジェクトの作成

ここで、組織の特定のメンバーが作業する必要がある仕事があり、その仕事は組織全体のものであるとします。その作業を整理するために、開発者グループにプロジェクトを作成し、そのプロジェクトにさまざまなユーザーを追加します。

  1. 左のサイドバーで「検索」を選択するか、開発」グループを見つけてください。
  2. Create new({plus})とNew project/repositoryを選択します。
  3. 空白プロジェクトの作成」を選択します。
  4. プロジェクトの詳細を入力します:
    • プロジェクト名」フィールドに、プロジェクト名として「Release 2.0 」を入力します。
    • Project slugフィールドはプロジェクト名に基づいているので、そのままにしておきます。
    • ユーザーによるプロジェクトの表示やアクセス権を変更するには、「表示レベル」を変更します。親グループが非公開であるため、プロジェクトも非公開にするしかありません。
    • Git リポジトリが初期化され、デフォルトブランチを持ち、クローンできるようにREADME ファイルを作成するには、Initialize repository with a READMEチェックボックスを選択します。
    • プロジェクトのソースコードに既知のセキュリティ脆弱性がないかどうかを分析するには、静的アプリケーション・セキュリティ・テストを有効にする(Enable Static Application Security Testing(SAST))チェックボックスを選択します。
  5. Create projectを選択します。

これで、親グループにプロジェクトが作成されました。

このプロジェクトで、「管理 > メンバー」を開きます。

親グループの既存メンバー(あなたとAlex)は、すでにこのプロジェクトのメンバーです。なぜなら、プロジェクトがグループに属している場合、プロジェクトのメンバーはグループからロールを継承するからです。

このプロジェクトに参加する必要があるユーザーは他にもいます。プロジェクトに直接ユーザーを追加します。

プロジェクトと親グループにユーザーを追加します。

  1. 左側のサイドバーで、[検索]または[移動]を選択し、リリース2.0プロジェクトを見つけます。
  2. 左側のサイドバーで、[管理] > [メンバー]を選択します。
  3. メンバーを招待]を選択します。以下のユーザーを招待します:

    ユーザーロールアクセス有効期限
    チャーリー・デヴィメンテナー空白
    フランキー・アリメンテナー空白
    グレイソン・ガルシアメンテナー空白
  4. 招待]を選択します。
  5. これらのユーザーをプロジェクトに直接追加したので、必要に応じてプロジェクトのメンバーページでロールを変更することができます。試しに Grayson Garcia のロールをDeveloperに変更してみましょう。
  6. 開発者グループのメンバーページに移動します。プロジェクトが親グループに属しているにもかかわらず、プロジェクトに追加したばかりのユーザーがいません。
  7. 同じユーザーをGuestロールで親グループに直接追加します。このページで直接ロールを変更できます。Frankieのロールをレポーターに変更します。
  8. リリース2.0のプロジェクトメンバーページに戻ります。メンバーのプロジェクトのロールは、2人のメンテナーと1人の開発者のままです。

サブグループのメンバーである3人のユーザーを親グループのプロジェクトに追加し、それらのユーザーにプロジェクトと親グループの特定のロールを与えることに成功しました。

プロジェクト内の個々の機能の表示/非表示の変更

ロールを割り当てることで、グループやプロジェクトへのアクセスや権限を制御する方法はすでに説明しました。

また、プロジェクト内の個々の機能の可視性を変更することもできます。グループにはできません。

  1. 左側のサイドバーで、[検索]または[移動]を選択し、リリース2.0プロジェクトを見つけます。
  2. 設定] > [全般]を選択します。
  3. 可視性]、[プロジェクト機能]、[権限]を展開します。
  4. プロジェクトの可視性では、公開ディレクトリのプロジェクトを誰が見ることができるかを設定します。親グループは非公開なので、Private しか選択できません。

各機能のトグルを使って、機能のオン/オフ、アクセス権の変更を行います。

  1. イシューの場合、機能はオンのままにしておきます。
  2. リポジトリセクションで
    • マージリクエストと フォークをオンのままにします。
    • Git Large File Storage(LFS)CI/CDをオフにします。
  3. アナリティクスセキュリティとコンプライアンスWikiスニペットパッケージ・レジストリについては、これらの機能をオンのままにしておいてください。
  4. MonitorEnvironments機能フラグInfrastructure、およびReleasesはオフにします。
  5. 電子メール通知を無効にする]チェックボックスを選択します。他のチェックボックスはそのままにしておきます。
  6. 変更を保存を選択します。

プロジェクトで個々の機能の可視性を変更しました。これで、ロールに関係なく、このプロジェクトのメンバーは、オフにした機能にアクセスできなくなります。

このチュートリアルでは、組織の構造とワークフローを反映するために、グループ、サブグループ、プロジェクト、メンバーにロールを正確に設定しました。