株式会社ネットワールドのエンジニアがお届けする技術情報ブログです。
各製品のエキスパートたちが旬なトピックをご紹介します。

GitとCI/CDに関する知識ゼロのSEが、GitLabでグループとサブグループを作ってメンバーを追加するだけの記事

2022/05/06 少しでも見やすく…と思い、ブログのスタイルを一部更新致しました。
2022/05/20 GitLabのデモ動画を作りました!このブログの末尾にリンクを張ったのでよろしければご視聴ください。 
2022/08/23 一部の図の背景が透過されていて見づらかったので、修正致しました。 

皆様こんにちは。普段はセキュリティ商材を担当しているSEの小池と申します。

私の普段の業務はGitやCI/CDに無縁なのですが、会社から頂戴した「GitLabの技術ブログ書いておいて」というミッションを達成すべく、今回も頑張ってGitLabの技術をちまちま習得してまいります。
今回は前回作成したユーザーを使いつつ、とりあえずグループとサブグループを作って、メンバーを追加しようと思います

このブログの内容は以下の通りです。

本記事の対象の方

  • 前回のブログ (こちら) でGitLabに検証用ユーザーを作成し、その続きのアクションをお探しの方。
  • GitLabでグループを作成したい方。
  • GitLabでサブグループを作りたい方。
  • GItLabでユーザーをグループに所属させてみたい方。
  • GitLabのグループとロールについて情報収集している方。

今回のブログのゴール

このブログのゴールはこちらです!ちょっと多めです…。


今回のゴール
  • GitLabでグループとサブグループを作成する。
  • 作ったグループにメンバーを所属させて、ロールを付与する。
  • (余裕があれば) GitLabのグループの概要を理解する。
  • (余裕があれば) とりあえずGitLabには複数のロールがあることを認識する。

このブログをお読みいただくにあたっての事前ご連絡事項

  • 本記事はGitLabがどういった製品なのかの説明はしておりません。製品説明につきましては弊社の製品ページ (こちら) をご参照ください。
  • 本記事はGitやCI/CDに関する知識ゼロのSEによるなんちゃって記事です。GitLabのディープな使用法についてはGitLabの公式オンラインドキュメント (こちら) をご参照ください。
  • 本記事は前回の続きとして、既に検証用にGitLabユーザーをいくつか存在していることを前提としています。前回の記事はこちらになりますので、もしよろしければご参照ください。

グループやロールに関する基本的な仕様説明

グループを作成する前に、グループ、サブグループ 等に関する基本的な仕様をQ&A形式で書き連ねます。

Q1. GitLabのグループって何?

GitLabはグループを使用することにより1つ以上のプロジェクトをまとめて管理できます

Q2. グループは入れ子にできる?

グループは入れ子にできます。GitLab Docsにおいては、グループの配下に作成したグループを "サブグループ" と呼んでいます。
Subgroups | GitLab

Q3. グループの公開範囲を限定できる?

公開範囲はグループのは "可視性レベル" という設定項目で設定可能です。
Project and group visibility | GitLab
具体的には プライベート内部パブリック のいずれかを設定する必要があります。
"可視性レベル" は簡単に言うと、"誰がこのグループを見える状態にするか" の設定です。

  • プライベート:グループとそのプロジェクトはメンバーのみが閲覧できます。
  • 内部:グループと内部プロジェクトは、外部ユーザーを除くすべてのログインユーザーが表示できます。
  • パブリック:グループおよび公開プロジェクトは認証無しで閲覧することができます。(オンプレ環境の構成次第では外部からアクセスできない場合があります。)

"可視性レベル" はあくまでグループの存在が 見える/見えない に関する設定であり、グループ内でプロジェクトの作成を許可する等の権限 (Role) の設定とは異なります。
また、先述のようにグループの中にサブグループを作成している場合、サブグループに設定できる可視性レベルは、親グループに設定された可視性レベルと同じかそれ以下の可視性レベルのみです。
親グループとサブグループに設定可能な可視性レベルは以下の通りです。

親グループの可視性レベル サブグループで設定できる可視性レベル
パブリック パブリック
内部
プライベート
内部 内部
プライベート
プライベート プライベート

Q4. グループに設定した可視性レベルは配下のプロジェクトの可視性に影響する?

はい、グループの可視性レベルは配下のプロジェクトの可視性に影響します
まず前提として、プロジェクトにも可視性レベルを設定する必要があります。
そのうえで、グループ もしくは サブグループ配下にプロジェクトを作成する際に選択できる可視性レベルは、その直上のグループの可視性レベルと同じかそれ以下の可視性レベルのみです。

直上のグループの可視性レベル 配下のプロジェクトで設定な可視性レベル
パブリック パブリック
内部
プライベート
内部 内部
プライベート
プライベート プライベート

Q5. ユーザーによるグループの作成を制限できる?

できます。なお、厳密にいうと、グループ作成の制限とサブグループの作成の制限は異なるところで設定します紛らわしい…。
まず、グループ (サブグループじゃない) を作成するには、ユーザー設定の "アクセス" の中にある "Can create group" にチェックが入っている必要があります。
逆に言うと、この "Can create group" にチェックが入っているユーザーであれば、管理者ユーザーとか関係なく誰でもグループを作成できます。

今サインインしているユーザーがグループ (サブグループじゃない) を作成できるのか否かを確認したい場合は、[Menu] > [Group] の配下に [グループを作成] の表示があるかないかを確認してください。
"Can create group" が有効のユーザーであれば [グループを作成] が表示されていて、無効のユーザーであればそれが表示されていません。

次にサブグループを作成するには、親グループとなるグループにおいて [設定]>[一般]>[パーミッション、LFS、2FA] の中にある "サブグループの作成を許可" に指定されたロールと同じか、それより強いロールを持っている必要があります。(下図参照。)
上記項目はデフォルトでは "メンテナー" となっていますが、変更することは可能です。
ロールの強弱については下のGitLab Docsをご参照ください。
Permissions and roles | GitLab

Q6. ユーザーはグループ所属にさせるの?

GItLab管理者を除く各ユーザーは、グループのメンバーになるか、サブグループのメンバーになるか、もしくは直接個別のプロジェクトのメンバーになることで、プロジェクトに参加できます
したがって、必ずしもグループ や サブグループに所属になる必要はありません。
ユーザーは複数のグループ 及び 複数のプロジェクトに所属できます。
親グループのメンバーであるユーザーは、以降追加されたサブグループ 及び プロジェクトに対して親グループと同等のロール (Max Role) がデフォルトで付与されます。
本ブログの "サブグループを作成する" で実際にサブグループ作成後にメンバーが継承されていることを確認しているのでご参考までに。

Q7. 各ロールの詳細な内容を知りたい!

以下のGitLab Docsをご参照ください。
Permissions and roles | GitLab

グループを作成する

実際にGitLabを本番運用する際は、グループをどういう括りで作成するか、ユーザーによるグループ作成を許可するか、ユーザーをグループ所属にするかプロジェクト所属にするか…といったことを事前に検討したほうが良いでしょう。
ですが、GitもCI/CDもよくわかっていない私にはそんなものは関係ありません、とりあえず検証用のグループを作ります
なお、ここで紹介する方法はグループの作り方です。サブグループを作りたい方は "サブグループを作成する" をご参照ください。

まず、グループを作成可能なユーザーでサインインします。
グループが作成可能なユーザーについては前述の "Q5. ユーザーによるグループの作成を制限できる?" をご参照ください。

サインイン後、[menu]>[Groups]>[グループを作成]をクリックします。

グループを新規作成するか、インポートするかを選択します。
今回は新規でグループ作成したいので[グループを作成]で進めます。

各項目を設定します。

"Now, personalize your GitLab experience" は書いてある通りなのですが、これはグループに関する設定というより情報です。
役割とか書いてあるのでなんとなく身構えてしまうのですが、"役割"、"Who will be using this group?"、"What will you use this group for?" で何を設定しても、グループの設定に影響は特にないです。
この3項目は任意に設定してください。

"Invite Members" でメンバーを追加できます
ここで追加すると自動で Developer のロールが付与された状態になります。
今回はここでは追加せずに先に進め、あとでメンバーを追加しようと思います。
設定が完了したら [グループを作成] をクリックします。

以上でグループの作成は完了です。

メンバーをグループに追加する

試しに作ったグループ PrivateGroup01 にメンバーを追加してみましょう
PrivateGroup01の画面 (グループ作成直後の画面) から、[Group information]>[メンバー]をクリックします。

メンバーの追加画面になるので、任意のメンバーを追加します。

  • GitLabメンバーまたはメールアドレス:GitLabに既に存在しているユーザーを追加する場合は、GitLabでのユーザー名を入力します。そうでない場合は、直接追加したい方のメールアドレスを入力します。
  • Select a role:このユーザーの役割 (という名の権限セット) です。各ロールに関する情報はこちらのGitLab Docsをご参照ください。ユーザーに必要なロールを設定してください。なお、後で変更することも可能です。
  • アクセス有効期限:読んで字のごとく、このグループへのアクセス期限の設定です。設定なしの場合、無期限になります。

今回は、前回の記事 (こちら) で既にいくつかのGitLabユーザーを作成済なので、それをこのグループに割り当ててみました。
設定したら [招待] をクリックします。

今回のようにGtiLabに既存のユーザーを追加していくと、以下のような感じになります。

以上でメンバーの追加は完了です。

サブグループを作成する

最後にサブグループを作成してみましょう。
先ほどグループ "PrivateGroup01" を作成したので、この配下にサブグループ "SubGroup0101" を作成します
まず、GitLabにグループ "PrivateGroup01" に対して "Mainteiner" 以上のロールを持つユーザーでサインインします。

[Menu]>[Groups]>[所属グループ]をクリックします。

所属しているグループ一覧が表示されるので、その中で "PrivateGroup01" をクリックします。

[新規サブグループ] をクリックします。

今回は新規のサブグループを作成したいので [グループを作成] をクリックします。

各項目を設定します。

  • グループ名:サブグループ名です。
  • 可視性レベル:このサブグループの公開範囲を決める設定です。親グループと同等かそれ以下のレベルしか指定できません。

この例の場合、親グループ (PrivateGroup01) の可視性レベルが "プライベート" なので、必然的にこのサブグループの可視性レベルは "プライベート" 一択になります。

親グループの作成時と同じように、グループの情報とメンバーの追加画面になるので、任意に指定します。
完了したら、[グループを作成] をクリックします。

以上の手順でサブグループが作成されます。

作成したサブグループ (SubGroup0101) に、親グループ (PrivateGroup01) のメンバーが継承されていることを確認してみます。
サブグループ作成直後の画面で、[Subgroup information]>[メンバー]をクリックします。

メンバー一覧が表示されます。
親グループに所属しているメンバーがそのまま継承され、Max Roleと有効期限も継承されていることが分かるかと存じます。

今回ご紹介する内容は以上となります!

最後に

この度はGitもCI/CDもよくわかっていないど素人SEによるGitLab検証ブログをお読みいただき、誠にありがとうございます。
このブログの目標は以下のとおりでしたが、皆さまはいかがでしたでしょうか。


今回のゴール
  • GitLabでグループとサブグループを作成する。
  • 作ったグループにメンバーを所属させて、ロールを付与する。
  • (余裕があれば) GitLabのグループの概要を理解する。
  • (余裕があれば) とりあえずGitLabには複数のロールがあることを認識する。

今回はグループとサブグループを作成し、メンバーを追加するだけの簡単な内容…だったのですが、いよいよGitとしての機能に必要なロールやら可視性レベル等、考慮する必要がある設定が出てきました。
できるだけGitLabの概要を簡単にお伝えするためだいぶ端折ったのですが、それでも文字が多い回となってしまいました。反省します…。
今後もGitLabの簡単な使い方をできるだけ簡単にちまちまご紹介出来ればと存じます。
この記事が「なんかよくわからんけどGitLabをとりあえず触りたい!」という方のお力になれば幸甚にございます。


GitLabに関するお問い合わせは、以下のフォームからお願い致します。
GitLab製品 お問い合わせ

今までのGitLabの検証ブログはこちらです。
GitLab カテゴリーの記事一覧 - ネットワールド らぼ

GitLab操作デモ動画 (基本編) を作ってみました。(音声の録音は自宅でiPhoneのボイスメモ使うという超低クオリティですが…。)
つたない内容ではありますが、ご興味がおありでしたら是非ご視聴いただければと存じます。

www.youtube.com