説明テンプレート

イシューや マージリクエストの説明として使用するテンプレートを定義することができます。

これらのテンプレートはプロジェクト、グループ、インスタンスで定義できます。プロジェクトは、より高いレベルで定義されたテンプレートを継承します。

これらのテンプレートを使用するとよいでしょう:

  • 例えば、機能提案、機能改善、バグレポートなど、ワークフローのさまざまなステージで使用できます。
  • 特定のプロジェクトのイシューやマージリクエストごとに、レイアウトを統一します。
  • サービスデスクのメールテンプレート

説明テンプレートが機能するためには、以下のようにする必要があります:

  • .md という拡張子で保存されている必要があります。
  • プロジェクトのリポジトリの.gitlab/issue_templates または.gitlab/merge_request_templates ディレクトリに保存されます。
  • デフォルトブランチに存在すること。

イシューテンプレートの作成

リポジトリの.gitlab/issue_templates/ ディレクトリ内部に新しい Markdown (.md) ファイルを作成します。

イシュー記述テンプレートを作成します:

  1. 左のサイドバーで「検索」または「移動」を選択してあなたのプロジェクトを検索します。
  2. Code > Repositoryを選択します。
  3. デフォルトブランチの横にある を選択します。
  4. 新規ファイルを選択します。
  5. デフォルトのブランチの隣にある[ファイル名]テキストボックスに「.gitlab/issue_templates/mytemplate.md 」と入力します。mytemplate はイシュー・テンプレートの名前です。
  6. デフォルトブランチにコミットします。

この作業が正しく行われたかどうかを確認するには、新しいイシューを作成し、テンプレートを選択するドロップダウンリストで説明文のテンプレートが見つかるかどうかを確認してください。

マージリクエストテンプレートの作成

イシューテンプレートと同様に、リポジトリの.gitlab/merge_request_templates/ ディレクトリ内部に新しい Markdown (.md) ファイルを作成します。イシューテンプレートとは異なり、マージリクエストにはコミットメッセージの内容やブランチ名に依存する継承ルールが追加されます。

プロジェクトのマージリクエスト記述テンプレートを作成するには、次のようにします:

  1. 左のサイドバーで「検索」または「移動」を選択してあなたのプロジェクトを検索します。
  2. Code > Repositoryを選択します。
  3. デフォルトブランチの横にある を選択します。
  4. 新規ファイルを選択します。
  5. デフォルトブランチの横の[ファイル名]テキストボックスに、.gitlab/merge_request_templates/mytemplate.md と入力します。mytemplate は、マージリクエストテンプレートの名前です。
  6. デフォルトブランチにコミットします。

この作業が正しく行われたかどうかを確認するには、新しいマージリクエストを作成し、テンプレートを選択するドロップダウンリストで説明文のテンプレートが見つかるかどうかを確認してください。

テンプレートの使用

イシューやマージリクエストを作成または編集すると、テンプレートの選択ドロップダウンリストに表示されます。

テンプレートを適用するには

  1. イシューまたはマージリクエストを作成または編集します。
  2. テンプレートの選択ドロップダウンリストを選択します。
  3. 説明」テキストボックスが空でない場合は、確認のために「テンプレートを適用」を選択します。
  4. 変更を保存を選択します。

説明テンプレートを選択すると、その内容が説明テキストボックスにコピーされます。

テンプレートを選択した後に行った説明文の変更を破棄するには、[テンプレートの選択]ドロップダウンリストを展開し、[テンプレートのリセット] を選択します。

Choosing a description template in an issue

note
指定されたテンプレートを使用してイシューを作成するためのショートカット・リンクを作成できます。例:https://gitlab.com/gitlab-org/gitlab/-/issues/new?issuable_template=Feature%20proposal.プレフィルド値付きURLを使用したissueの作成については、こちらをご覧ください。

マージリクエストテンプレートでサポートされる変数

GitLab 15.7 で導入されました

note
この機能はデフォルトテンプレートでのみ利用可能です。

マージリクエストを初めて保存するとき、GitLab はマージリクエストテンプレート内のこれらの変数をその値に置き換えます:

変数説明出力例
%{all_commits}マージリクエスト内のすべてのコミットからのメッセージ。最新のコミット 100 件に限定します。100KiBを超えるコミット本体とマージコミットメッセージはスキップします。 * Feature introduced

This commit implements feature
Changelog:added

* Bug fixed

* Documentation improved

This commit introduced better docs.
%{co_authored_by}コミット作成者の名前と電子メールをCo-authored-by Git commit trailer フォーマットで表示します。マージリクエストの直近の 100 コミットの作成者に限定します。 Co-authored-by: Zane Doe <zdoe@example.com>
Co-authored-by: Blake Smith <bsmith@example.com>
%{first_commit}マージリクエスト diff の最初のコミットのメッセージ。Update README.md
%{first_multiline_commit}マージコミットでない最初のコミットで、本文に複数行のメッセージがある場合のメッセージの全文。すべてのコミットが複数行でない場合のマージリクエストタイトル。 Update README.md

Improved project description in readme file.
%{source_branch}マージされるブランチの名前。my-feature-branch
%{target_branch}変更が適用されるブランチの名前。main

インスタンスレベルの説明テンプレートの設定

インスタンステンプレートリポジトリを使用することで、イシューやマージリクエストに対してインスタンスレベルで説明テンプレートを設定できます。インスタンステンプレートリポジトリをファイルテンプレートに使用することもできます。

インスタンスで新しいプロジェクトを作成するときに使用できるプロジェクトテンプレートにも興味があるかもしれません。

グループレベルの説明テンプレートの設定

グループレベルの説明テンプレートでは、グループ内のリポジトリを選択してテンプレートを保存することができます。そして、グループ内の他のプロジェクトからテンプレートにアクセスすることができます。その結果、グループのすべてのプロジェクトのイシューやマージリクエストで同じテンプレートを使うことができます。

作成したテンプレートを再利用するには

  1. 左のサイドバーで、Search(検索)を選択するか、Go to(移動)を選択してグループを探します。
  2. 設定] > [全般]を選択します。
  3. テンプレート] を展開します。
  4. ドロップダウン リストから、グループ レベルのテンプレート リポジトリとしてテンプレート プロジェクトを選択します。
  5. 変更を保存を選択します。

Group template settings

グループの様々なファイルタイプのテンプレートにも興味があるかもしれません。

マージリクエストとイシューのデフォルトテンプレートの設定

Default.md (大文字小文字を区別しない)テンプレートは GitLab 14.8 で導入されました

プロジェクトでは、新しいイシューやマージリクエストのデフォルトの説明テンプレートを選択することができます。その結果、新しいマージリクエストやイシューが作成されるたびに、テンプレートに入力したテキストが入力されます。

前提条件:

  • プロジェクトの左サイドバーで、[設定]>[一般]を選択し、[可視性]、[プロジェクト機能]、[権限]を展開します。イシューやマージリクエストが「誰でもアクセス可能」または「プロジェクトメンバーのみ」のいずれかに設定されていることを確認してください。

マージリクエストのデフォルトの説明テンプレートを設定するには、次のいずれかを実行します:

  • GitLab 14.8 以降ではDefault.md という名前のマージリクエストテンプレートを作成し(大文字小文字を区別しません)、.gitlab/merge_request_templates/ に保存します。プロジェクトの設定でデフォルトのテンプレートが設定されている場合は、上書きされません。
  • GitLab PremiumとUltimateのユーザー:プロジェクト設定でデフォルトテンプレートを設定してください:

    1. 左のサイドバーで「検索」または「移動」を選択してあなたのプロジェクトを検索します。
    2. 設定 > マージリクエストを選択します。
    3. マージリクエストのデフォルト説明テンプレート] セクションで、テキストエリアを埋めます。
    4. 変更を保存を選択します。

イシューのデフォルトの説明テンプレートを設定するには、次のいずれかを実行します:

  • GitLab 14.8以降ではDefault.md (大文字小文字を区別しない)という名前のイシューテンプレートを作成し、.gitlab/issue_templates/に保存します。プロジェクト設定でデフォルトテンプレートを設定している場合は、上書きされません。
  • GitLab PremiumとUltimateのユーザー:プロジェクト設定でデフォルトテンプレートを設定してください:

    1. 左のサイドバーで「検索」または「移動」を選択してあなたのプロジェクトを検索します。
    2. 設定] > [全般]を選択します。
    3. イシューのデフォルト説明テンプレートを展開します。
    4. テキストエリアを埋めてください。
    5. 変更を保存を選択します。

GitLab のマージリクエストやイシューはMarkdown をサポートしているので、見出しやリストなどの書式に使うことができます。

また、Projects REST APIissues_templatemerge_requests_template 属性を指定することで、デフォルトのイシューテンプレートやマージリクエストテンプレートを最新の状態に保つことができます。

デフォルトの説明テンプレートの優先順位

様々な場所でイシューの説明テンプレートを設定すると、プロジェクト内で以下の優先順位が設定されます。上位のものが下位のものより優先されます:

  1. プロジェクト設定で設定されたテンプレート。
  2. Default.md (大文字と小文字は区別されません)。
  3. Default.md (大文字小文字を区別しません) プロジェクトリポジトリから。

マージリクエストには、コミットメッセージの内容やブランチ名に依存する継承ルールが追加されています。

説明テンプレートの例

GitLabプロジェクトの.gitlab フォルダ で、イシューやマージリクエストの説明テンプレートを使っています。いくつかの例を参考にしてください。

note
説明テンプレートでクイックアクションを使うと、ラベルや担当者、マイルストーンを素早く追加することができます。クイックアクションは、イシューやマージリクエストを送信するユーザーが関連するアクションを実行する権限を持っている場合にのみ実行されます。

以下はバグレポートテンプレートの例です:

## Summary

(Summarize the bug encountered concisely)

## Steps to reproduce

(How one can reproduce the issue - this is very important)

## Example Project

(If possible, create an example project here on GitLab.com that exhibits the problematic
behavior, and link to it here in the bug report.
If you are using an older version of GitLab, this will also determine whether the bug has been fixed
in a more recent version)

## What is the current bug behavior?

(What actually happens)

## What is the expected correct behavior?

(What you should see instead)

## Relevant logs and/or screenshots

(Paste any relevant logs - use code blocks (```) to format console output, logs, and code, as
it's very hard to read otherwise.)

## Possible fixes
{: #possible-fixes}

(If you can, link to the line of code that might be responsible for the problem)

/label ~bug ~reproduced ~needs-investigation
/cc @project-manager
/assign @qa-tester