TeamCity オンプレミス 2026.1 ヘルプ

通知テンプレートのカスタマイズ

TeamCity ユーザーは、通知するイベントを選択できます。デフォルトの通知メッセージは、サーバーごとにグローバルにカスタマイズできます。

プロジェクトのユーザー / グループ通知ルールを変更する」権限が有効になっているプロジェクト管理者は、プロジェクトに割り当てられたユーザーおよびユーザーグループの通知ルールを編集できます。

通知ライフサイクル

TeamCity は、ユーザー通知(ビルドの失敗、調査状態の変更など)を生成できる一連のイベントをサポートしています。イベントの発生時に、通知タイプごとに、TeamCity はすべてのユーザーの通知設定を処理して、通知するユーザーを決定します。

ユーザーセットが決定されると、TeamCity は通知モデル (「ビルド」、調査データなど、通知に関連するオブジェクト) を入力し、通知イベントに対応する通知テンプレートを評価します。
テンプレートは、データモデルオブジェクトを使用して出力値 (通知メッセージテキストなど) を生成します。出力値は、通知機能によってメッセージを送信するために使用されます。各通知機能は、特定の出力値セットをサポートします。

テンプレートはイベントに対して 1 回評価されるため、通知プロパティはユーザーごとに調整できないことに注意してください。

次に、テンプレートによって定義された出力値は、選択したユーザーにアラートを送信するために通知機能によって使用されます。

通知テンプレートのカスタマイズ

通知テンプレートの場所

バンドルされた各通知機能には、 <TeamCity Data Directory> /config/_notifications/ にディレクトリがあり、そこに FreeMarker(英語) (.ftl) テンプレートが格納されます。また、デフォルトのテンプレートを格納する .dist ファイルもあります。各通知タイプは、対応する名前のテンプレートファイルを評価します。テンプレートファイルは、サーバーの実行中に変更できます。

デフォルトでは、サーバーは 60 秒ごとにファイルの変更をチェックしますが、teamcity.notification.template.update.interval 内部プロパティを必要な秒数に設定することでこれを変更できます。

テンプレートの評価中にエラーが発生した場合、TeamCity はエラーの詳細を teamcity-notifications.log に記録します。テンプレートの一部を無視する重大でないエラー、または通知をまったく送信できない重大なエラーが存在する可能性があります。通知テンプレートを変更するたびに、通知を送信できることを確認してください。

このドキュメントでは FreeMarker テンプレート言語について説明していないため、FreeMarker 構文のガイダンスが必要な場合は、対応するテンプレートのマニュアル(英語)を参照してください。

サポートされる出力値

TeamCity 通知機能は、テンプレートを使用して、名前で取得される出力値(グローバルテンプレート変数)を評価します。次の出力値がサポートされています。

メール通知

  • subject — 送信するメールメッセージの件名

  • 本文 — 送信するメールメッセージのプレーンテキスト

  • bodyHtml — (オプション) 送信するメールメッセージの HTML テキスト。メッセージのプレーンテキスト部分と一緒に含まれます。ただし、テンプレート内に存在する場合は、これもカスタマイズする必要があります。

  • ヘッダー — (オプション) メールに含める追加ヘッダーの生のリスト。1 行に 1 つのヘッダー。例:

<#global headers> X-Priority: 1 (Highest) Importance: High </#global>

IDE 通知および Windows トレイ通知

  • メッセージ — 送信するメッセージのプレーンテキスト

  • link — イベントの詳細情報を含む TeamCity ページの URL

カスタマイズ例

このセクションでは、通知のカスタマイズに使用できる Freemarker コードスニペットを提供します。

ログからのエラーを含む

<#list build.buildLog.messages[1..] as message><#-- skipping the first message (it is a root node)--> <#if message.status == "ERROR" || message.status == "FAILURE" > ${message.text} </#if> </#list>

以下の例は、build_failed.ftl テンプレートに含まれるスニペットを示しています: エラーは、メールのプレーンテキストと html 部分の両方にリストされます。

<#-- Uses FreeMarker template syntax, template guide can be found at https://freemarker.org/docs/dgui.html --> <#import "common.ftl" as common> <#global subject>[<@common.subjMarker/> FAILED] ${project.name}:${buildType.name} - Build: ${build.buildNumber}</#global> <#global body>TeamCity build: ${project.name}:${buildType.name} - Build: ${build.buildNumber} failed ${var.buildShortStatusDescription}. Agent: ${agentName} Build results: ${link.buildResultsLink} ${var.buildCompilationErrors}${var.buildFailedTestsErrors}${var.buildChanges} <#list build.buildLog.messages[1..] as message><#-- skipping the first message (it is a root node)--> <#if message.status == "ERROR" || message.status == "FAILURE" > ${message.text} </#if> </#list> <@common.footer/></#global> <#global bodyHtml> <div> <div> TeamCity build: <i>${project.name}:${buildType.name} - <a href='${link.buildResultsLink}'>Build: ${build.buildNumber}</a></i> failed ${var.buildShortStatusDescription} </div> <@common.build_agent build/> <@common.build_comment build/> <br> <@common.build_changes var.changesBean/> <@common.compilation_errors var.compilationBean/> <@common.test_errors var.failedTestsBean/> <#list build.buildLog.messages[1..] as message><#-- skipping the first message (it is a root node)--> <#if message.status == "ERROR" || message.status == "FAILURE" > ${message.text} </#if> </#list> <@common.footerHtml/> </div> </#global>

ビルドアーティファクトの一覧表示

現時点では、メールテンプレートにビルドアーティファクトを一覧表示するデフォルトの方法はありません。関連する API を介してアーティファクトを一覧表示できるシンプルなプラグインの関連する問題(英語)を参照してください。

現在の回避策

これは、テンプレートからディスクへの直接アクセスを想定し、外部アーティファクトストレージ(S3 など)とアーティファクトブラウズポリシー(内部アーティファクトを表示しない)を無視します。また、この方法は、将来の TeamCity バージョンで非推奨になる可能性があります。

<p>Build artifacts:</p> <#list build.artifactsDirectory.listFiles() as file> <a href="${webLinks.getDownloadArtefactUrl(build.buildTypeExternalId, build.buildId, file.name)}">${file.name}</a> (${file.length()}B)<br/> </#list>

これにより、ルートアーティファクトのみが一覧表示され、.teamcity ディレクトリが含まれます。.teamcity ディレクトリは、コードを変更することで変更できます。

ビルドパラメーターの一覧表示

<#list build.parametersProvider.all?keys as param> ${param} - ${build.parametersProvider.all[param]} <br> </#list>

これにより、サーバーからビルドに渡されるパラメーターがリストされます。

デフォルトのデータモデル

テンプレートの評価のために、TeamCity はテンプレート内で使用できるデフォルトのデータモデルを提供します。モデルで公開されるオブジェクトは、TeamCity サーバー側オープン API(英語) の対応するクラスのインスタンスです。
利用可能なオブジェクトモデルのセットは、イベントによって異なります。プラグインを使用して、独自のオブジェクトをモデルに追加することもできます。詳細については、通知テンプレートモデルの拡張(英語)を参照してください。

モデルの説明の例を次に示します(コードを IntelliJ IDEA で使用して、テンプレートを完全に編集できます)。以下にリストされているすべてのエンティティがどのテンプレートでも使用できるわけではないことに注意してください。たとえば、すべてのテスト責任はプロジェクトスコープで割り当てられ、テスト責任に関する通知は、調査が割り当てられたプロジェクト(ビルド構成ではなく)を指すように構成できます)。

<#-- @ftlvariable name="project" type="jetbrains.buildServer.serverSide.SProject" --> <#-- @ftlvariable name="buildType" type="jetbrains.buildServer.serverSide.SBuildType" --> <#-- @ftlvariable name="build" type="jetbrains.buildServer.serverSide.SBuild" --> <#-- @ftlvariable name="agentName" type="java.lang.String" --> <#-- @ftlvariable name="buildServer" type="jetbrains.buildServer.serverSide.SBuildServer" --> <#-- @ftlvariable name="webLinks" type="jetbrains.buildServer.serverSide.WebLinks" --> <#-- @ftlvariable name="var.buildFailedTestsErrors" type="java.lang.String" --> <#-- @ftlvariable name="var.buildShortStatusDescription" type="java.lang.String" --> <#-- @ftlvariable name="var.buildChanges" type="java.lang.String" --> <#-- @ftlvariable name="var.buildCompilationErrors" type="java.lang.String" --> <#-- @ftlvariable name="link.editNotificationsLink" type="java.lang.String" --> <#-- @ftlvariable name="link.buildResultsLink" type="java.lang.String" --> <#-- @ftlvariable name="link.buildChangesLink" type="java.lang.String" --> <#-- @ftlvariable name="responsibility" type="jetbrains.buildServer.responsibility.ResponsibilityEntry" --> <#-- @ftlvariable name="oldResponsibility" type="jetbrains.buildServer.responsibility.ResponsibilityEntry" -->

TeamCity 通知プロパティ

次のプロパティは、通知の動作をカスタマイズできます。

  • teamcity.notification.template.update.interval — テンプレートがシステムによって再読み取りされる頻度 (整数、秒単位、デフォルトは 60)

  • teamcity.notification.includeDebugInfo — テンプレート処理エラーの場合にメッセージにデバッグ情報を含める (ブール値、デフォルトは false)

  • teamcity.notification.maxChangesNum — メールメッセージにリストする変更の最大数 (整数、デフォルトは 10)

  • teamcity.notification.maxCompilationDataSize — メールメッセージに含めるコンパイルエラーデータの最大サイズ(バイト単位) (整数、デフォルト 20480)

  • teamcity.notification.maxFailedTestNum — メールメッセージにリストする失敗したテストの最大数 (整数、デフォルト 50)

  • teamcity.notification.maxFailedTestStacktraces — メールメッセージ内のテストスタックトレースの最大数 (整数、デフォルト 5)

  • teamcity.notification.maxFailedTestDataSize — 単一のメールメッセージに含める失敗したテスト出力データの最大サイズ(バイト単位) (整数、デフォルト 10240)

2025 年 4 月 07 日

関連ページ:

通知ルールの追加

この記事では、通知ルールを設定する方法について説明します。TeamCity サーバーで通知機能を有効にする方法については、次の手順に従ってください。各通知ルールは、監視されるスコープと通知をトリガーするイベントの 2 つの部分で構成されます。ユーザーは、個人ルールを作成し、ユーザーグループからルールを継承できます。通知ルールを追加:新しい個人通知ルールを追加するには: 画面の右上隅にあるアバターをクリックし、ドロップダウンメニューのプロファイルをクリックします。プロファイルで、通知ルールタブを開...

TeamCity データディレクトリ

TeamCity データディレクトリは、TeamCity サーバーが構成、ビルド結果、現在の操作ファイルを保存するために使用するファイルシステム上のディレクトリです。このディレクトリは、すべての構成設定の 1 次ストレージであり、TeamCity のインストールに不可欠なデータを保持します。ビルド履歴、ユーザーとそのデータ、その他のデータはデータベースに保存されます。ディレクトリとデータベースに保存されるデータの説明については、バックアップに関する注意事項を参照してください。このドキュメントや他...