こんにちは。クラウド事業部CI/CDサービスメニューチームの菅家です。
GitLabのラベルについて、イシューやマージリクエストなどの整理に便利な機能でありますが、
ドキュメントを読んでみると、まだまだ自分が使えていない機能があり。
今回は公式ドキュメントを整理しながら、実際に触りつつ、ラベルについて理解を深めていこうと思います。
こちらの公式ドキュメントと日本語マニュアルを参考に進めていきます。
本記事の引用についてはすべてこちらのページから取得しております。
docs.gitlab.com
ラベルとは
機能概要
ラベルとは、
GitLab でイシューやマージリクエスト、エピックが増えるにつれて、それらのアイテムを追跡するのが難しくなってきます。特に、あなたの組織が数人から数百人、数千人と大きくなるにつれて。ラベルを使えば、作業を整理してタグ付けし、興味のある作業項目を追跡することができます。
ラベルでできることとしては以下になります。
bug、feature request、docsのような色と説明的なタイトルを使用して、エピック、イシュー、マージリクエストを分類します。
エピック、イシュー、マージリクエストを動的にフィルタリングし、管理します。
イシュー、マージリクエスト、エピック、イシューボードのリストを検索できます。
はてなブログでいうところのタグに近い機能になります。
イシュー(or インシデント)、マージリクエスト、エピックに割り当てることで、これらを分類・整理することができ、検索やフィルタリングに役立つ機能となります。
どんなラベルがある?
ドキュメントからキーワードを探してみると以下のようなキーワードが見つかります。
- Project labels(プロジェクトラベル)
- Group labels(グループラベル)
- Prioritized Labels(優先ラベル)
- Scoped Labels(スコープ付きラベル)
それぞれどういったものなのか確認していきます。
プロジェクトラベル、グループラベル
ラベルの種類となります。ラベルはラベルの所属(持ち主)がグループなのかプロジェクトなのかといったところでこの2つに分類することができます。
プロジェクトラベル
プロジェクト ラベルは、そのプロジェクト内の課題とマージ リクエストにのみ割り当てることができます。
グループラベル
グループ ラベルは、選択したグループまたはそのサブグループ内の任意のプロジェクトの課題、マージ リクエスト、およびエピックに割り当てることができます。
ラベルの新規作成
①ラベルを作成したい任意のグループやプロジェクトに移動します。
②右のメニューから「管理>ラベル」を選択します。
③「新しいラベル」をクリックします。
④任意のラベル名、説明、ラベルの色を選択し、「ラベルを作成」をクリックします。
ラベルの紐づけ
ラベルはエピック、イシュー(インシデント)、マージリクエストに対して複数紐づけることができます。
■エピック、イシュー、マージリクエスト新規作成時に紐づける
①エピック、イシュー、マージリクエスト新規作成時に「ラベル」の項目があるので、プルダウンから選択して設定します。(複数選択可)
■既存のエピック、イシュー、マージリクエストに紐づける
①任意のエピック、イシュー、マージリクエストを開きます。
②画面右の項目から「ラベル」を探し、「編集」の文字をクリックします。
③プルダウンから選択して設定します。(複数選択可)
優先ラベル、スコープ付きラベル
グループラベルやプロジェクトラベルとはまた別のものとなり、ラベルをより便利に使う機能となります。
優先ラベル
作成したラベルに優先度をつける機能となります。
任意のラベルをお気に入り設定し、お気に入り間で並び順をつけることで優先度設定していきます。
ラベルの優先度の設定方法
①左のメニューから「管理>ラベル」をクリック。
②ラベル一覧が表示されます。
③ラベル名右に★アイコンがあるため、任意のラベルをクリックしてお気に入り登録します。
マウスカーソルをあてると「優先順位を付ける」の吹き出しが表示されます。
④同じ画面で★をクリックしたラベルが「その他のラベル>優先ラベル」に移動します。
⑤ラベルをドラッグアンドドロップして並びを入れ替え、優先度の高い順から上に並べます。
イシューの一覧からラベルの優先度で並び替える
作成したラベルは「計画>イシュー」のイシュー一覧から、イシューの並べ替えに使用することができます。
優先度降順で並び替えてみました。
スコープ付きラベル
この機能を使用するにはPremiumまたはUltimateのライセンスが必要となります。
スコープ付きラベル
チームでは、スコープ付きラベルを使用して、イシュー、マージリクエスト、エピックに相互に排他的なラベルで注釈を付けることができます。特定のラベルを一緒に使用できないようにすることで、より複雑なワークフローを作成できます。
スコープ付きラベルは、ラベルに値を付けたい、もう1つだけ意味を持たせたい、特定のラベルを同時に使えないようにしたいというようなときに使用できます。
例えば「重要度」ラベルを作って、「高」「中」「低」で重みづけするなどです。(重要度::高、重要度::中、重要度::低)
スコープ付きラベルとして「重要度:高」ラベルと「重要度:中」ラベルを作成すると、これらのラベルは同じエピック、イシュー、マージリクエストにつけることはできません。
実際に作って理解していきましょう。
スコープ付きラベルの設定方法
①まず通常のラベルと同様に「管理>ラベル>新しいラベル」から作成します。
②スコープ付きラベルの場合、「タイトル」にてラベル名をつける時に「::」を付け「key::value」の文法で記載します。
keyもvalueも入れる文字は任意の文字でよいです。
今回は「Scope1::Level1」としました。
③「ラベルを作成」ボタンをクリックします。
作成されたスコープ付きラベルの確認
作成したスコープ付きラベルを一覧から見ると以下のようになります。
(追加で「Scope1::Level2」も作成しました)
入れ子も可能
スコープ付きラベルですが、「::」を増やして入れ子構造にすることもできます。
「Scope1::Level1::A」などです。
この場合「Scope1::Level1」がKey、「A」がvalueとなります。
同じキーを持つラベルは設定できない
エピック、イシュー、マージリクエストに対してラベルは複数設定できますが、
複数設定する場合にスコープ付きラベルでは注意が必要です。
keyが同じであるラベルは同じエピック、イシュー、マージリクエストに設定することができません。
今回このような形でラベルを作成しました。
このラベル一覧のkey、valueを整理すると以下のようになります。
Key | Value |
---|---|
Scope1 | Level1 |
Scope1 | Level2 |
Scope2 | Level1 |
Scope2 | Level2 |
Scope1::Level1 | A |
Scope1::Level1 | B |
「Scope1::Level1」「Scope2::Level1」は異なるキーのため同じエピック、イシュー、マージリクエストに対して設定できます。
「Scope1::Level1」と「Scope1::Level2」は同じキーを持つため、同じエピック、イシュー、マージリクエストに対して設定できません。
設定時に選択できても、後から選択したほうに上書きされます。
ここからは検証ベースとなります。
同じキーの別の値を使用しなければよく「Scope1::Level2」と「Scope1::Level1::A」は同じエピック、イシュー、マージリクエストに対して設定することができます。
設定の際、入れ子にはできますが、階層構造とは異なるようです。
さいごに
弊社はGitLabオープンパートナー認定を受けております。 また以下のようにCI/CDの導入を支援するサービスも行っているので、何かご相談したいことがあればお気軽にご連絡ください。