インサイト

GitLab Ultimate12.0から導入されました

プロジェクトにとって重要なインサイトを設定し、トリアージ衛生、一定期間内に作成/クローズされたイシュー、マージリクエストの平均マージ時間などのデータを調査します。

Insights example bar chart

注:この機能はグループレベルでも利用できます。

プロジェクトのインサイトを見る

左サイドバーの「Analytics > Insights」リンクをクリックすると、プロジェクトのインサイトにアクセスできます:

Insights sidebar link

インサイトの設定

インサイトはプロジェクト内の.gitlab/insights.yml という YAML ファイルを使って設定します。このファイルはプロジェクトのインサイトページで使われます。

このファイルの内容については、後述のWriting your.gitlab/insights.yml を参照してください。

注:一度設定ファイルを作成すれば、プロジェクトのグループにも使用できます。
注:プロジェクトに設定ファイルがない場合、可能であればグループの設定を使用しようとします。 グループに設定がない場合、デフォルトの設定が使用されます。

権限

プロジェクトのインサイトを見ることができます。

注意: アクセス権のないイシューやマージリクエストは、インサイトチャートから除外されます。

グループ権限表も参照してください。

書き方.gitlab/insights.yml

.gitlab/insights.yml ファイルは、プロジェクトまたはグループの各インサイトページに表示されるインサイト チャートの構造と順序を定義します。

各ページには、一意のキーと、フェッチして表示するChartのコレクションがあります。

例えば、1ページに1つのChartを表示するInsightsの定義です:

bugsCharts:
  title: "Charts for bugs"
  charts:
    - title: "Monthly bugs created"
      description: "Open bugs created per month"
      type: bar
      query:
        issuable_type: issue
        issuable_state: opened
        filter_labels:
          - bug
        group_by: month
        period_limit: 24

各チャート定義は、キーと値のペアで構成されるハッシュでできています。

例えば、シングルチャートの定義です:

- title: "Monthly bugs created"
  description: "Open bugs created per month"
  type: bar
  query:
    issuable_type: issue
    issuable_state: opened
    filter_labels:
      - bug
    group_by: month
    period_limit: 24

設定パラメータ

Chartは、Chartの動作を定義するパラメータのリストとして定義されます。

次の表は、Chartで使用可能なパラメータの一覧です:

キーワード 説明
title Chartのタイトル。 Insightsページに表示されます。
description 各チャートの説明。 該当するチャートの上に表示されます。
type Chartの種類:bar,line またはstacked-bar.
query イシュー/マージリクエストがChartの一部となるための条件を定義するハッシュです。

パラメータの詳細

インサイトチャートの設定に使用するパラメータについて、以下に詳しく説明します。

title

title は、インサイトページに表示されるChartのタイトルです。 例えば、以下のようになります:

monthlyBugsCreated:
  title: "Monthly bugs created"

description

description テキストは、Chartの上、タイトルの下に表示されます。例えば、Chartに関する特別な詳細を示すために使用されます:

monthlyBugsCreated:
  title: "Monthly bugs created"
  description: "Open bugs created per month"

type

type はChart Typeです。

使用例:

monthlyBugsCreated:
  title: "Monthly bugs created"
  type: bar

サポートされている値は以下の通りです:

名称
bar Insights example bar chart
bar (時系列、すなわちgroup_by を使用した場合)。 Insights example bar time series chart
line Insights example stacked bar chart
stacked-bar Insights example stacked bar chart

query

query では、イシュー/マージリクエストをチャートの一部にするための条件を定義できます。

使用例:

monthlyBugsCreated:
  title: "Monthly bugs created"
  description: "Open bugs created per month"
  type: bar
  query:
    issuable_type: issue
    issuable_state: opened
    filter_labels:
      - bug
    collection_labels:
      - S1
      - S2
      - S3
      - S4
    group_by: week
    period_limit: 104

query.issuable_type

Chartを作成したい「発行可能」のタイプを定義します。

サポートされている値は以下の通りです:

  • issueチャートはイシューのデータを表示します。
  • merge_request: チャートはマージリクエストのデータを表示します。

query.issuable_state

クエリされた「発行可能」の状態でフィルタリングします。

デフォルトでは、opened 状態フィルタが適用されます。

サポートされている値は以下の通りです:

  • opened: 未解決のイシュー / マージリクエスト。
  • closed: Closed 未解決のイシュー / マージリクエスト。
  • locked: ディスカッションがロックされたイシュー/マージリクエスト。
  • mergedマージリクエストをマージしました。
  • all: 全州のイシュー/マージリクエスト

query.filter_labels

クエリされた “issueable “に適用されるラベルでフィルタリングします。

デフォルトでは、ラベルフィルターは適用されません。 発行可能」を選択するためには、定義されたラベルがすべて適用されている必要があります。

使用例:

monthlyBugsCreated:
  title: "Monthly regressions created"
  type: bar
  query:
    issuable_type: issue
    issuable_state: opened
    filter_labels:
      - bug
      - regression

query.collection_labels

設定されたラベルによる「発行可能」グループ。

デフォルトでは、グループ化は行われません。 このキーワードを使用する場合は、typeline またはstacked-barのいずれかに設定する必要があります。

使用例:

weeklyBugsBySeverity:
  title: "Weekly bugs by severity"
  type: stacked-bar
  query:
    issuable_type: issue
    issuable_state: opened
    filter_labels:
      - bug
    collection_labels:
      - S1
      - S2
      - S3
      - S4

query.group_by

ChartのX軸を定義します。

サポートされている値は以下の通りです:

  • day1日あたりのグループデータ。
  • week週ごとのグループデータ。
  • month1ヶ月あたりのグループデータ。

query.period_limit

発行可能物」がどこまで過去にクエリされるかを定義します。

単位は定義したquery.group_by に関連しています。例えばquery.group_by: 'day' を定義した場合、query.period_limit: 365 は「過去 365 日分のデータを収集し表示する」という意味になります。

デフォルトでは、定義したquery.group_byに応じてデフォルト値が適用されます。

query.group_by デフォルト値
day 30
week 4
month 12

query.period_field

issables “のグループに使用されるタイムスタンプフィールドを定義します。

サポートされている値は以下の通りです:

  • created_at (デフォルト): created_atフィールドをcreated_at 使用してデータを created_atグループ化します。
  • closed_at: closed_atフィールドをclosed_at使用した closed_atグループclosed_atデータ closed_at(イシューのみ)。
  • フィールドをmerged_at使用した merged_atグループmerged_atデータ merged_at(マージリクエストのみ)。

period_field は自動的に設定されます:

  • closed_at もしquery.issuable_stateclosed
  • merged_at もしquery.issuable_statemerged
  • created_at その他

projects

GitLab Ultimate12.4で導入されました

issueables」のクエリ元を制限することができます:

  • .gitlab/insights.ymlグループのインサイトに使用されている場合、projectsを使用すると、クエリするプロジェク トを制限することができます。デフォルトでは、グループ配下のすべてのプロジェクトが使用されます。
  • プロジェクトのインサイトに.gitlab/insights.yml を使用した場合、他のプロジェクトを指定しても結果は得られません。 デフォルトでは、プロジェクトそのものが使用されます。

projects.only

projects.only オプションは、「issueables」をクエリするプロジェクトを指定します。

ここに記載されているプロジェクトは、以下の場合には無視されます:

  • 存在しません。
  • 現在のユーザーには、それらを読むのに十分な権限がありません。
  • 彼らはグループの外にいます。

次のinsights.yml の例では、クエリが使用されるプロジェクトを指定しています。 この例は、グループのインサイトを設定するときに便利です:

monthlyBugsCreated:
  title: "Monthly bugs created"
  description: "Open bugs created per month"
  type: bar
  query:
    issuable_type: issue
    issuable_state: opened
    filter_labels:
      - bug
  projects:
    only:
      - 3                         # You can use the project ID
      - groupA/projectA           # Or full project path
      - groupA/subgroupB/projectC # Projects in subgroups can be included
      - groupB/project            # Projects outside the group will be ignored

完成例

.projectsOnly: &projectsOnly
  projects:
    only:
      - 3
      - groupA/projectA
      - groupA/subgroupB/projectC

bugsCharts:
  title: "Charts for bugs"
  charts:
    - title: "Monthly bugs created"
      description: "Open bugs created per month"
      type: bar
      <<: *projectsOnly
      query:
        issuable_type: issue
        issuable_state: opened
        filter_labels:
          - bug
        group_by: month
        period_limit: 24

    - title: "Weekly bugs by severity"
      type: stacked-bar
      <<: *projectsOnly
      query:
        issuable_type: issue
        issuable_state: opened
        filter_labels:
          - bug
        collection_labels:
          - S1
          - S2
          - S3
          - S4
        group_by: week
        period_limit: 104

    - title: "Monthly bugs by team"
      type: line
      <<: *projectsOnly
      query:
        issuable_type: merge_request
        issuable_state: opened
        filter_labels:
          - bug
        collection_labels:
          - Manage
          - Plan
          - Create
        group_by: month
        period_limit: 24