説明テンプレート
- プラン: Free、Premium、Ultimate
- 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated
説明テンプレートは、GitLabでのイシューとマージリクエストの作成方法を標準化および自動化します。
説明テンプレートとは:
- プロジェクト全体のイシューとマージリクエストで、一貫性のあるレイアウトを作成します。
- さまざまなワークフローの段階と目的に合わせて、専用のテンプレートを提供します。
- プロジェクト、グループ、インスタンス全体のカスタムテンプレートをサポートします。
- 変数とクイックアクションを使用して、自動的にフィールドに入力します。
- バグ、機能、その他の作業アイテムが適切に追跡されるようにします。
- サービスデスクのメール応答をフォーマットします。
以下の説明として使用するテンプレートを定義できます:
プロジェクトは、グループとインスタンスからテンプレートを継承します。
テンプレートは次の条件を満たす必要があります:
.md拡張子で保存されている。.gitlab/issue_templatesまたは.gitlab/merge_request_templatesディレクトリ内のプロジェクトのリポジトリに保存されている。- デフォルトブランチ上に存在する。
説明テンプレートを作成する
.mdファイルとして、説明テンプレートを.gitlab/issue_templates/ディレクトリ内に新規作成します。
作業アイテムの説明テンプレートを作成するには:
- 左側のサイドバーで、検索または移動先を選択して、プロジェクトを見つけます。
- コード > リポジトリを選択します。
- デフォルトブランチの横にある を選択。
- 新しいファイルを選択。
- デフォルトブランチの横にあるファイル名テキストボックスに、
.gitlab/issue_templates/mytemplate.mdと入力します。mytemplateは、説明テンプレートの名前です。 - デフォルトブランチにコミットします。
これが正しく機能したか確認するには、以下を実行します:
- 新しいイシューを作成するか、新しいエピックを作成します。
- テンプレートを選択してくださいドロップダウンリストで、作成した説明テンプレートが見つかるかどうかを確認します。
マージリクエストテンプレートを作成する
イシューテンプレートと同様に、リポジトリの.gitlab/merge_request_templates/ディレクトリ内に新しいMarkdown(.md)ファイルを作成します。イシュー説明テンプレートとは異なり、マージリクエストには、コミットメッセージとブランチ名の内容に応じた追加の継承ルールがあります。詳細については、マージリクエストの作成を参照してください。
プロジェクトのマージリクエスト説明テンプレートを作成するには、以下を実行します:
- 左側のサイドバーで、検索または移動先を選択して、プロジェクトを見つけます。
- コード > リポジトリを選択します。
- デフォルトブランチの横にある を選択。
- 新しいファイルを選択。
- デフォルトブランチの横にあるファイル名テキストボックスに、
.gitlab/merge_request_templates/mytemplate.mdと入力。ここで、mytemplateはマージリクエストテンプレートの名前です。 - デフォルトブランチにコミットします。
この操作が正しく機能しているかどうかを確認するには、新しいマージリクエストを作成し、テンプレートを選択してくださいドロップダウンリストに説明テンプレートがあることを確認します。
テンプレートを使用する
イシューやマージリクエストを作成または編集すると、テンプレートを選択してくださいドロップダウンリストに表示されます。
テンプレートを適用するには、以下を実行します:
- イシュー、作業アイテム、またはマージリクエストを作成または編集。
- テンプレートを選択してくださいドロップダウンリストを選択。
- 説明テキストボックスが空白でない場合はテンプレートを適用を選択して確認します。
- 変更を保存を選択します。
説明テンプレートを選択すると、その内容が説明テキストボックスにコピーされます。
テンプレートを選択した後に説明に加えた変更を破棄するには、テンプレートを選択してくださいドロップダウンリストを展開し、テンプレートのリセットを選択します。
ショートカットリンクを作成し、指定されたテンプレートを使用してイシューを作成することができます。例: https://gitlab.com/gitlab-org/gitlab/-/issues/new?issuable_template=Feature%20proposal。詳細については、値を事前に入力したURLを使用してイシューを作成するをお読みください。
マージリクエストテンプレートでサポートされている変数
この機能は、デフォルトテンプレートでのみ使用できます。
マージリクエストを初めて保存したとき、GitLabはマージリクエストテンプレート内のこれらの変数を次の値に置き換えます:
| 変数 | 説明 | 出力例 |
|---|---|---|
%{all_commits} | マージリクエスト内のすべてのコミットからのメッセージ。最新の100件のコミットに制限されています。100 KiBを超えるコミット本文とマージコミットメッセージはスキップされます。 | * Feature introducedThis commit implements featureChangelog:added* Bug fixed* Documentation improvedThis commit introduced better docs. |
%{co_authored_by} | Co-authored-by Gitコミットトレーラー形式のコミット作成者の名前とメール。マージリクエストの最新の100件のコミットの作成者に制限されています。 | Co-authored-by: Zane Doe <zdoe@example.com>Co-authored-by: Blake Smith <bsmith@example.com> |
%{first_commit} | マージリクエストの差分の、最初のコミットのメッセージ全体。 | Update README.md |
%{first_multiline_commit} | マージコミットではなく、メッセージ本文に複数の行が含まれる最初のコミットのメッセージ全体。すべてのコミットが複数行でない場合のマージリクエストのタイトル。 | Update README.mdImproved project description in readme file. |
%{first_multiline_commit_description} | メッセージ本文に複数行が含まれる、マージコミットではない最初のコミットの説明(最初の行/タイトルを除く)。 | Improved project description in readme file. |
%{source_branch} | マージされるブランチの名前。 | my-feature-branch |
%{target_branch} | 変更が適用されるブランチの名前。 | main |
インスタンスレベルの説明テンプレートを設定する
- プラン: Premium、Ultimate
- 提供形態: GitLab Self-Managed、GitLab Dedicated
instance level(インスタンスレベル)でイシューとマージリクエストの説明テンプレートを設定するには、インスタンステンプレートリポジトリを使用します。ファイルテンプレートにインスタンステンプレートリポジトリを使用することもできます。
インスタンスで新しいプロジェクトを作成する際には、プロジェクトテンプレートも使用できます。
グループレベルの説明テンプレートを設定する
- プラン: Premium、Ultimate
- 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated
group-level(グループレベル)の説明テンプレートを使用すると、グループ内のプロジェクトを選択してテンプレートを保存できます。次に、グループ内の他のプロジェクトでこれらのテンプレートにアクセスできます。これにより、グループのすべてのプロジェクトのイシューとマージリクエストで同じテンプレートを使用することができます。
前提要件:
- グループのオーナーの役割を持っている。
- プロジェクトは、グループの直接の子である。
作成したテンプレートを再利用するには、以下を実行します:
- 左側のサイドバーで、検索または移動先を選択して、グループを見つけます。
- 設定 > 一般を選択します。
- テンプレートを展開。
- ドロップダウンリストから、テンプレートプロジェクトをグループレベルのテンプレートリポジトリとして選択。
- 変更を保存を選択します。
グループ内の各種ファイルタイプ向けテンプレートも利用できます。
マージリクエストとイシューのデフォルトテンプレートを設定する
プロジェクトで、新しいイシューとマージリクエストのデフォルトの説明テンプレートを選択することができます。これにより、新しいマージリクエストまたはイシューが作成されるたびに、テンプレートに入力したテキストが事前に入力されます。
前提要件:
- プロジェクトの左側のサイドバーで、設定 > 一般を選択し、可視性、プロジェクトの機能、権限を展開します。イシューまたはマージリクエストが、Everyone with access(アクセスできる人すべて)またはプロジェクトメンバーのみに設定されていることを確認します。
マージリクエストのデフォルトの説明テンプレートを設定するには、以下のいずれかの操作を行います:
Default.mdという名前のマージリクエストテンプレートを作成し、.gitlab/merge_request_templates/に保存します。Default.mdテンプレートは、プロジェクト設定で設定されたデフォルトのテンプレートよりも優先優先されません。詳細については、デフォルトの説明テンプレートの優先度を参照してください。GitLab PremiumおよびUltimateのユーザー: プロジェクト設定で、デフォルトのテンプレートを設定します:
- 左側のサイドバーで、検索または移動先を選択して、プロジェクトを見つけます。
- 設定 > マージリクエストを選択します。
- マージリクエストのデフォルトの説明テンプレートセクションで、テキスト領域に入力。
- 変更を保存を選択します。
イシューのデフォルトの説明テンプレートを設定するには、次のいずれかの操作を行います:
Default.mdという名前のイシューテンプレートを作成し、.gitlab/issue_templates/に保存します。Default.mdテンプレートは、プロジェクト設定で設定されたデフォルトのテンプレートよりも優先優先されません。詳細については、デフォルトの説明テンプレートの優先度を参照してください。GitLab PremiumおよびUltimateのユーザー: プロジェクト設定で、デフォルトのテンプレートを設定します:
- 左側のサイドバーで、検索または移動先を選択して、プロジェクトを見つけます。
- 設定 > 一般を選択します。
- イシューのデフォルトの説明テンプレートを展開。
- テキスト領域に入力。
- 変更を保存を選択します。
GitLabマージリクエストとイシューはMarkdownをサポートしているため、これを使用して見出しやリストなどをフォーマットできます。
また、Projects REST APIでissues_template属性とmerge_requests_template属性を指定し、デフォルトのイシューテンプレートとマージリクエストテンプレートを最新の状態に保つこともできます。
デフォルトの説明テンプレートの優先順位
さまざまな場所でイシューの説明テンプレートを設定した場合、プロジェクトでの優先順位は次のようになります。上位のものは、以下のものをオーバーライドします:
- プロジェクトの設定で設定されたテンプレート。
- 親グループからの
Default.md(大文字と小文字を区別しません)。 - プロジェクトリポジトリからの
Default.md(大文字と小文字を区別しません)。
マージリクエストには、コミットメッセージとブランチ名の内容に応じて追加の継承ルールがあります。
説明テンプレートの例
GitLabプロジェクトの.gitlabフォルダーには、イシューやマージリクエストで使用する説明テンプレートがあり、これらを例として参照できます。
説明テンプレートでクイックアクションを使用して、ラベル、担当者、マイルストーンをすばやく追加することができます。クイックアクションは、イシューやマージリクエストを送信するユーザーが、関連するアクションを実行するための権限を持っている場合にのみ実行されます。
以下は、バグレポートテンプレートの例です:
## Summary
<!-- HTML comments are not displayed -->
(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
(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
