TeamCity On-Premises 2026.2 Help

サービスメッセージ

サービスメッセージは、ビルドに関するコマンドや情報をビルドスクリプトから TeamCity サーバーへ渡すために特別に構成されたテキストです。

TeamCity で処理されるには、 ビルドの標準出力ストリームに書き込む、つまりビルドステップから print または echo で出力する必要があります

例:

echo ##teamcity[<messageName> 'value']
echo "##teamcity[<messageName> 'value']"
Write-Host "##teamcity[<messageName> 'value']"

単一のサービスメッセージの内部に改行文字を含めることはできず、複数行にまたがることもできません。

サービスメッセージのフォーマット

サービスメッセージは 2 つのフォーマットをサポートします。

  • 単一属性メッセージ

    ##teamcity[<messageName> 'value']
  • 複数属性メッセージ

    ##teamcity[<messageName> name1='value1' name2='value2']

    複数属性メッセージは、より正式には次のように説明できます。

    ##teamcity[messageNameWSPpropertyNameOWSP=OWSP'value'WSPpropertyName_IDOWSP=OWSP'value'...OWSP]

where:

  • メッセージ名 は、 フロー開始パラメーターを設定 などのメッセージの名前です。

  • プロパティ名 は、メッセージ属性の名前です。 有効な Java ID でなければなりません。

  • は属性の値です。 エスケープされた値である必要があります。

  • WSP は必須の空白です: スペースまたはタブ文字(タブ)。

  • OWSP はオプションの空白です。

  • は、任意の数の WSPプロパティ名OWSP=OWSP'値' ブロックです。

エスケープされた値

エスケープされた値では、TeamCity は垂直バー または をエスケープ文字として使用します。 特定の特殊文字が TeamCity サーバーで正しく解釈されるようにするには、その前に垂直バーを付ける必要があります。 例: 次のメッセージ:

##teamcity[testStarted name='foo|'s test']

TeamCity では foo のテスト として表示されます。 以下のエスケープ値の表を参照してください。

文字

として逃げる

' (アポストロフィ)

|'

\n (改行)

| n

\r (復帰)

| r

\uNNNN (コード 0xNNNN の Unicode シンボル)

| 0xNNNN

| (縦線)

||

[ (左角括弧)

|[

] (右角括弧)

|]

ビルドログへのメッセージの報告

次のように、メッセージをビルドログに報告できます。

##teamcity[message text='<message text>' errorDetails='<error details>' status='<status value>']

where:

  • 状況 は、次の値を取ることができます: 通常 (デフォルト)、 警告失敗エラー

  • エラー詳細 は、 状況エラー の場合にのみ使用され、それ以外の場合は無視されます。
    このメッセージは、ステータスが エラー であり、「ビルドランナーによってエラーメッセージがログに記録された場合にビルドを失敗させる 」ボックスがビルド構成の ビルド失敗条件 ページでオンになっている場合、ビルドを失敗させます。 例:

    ##teamcity[message text='Exception text' errorDetails='stack trace' status='ERROR']

サービスメッセージのブロック

ブロックはビルドログ内のいくつかのメッセージをグループ化するために使用されます。

ブロックオープニング:

ブロック開始 システムメッセージには お名前 属性があり、説明を追加することもできます。

##teamcity[blockOpened name='<blockName>' description='<this is the description of blockName>']

ブロックを閉じる:

##teamcity[blockClosed name='<blockName>']

コンパイルメッセージの報告

##teamcity[compilationStarted compiler='<compiler_name>'] ... ##teamcity[message text='compiler output'] ##teamcity[message text='compiler output'] ##teamcity[message text='compiler error' status='ERROR'] ... ##teamcity[compilationFinished compiler='<compiler name>']

where:

  • コンパイラー_お名前 は、コンパイルを実行するコンパイラーの任意の名前です(例: javac または groovyc)。 現在、ビルドログでブロック名として使用されています。

  • コンパイル開始コンパイル終了 の間で報告されたステータス エラー のメッセージは、コンパイルエラーとして扱われます。

メッセージ FlowId

すべてのメッセージはオプションの属性 フロー ID をサポートしており、これによりメッセージを別々のカテゴリ (フロー) にグループ化できます。 例: すべてのメッセージは送信順に処理されるため、次のサンプルでは、両方の出力メッセージが最新のブロックによって所有されるブロックの階層が生成されます。

##teamcity[blockOpened name='block 1'] ##teamcity[blockOpened name='block 2'] ##teamcity[message text='Message 1'] ##teamcity[message text='Message 2']
フロー ID なしのブロック

フロー ID 属性を追加すると、メッセージを 2 つの並列フローに分割できます。

##teamcity[blockOpened name='block 1' flowId='1'] ##teamcity[blockOpened name='block 2' flowId='2'] ##teamcity[message text='Message 1' flowId='1'] ##teamcity[message text='Message 2' flowId='2']
フロー ID 付きブロック

ほとんどの場合、メッセージフローを開始するために必要な属性は フロー ID のみです。 ネストされたテストレポート では、ルートフロー内ではなく、既存のフロー内のサブフローとしてフローを開始する必要がある場合があります。 これを行うには、 フロー開始 パラメーターを追加し、親フロー ID を パラメーターとして指定します。 指定された親のないフローは、現在のステップのルートフロー内で開始されます。

サブフローを終了するには、 フロー終了 パラメーターを使用します。 親フローを終了すると、そのサブフローもすべて自動的に閉じられますが、フローの順序を明示的に宣言することをお勧めします。

##teamcity[flowStarted flowId='MainFlow' ...] ##teamcity[flowStarted flowId='SubFlow1' parent='MainFlow' ...] ##teamcity[flowFinished flowId='SubFlow1' ...] ##teamcity[flowStarted flowId='SubFlow2' parent='MainFlow' ...] ##teamcity[flowFinished flowId='SubFlow2' ...] ##teamcity[flowFinished flowId='MainFlow' ...]

フロー開始 および フロー終了 メッセージは、 テスト開始 メッセージと テスト終了 メッセージの間に発行された場合にのみ有効であることに注意してください。

テストの報告

TeamCity のオンザフライテストレポートを使用するには、テストフレームワークがこの機能を動作させるための専用サポートを備えている必要があります (または、 XML レポート処理を使用できます)。 TeamCity がテストフレームワークをネイティブにサポートしていない場合は、サービスメッセージを使用して TeamCity サーバーにテスト実行を報告するようにビルドスクリプトを変更できます。 これにより、テスト結果をリアルタイムで表示し、 ビルド結果 ページの テスト タブでテスト情報を利用できるようになります。

メッセージ作成タイムスタンプ

テストレポートメッセージは、オプションの属性 タイムスタンプ をサポートします。 次の例では、 <メッセージ名> は特定のサービスメッセージの名前です。

##teamcity[<messageName> timestamp='timestamp' ...]

タイムスタンプの形式は、 Java SimpleDateFormat の構文(英語)に従って yyyy-MM-dd'T'HH:mm:ss.SSSZ または yyyy-MM-dd'T'HH:mm:ss.SSS です。

例:

##teamcity[<messageName> timestamp='2008-09-03T14:02:34.487+0400' ...] ##teamcity[<messageName> timestamp='2008-09-03T14:02:34.487' ...]

.NET DateTimeOffset(英語) の場合、このようなコード

var date = DateTimeOffset.Now; var timestamp = $"{date:yyyy-MM-dd'T'HH:mm:ss.fff}{date.Offset.Ticks:+;-;}{date.Offset:hhmm}";

結果:

##teamcity[<messageName> timestamp='2008-09-03T14:02:34.487+0400' ...]

サポートされるテストサービスメッセージ

テスト suite メッセージ:: テストスイートは、テストをグループ化するために使用されます。 TeamCity は、 ビルド結果 ページの テスト タブやその他の場所で、suite ごとにグループ化されたテストを表示します。

##teamcity[testSuiteStarted name='suiteName'] <individual test messages go here> ##teamcity[testSuiteFinished name='suiteName']

すべての個々のテストメッセージは、同じ お名前 属性を持つ テスト suite 開始テスト suite 終了 の間に(この順序で)表示されます。

ネストされたテストレポート

別のテストを開始すると、同じ フロー内で現在開始されているテストが終了します。 他のテスト内から引き続きテストを報告するには、ネストされたテストサービスメッセージで別の フロー ID を指定する必要があります。

# TEST SUITE A ##teamcity[testSuiteStarted name='Test Suite A'] # TEST_1_A ##teamcity[testStarted name='Test 1.A' captureStandardOutput='false'] ##teamcity[flowStarted flowId='mainFlow-1a'] # Nested TEST_1_A_1 ##teamcity[testStarted name='Test 1.A, Subtest 1' captureStandardOutput='false'] ##teamcity[flowStarted flowId='subFlow1-1a' parent='mainFlow-1a'] # Testing ##teamcity[flowFinished flowId='subFlow1-1a'] ##teamcity[testFinished name='Test 1.A, Subtest 1' duration='1000'] # Nested TEST_1_A_2 ##teamcity[testStarted name='Test 1.A, Subtest 2' captureStandardOutput='false'] ##teamcity[flowStarted flowId='subFlow2-1a' parent='mainFlow-1a'] # Testing ##teamcity[flowFinished flowId='subFlow2-1a'] ##teamcity[testFinished name='Test 1.A, Subtest 2' duration='1000'] ##teamcity[flowFinished flowId='mainFlow-1a'] ##teamcity[testFinished name='Test 1.A' duration='3000'] ##teamcity[testSuiteFinished name='Test Suite A']

フローのネストに関する詳細については、 flowID セクションを参照してください。

テスト開始/停止メッセージ:

##teamcity[testStarted name='testName' captureStandardOutput='<true/false>'] <here go all the test service messages with the same name> ##teamcity[testFinished name='testName' duration='<test_duration_in_milliseconds>']

テスト名 が実行されたことを示します。 テスト失敗 メッセージが存在しない場合、テストは成功したと見なされます。

  • 期間 (オプションの数値整数属性) は、TeamCity UI で報告されるテスト時間をミリ秒単位で設定します。 省略した場合、テスト期間はメッセージのタイムスタンプから計算されます。 タイムスタンプが欠落している場合 — サーバーでメッセージが実際に受信された時刻から。

  • 標準出力のキャプチャ (オプションのブール属性) — の場合、 テスト開始 メッセージと テスト終了 メッセージの間で受信されたすべての標準出力および標準エラーメッセージは、テスト出力と見なされます。 デフォルト値は です。テスト出力を報告するために テスト標準出力 および テスト標準エラー サービスメッセージの使用箇所を想定します。

テスト suite + テスト名 のペアがビルド内で一意であることを確認することを強くお勧めします。 高度な TeamCity テスト関連機能を動作させるには、テスト名がビルドごとに変わらないようにする必要があります (単一のテストはすべてのビルドで同じ名前で報告される必要があります)。 報告されるテスト名に絶対パスを含めることは 強く非推奨

無視されたテスト:

##teamcity[testIgnored name='testName' message='ignore comment']

テスト名 は存在するが、テストフレームワークによって実行されなかった(無視された)ことを示します。 例外として、 テスト無視 メッセージは、一致する テスト開始 および テスト終了 メッセージなしで報告できます。

テスト出力:

##teamcity[testStarted name='className.testName'] ##teamcity[testStdOut name='className.testName' out='text'] ##teamcity[testStdErr name='className.testName' out='error text'] ##teamcity[testFinished name='className.testName' duration='50']

テスト標準出力 および テスト標準エラー サービスメッセージは、TeamCity UI に表示されるテストの標準出力およびエラー出力を報告します。 テストごとに 1 つの テスト標準出力 メッセージと 1 つの テスト標準エラー メッセージだけがなければなりません。 代替方法ですが、信頼性の低い方法は、 テスト開始 メッセージの 標準出力のキャプチャ 属性を使用することです。

テスト結果:

##teamcity[testStarted name='MyTest.test1'] ##teamcity[testFailed name='MyTest.test1' message='failure message' details='message and stack trace'] ##teamcity[testFinished name='MyTest.test1'] ##teamcity[testStarted name='MyTest.test2'] ##teamcity[testFailed type='comparisonFailure' name='MyTest.test2' message='failure message' details='message and stack trace' expected='expected value' actual='actual value'] ##teamcity[testFinished name='MyTest.test2']

テスト名 テストが失敗したことを示します。 特定のテスト名に対して表示できる テスト失敗 メッセージは 1 つだけです。

  • メッセージ には、エラーのテキスト表現が含まれています。

  • 詳細 には、テスト失敗に関する詳細情報(通常はメッセージと例外スタックトレース)が含まれています。

  • 実際 および 期待値 属性は、比較の失敗を報告するために タイプ='比較失敗' と一緒にしか使用できません。 IDE でテストを開くときに値が使用されます。

以下はサービスメッセージを使ったテストレポートのより長い例です。

##teamcity[testSuiteStarted name='suiteName'] ##teamcity[testSuiteStarted name='nestedSuiteName'] ##teamcity[testStarted name='package_or_namespace.ClassName.TestName'] ##teamcity[testFailed name='package_or_namespace.ClassName.TestName' message='The number must be 20000' details='junit.framework.AssertionFailedError: expected:<20000> but was:<10000>|n|r at junit.framework.Assert.fail(Assert.java:47)|n|r at junit.framework.Assert.failNotEquals(Assert.java:280)|n|r...'] ##teamcity[testFinished name='package_or_namespace.ClassName.TestName'] ##teamcity[testSuiteFinished name='nestedSuiteName'] ##teamcity[testSuiteFinished name='suiteName']

テスト再試行の有効化

ビルド構成で テスト再試行のサポートを有効化できます。 このオプションを有効化すると、テストの実行が成功した場合に以前の失敗がミュートされます。つまり、同じビルド内でテストが失敗した後に成功すると、TeamCity はそのテストをミュートします。
このようなテストはビルドステータスに影響しません。

##teamcity[testRetrySupport enabled=’true’]

テスト名の解釈

完全なテスト名の形式は <suite お名前>: <パッケージ/名前空間お名前>.<クラスお名前>.<テストメソッド>(<テストパラメーター>) にできます。ここで、 <クラスお名前><テストメソッド> の名前にはドットを含めることはできません。 完全なテスト名で必須の部分は <テストメソッド> のみです。

完全なテスト名は、結果のビルド間でテストを比較したり、異なるビルド構成間でテストを一致させるために使用されます。

完全なテスト名の例:

Integration Tests: Backend: org.jetbrains.teamcity.LoginPageController.testBadPassword("incorrect password", false) // in the example above, // suite name = "Integration Tests: Backend" // package = org.jetbrains.teamcity // class name = LoginPageController // test method = testBadPassword // test parameters = ("incorrect password", false)

ビルド結果 ページの テスト タブでは、スイート、パッケージ / 名前空間、クラス、テストごとにグループ化できます。 通常、属性値はテストフレームワークによって報告されたとおりに提供され、TeamCity はテスト名を正しく解釈できます。

上記の形式でテストを構文解析できない場合でも、TeamCity は Tests タブでのフィルタリングのために完全なテスト名から <suite お名前> を抽出しようとし、suite の後のすべてを構文解析できないテスト名として扱います。

追加テストデータの報告

テストメタデータ サービスメッセージを使用して、テストに追加情報をアタッチすることができます。 詳細については、 別のページを参照してください。

.NET コードカバレッジ結果の報告

サービスメッセージを使用して .NET カバレッジ処理を設定できます。 詳細については、 レポートカバレッジの手動構成ページを参照してください。

インスペクションの報告

以下で説明するサービスメッセージを使用して、カスタムツールから TeamCity にインスペクションを報告できます。

他の用途の中でも、インスペクションの数は、 ビルドを失敗させるためのビルドメトリクスとして使用できます。

インスペクションタイプ

コード内の特定の警告またはエラー (インスペクションインスタンス) には、インスペクションタイプがあります。これは、実行されたインスペクションの一意の説明であり、次を介して報告できます

##teamcity[inspectionType id='<id>' name='<name>' description='<description>' category='<category>']

ここで、すべての属性が必須であり、数値またはテキスト値を使用できます。

  • ID — (必須)255 文字以内

  • お名前 — (必須)255 文字以内

  • カテゴリ — (必須)255 文字までに制限されています。 カテゴリ 属性の例は、「スタイル違反」および「発呼契約」です。

  • 説明 — (必須)4000 文字に制限されています。 説明は HTML にすることもできます。 例:

<html> <body> Reports unnecessary local variables, which add nothing to the comprehensibility of a method. Variables caught include local variables which are immediately returned, local variables that are immediately assigned to another variable and then not used, and local variables which always have the same value as another local variable or parameter. <!-- tooltip end --> <p> Use the first checkbox below to have this inspection ignore variables which are immediately returned or thrown. Some coding styles suggest using such variables for clarity and ease of debugging. </p> <p> Use the second checkbox below to have this inspection ignore variables which are annotated. </p> </body> </html>

インスペクションインスタンス

特定の不具合、警告、エラーメッセージを報告します。 場所、説明、さまざまなオプションおよびカスタム属性が含まれています。

##teamcity[inspection typeId='<inspection type identity>' message='<instance description>' file='<file path>' line='<line>' additional attribute='<additional attribute>']

ここで、すべての属性は数値またはテキスト値を持つことができます。

  • タイプ ID — (必須)、 上記インスペクションタイプ.ID への参照は 255 文字に制限されています。

  • メッセージ — (オプション)現在のインスタンスの説明は 4000 文字に制限されています。

  • ファイル — (必須)ファイルパスは 4000 文字に制限されています。 パスは、絶対パスまたは チェックアウトディレクトリからの相対パスにすることができます。

  • — (オプション)ファイルの行、整数。

  • 追加属性 – 任意の属性にできます。ここでは 重大度 がよく使用され、次のいずれかの値を指定します (大文字に注意してください): 情報エラー警告弱い警告

例:

##teamcity[inspectionType id='UnnecessaryLocalVariable' name='Redundant local variable' description='<html><body>Reports unnecessary local variables...</body> </html>' category='Data flow issues'] ##teamcity[inspection typeId='UnnecessaryLocalVariable' message='Local variable <code>i</code> is redundant' file='src/Test.java' line='19' SEVERITY='WARNING']

ビルド進行中のアーティファクトの公開

ビルドの実行中に、アーティファクトがビルドされた直後に、ビルドアーティファクトを公開することができます。

これを行うには、次の行を出力する必要があります。

##teamcity[publishArtifacts '<path>']

<パス> は、 ビルド構成設定アーティファクト仕様の構築と同じ規則に従う必要があります。 <パス> に一致するファイルがアップロードされ、実行中のビルドのアーティファクトとして表示されます。

すべてのファイルの準備が整い、ファイルが読み取り用にロックされていないときにメッセージが表示されます。

アーティファクトはバックグラウンドでアップロードされるため、時間がかかることがあります。 ビルドステップが終了するまで、一致するファイルが削除されないようにしてください (たとえば、次のビルド開始時にクリーンアップされるディレクトリ、 一時ディレクトリに配置するか、ビルド後に Swabra を使用してクリーンアップします)。

ビルド構成設定で指定されたアーティファクトは、最後のビルドステップの終了後に通常どおり公開されます。

ステップ間での NuGet パッケージの受け渡し

NuGet パッケージを公開してから単一のビルド内でその内容を使用する必要がある場合、ビルドの終了時ではなく、時間どおりに公開および索引付けされることを保証したいはずです。
そのためには、 NuGet Publish ランナーを使用するか、代わりに任意のステップで ##teamcity[publishNuGetPackage] サービスメッセージを送信できます。 これにより、NuGet パッケージは現在のステップの終了時に、構成済みのすべての NuGet フィードに公開され、以降のビルドステップで利用できるようになります。

ビルド進捗の報告

特別な進行状況メッセージを使用して、ビルドスクリプトで実行時間の長い部分をマークできます。 これらのメッセージは、対応するビルドのプロジェクトのダッシュボードと ビルド結果 ページに表示されます。

単一の進捗メッセージを記録するには、次のようにします。

##teamcity[progressMessage '<message>']

この進行メッセージは、別の進行メッセージが表示されるまで、または次のターゲットが起動するまで表示されます(Ant ビルドの場合)。

ビルドの一部だけの進行状況メッセージを表示したい場合は、次のようにします。

##teamcity[progressStart '<message>'] ...some build activity... ##teamcity[progressFinish '<message>']

ビルドの問題の報告

ビルドスクリプトから直接ビルドを失敗させるには、ビルドの問題を報告する必要があります。 ビルドの問題は、ビルドステータステキストに影響します。 それらは ビルド結果 ページに表示されます。 ビルドにビルドの問題を追加するには、次を使用します。

##teamcity[buildProblem description='<description>' identity='<identity>']

where:

  • 説明 (必須): ビルドの問題を説明する人間が読めるプレーンテキスト。 デフォルトでは、 説明 はビルドステータステキストとビルドの問題のリストに表示されます。 テキストは 4000 シンボルに制限されており、制限を超えると切り捨てられます。

  • 識別子 (オプション): 一意の問題 ID。 異なる問題には異なる ID が必要であり、同じ問題には同じ ID が必要です。たとえば同じコンパイルエラーが発生した場合など、同じ問題であればビルド全体を通じて変更されるべきではありません。 有効な Java ID で、最大 60 文字である必要があります。 省略した場合、 識別子説明 テキストに基づいて計算されます。

ビルドステータスの報告

ビルドステータス弱いAIを誘導する可能性があるプロンプト:A string with same tags/placeholders as source: none. を使用して ビルドステータステキスト を設定します。

カスタムビルドステータス
##teamcity[buildStatus text='NuGet packages were successfully published.']

現在進行中の操作をビルドステータスに反映するように設計された 進行状況メッセージとは異なり、 ビルドステータス弱いAIを誘導する可能性があるプロンプト:A string with same tags/placeholders as source: none. メッセージは、ビルドの完了後に持続する最終的なビルドステータスを設定します。

異なる ステップ実行条件を持つ個別のステップを追加して、「グリーン」ビルドと失敗したビルドを区別し、それぞれに異なるカスタムステータスを設定できます。

steps { // ... script { id = "set-custom-green-text" scriptContent = """echo "##teamcity[buildStatus text='NuGet packages were successfully published.']"""" } script { id = "set-custom-red-text" executionMode = BuildStep.ExecutionMode.RUN_ONLY_ON_FAILURE scriptContent = """echo "##teamcity[buildStatus text='Build failed! NuGet packages were not updated.']"""" } }

デフォルトのステータステキストは、 {build.status.text} プレースホルダーを介して参照できます。

##teamcity[buildStatus text='The default status of this build is: {build.status.text}']

ステータスパラメーター

任意の 状況 パラメーターを ビルドステータス弱いAIを誘導する可能性があるプロンプト:A string with same tags/placeholders as source: none. サービスメッセージで使用すると、ビルドの見た目をオーバーライドできます。失敗したビルドを成功として表示し、(非推奨ですが) 成功したビルドを失敗として表示できます。

  • ビルドのステータスを失敗から成功に変更するには、 ステータス='成功' パラメーターを追加します。

    ##teamcity[buildStatus status='SUCCESS' text='{build.status.text}, the build is marked as successful']
    手動で割り当てられた成功ステータス
  • 「緑色」のビルドを失敗として表示したい場合は、次のメッセージを送信できます。

    ##teamcity[buildStatus status='FAILURE' text='The build status was manually switched to {build.status.text}']

    ただし、これはビルドステータスを変更するだけであり、この「失敗した」ビルドを調査している人に実用的なインサイトは提供されないため、代わりに ビルド問題 メッセージを送信することをお勧めします。 このメッセージにより、単に最終ステータスを変更するのではなく、ビルドを実際に失敗させることができます (そして、この問題に関連する具体的な詳細を提供できます)。 その結果、プロジェクトのメンテナーは、課題を解決するために TeamCity が提供するさまざまなツールを使用できるようになります: 調査、ミュートなど。

    ##teamcity[buildProblem description='The artifact size has decreased dramatically' identity='2281488']

ビルド番号の報告

カスタムビルド番号を直接設定するには、次の形式で ビルド番号 メッセージを指定してください。

##teamcity[buildNumber '<new build number>']

<新しいビルド番号>値では、TeamCity によって自動生成された現在のビルド番号を使用するために、 {build.number} 置換を使用できます。 例:

##teamcity[buildNumber '1.2.3_{build.number}-ent']

ビルドパラメーターの追加または変更

専用のサービスメッセージをビルドスクリプトで使用すると、ビルドステップから直接、そのビルドのビルドパラメーターを動的に更新できます (パラメーターはビルド構成の パラメーター セクションで定義されている必要があります)。 変更されたビルドパラメーターは、変更を行ったステップの後に続くビルドステップで利用できるようになります。 また、ビルドパラメーターとしても利用でき、 %\dep.*% パラメーター参照 を介して依存ビルドで使用できます。例:

##teamcity[setParameter name='ddd' value='fff']

ビルドパラメーターの名前を指定するときは、接頭辞に注意してください。

  • システムプロパティの system

  • 環境変数用の 環境

  • 構成パラメーターの接頭辞はありません。

ビルドパラメーターとその接頭辞についての 続きを読む

ビルド統計の報告

TeamCity では、統計データを報告し、そのデータに基づいてチャートを表示するようにビルドスクリプトを構成できます。 Web UI でチャートを表示するためのガイドについては、 統計チャートのカスタマイズページを参照してください。 このセクションでは、サービススクリプトを介してビルドスクリプトから統計データを報告する方法について説明します。 ビルド統計値は、2 つの方法で公開できます。

##teamcity[buildStatisticValue key='<valueTypeKey>' value='<value>']

where

  • キー事前定義されたキーのいずれとも等しくてはいけません。

  • は最大 13 桁の正または負の整数である必要があります。小数点以下 6 桁までの浮動小数点値もサポートされています。

サービスメッセージ処理の無効化

出力内のサービスメッセージの検索を無効にする必要がある場合は、次のメッセージを使用してサービスメッセージの検索を無効にすることができます。

##teamcity[enableServiceMessages] ##teamcity[disableServiceMessages]

これら 2 つの間に表示されるメッセージは、サービスメッセージとして解析されず、事実上無視されます。 サーバー側のサービスメッセージの処理では、サービスメッセージの有効化 / 無効化も フロー ID 属性をサポートし、同じ フロー ID のメッセージのみを無視します。

サービスメッセージを無効にする コマンドは、それを発行したビルドステップに対してのみサービスメッセージの処理を停止します。 そのステップが終了して新しいステップが開始されると、TeamCity は、後続の サービスメッセージを有効にする コマンドがなくても、サービスメッセージの処理を再開します。

XML レポートのインポート

UI ビルド機能に加えて、 データのインポート サービスメッセージを使用して、ビルドスクリプト内から XML レポートを設定できます。 また、メッセージは以前に収集されたコードカバレッジとコードインスペクション / 重複レポートのインポートをサポートします。

サービスメッセージの形式は次のとおりです。

##teamcity[importData type='typeID' path='<path to the xml file>']

ここで、 typeID は次のいずれかにできます (XML レポート処理も参照):

typeID

説明

テストフレームワーク

JUnit

JUnit Ant タスク XML レポート

Surefire

Maven Surefire XML レポート

NUnit

NUnit コンソールの XML レポート

MSTest

MSTest XML レポート

vstest

VSTest XML レポート

gtest

Google Test XML レポート

コードインスペクション

IntelliJ インスペクション

IntelliJ IDEA インスペクションの結果

チェックスタイル

チェックスタイルインスペクション XML レポート

FindBugs 2)

FindBugs インスペクション XML レポート

JSLint

JSLint XML レポート

ReSharper コードインスペクション 1)

ReSharper inspectCode.exe XML レポート

FxCop 1

FxCop インスペクション XML レポート

PMD

PMD インスペクション XML レポート

コード重複

PMD CPD

PMD コピー / 貼り付け検出機能(CPD)XML レポート

DotNet 重複検出ツール 1)

ReSharper dupfinder.exe XML レポート

コードカバレッジ

.NET カバレッジ 1) 3)

dotcover、partcover、ncover、ncover3 によって生成された XML レポート

注:

  1. パス 属性の特定のファイルのみをサポートします。

  2. インストールされた FindBugs ツールのホームディレクトリを指すように指定された FindBugs ホーム 属性も必要です。

  3. <ツールお名前>dotCoverPartCoverNCover または NCover 3 のいずれかである tool='<ツールお名前>' サービスメッセージ属性も必要です。

特記しない限り、レポートタイプは パス 属性で Ant のようなワイルドカードをサポートします。

  • 詳細='true' 属性はビルドログへの詳細なログインを可能にします。

  • 期限切れを解析='true' 属性は、パスに一致するすべてのファイルを処理します。 デフォルトでは、ビルド中に更新されたもの(最後の修正タイムスタンプによって決定されたもの)のみが処理されます。 一致しないレポートが見つかった場合は、「レポートが期限切れとしてスキップされました」というメッセージがビルドログに表示されます。

  • whenNoDataPublished=<アクション><アクション> は次のいずれかです: 情報 (デフォルト)、 なし警告エラー )は、指定されたパスに一致するレポートが見つからなかった場合、出力レベルを変更します。

  • (非推奨です。代わりに ビルド失敗条件 を使用してください)
    FindBugsPMD または チェックスタイル の importData メッセージは、エラー数と警告数の上限を指定する任意の エラー制限 属性と 警告制限 属性も受け入れます。これらの上限を超えると、ビルドが失敗します。

複数のディレクトリの監視を開始したり、複数の種類のレポートを解析したりするには、対応するサービスメッセージを次々に送信します。

ファイルのビルドログへの書き込み

次のサービスメッセージを送信して、ファイルの内容の追跡を開始し、その新しい行をビルドログに書き込みます。

##teamcity[importData type='streamToBuildLog' filePath='path-to-file' wrapFileContentInBlock='false' charset='UTF-8']
ログに記録するストリームファイル
  • タイプ — 常に「streamToBuildLog」と等しくなります。

  • ファイルパス — 特定のファイルへのパス。 このパスは絶対パス(ファイルパス='%teamcity.build.checkoutDir%/temp.txt' )または相対パス(ファイルパス='./myFolder/temp.txt' )で指定できます。 相対パスは、ビルドを実行するエージェントの現在の作業ディレクトリ(teamcity.エージェント.作業.ディレクトリ パラメーターによって返されるディレクトリ)を基準に解決されます。 指定されたファイルが存在しないか開けない場合、TeamCity はこのファイルへのアクセスを定期的に再試行します (このサービスメッセージを送信したランナーが実行中である限り)。

  • ファイル内容をブロックでラップ (オプション) — このメッセージの出力を折りたたみ可能な「ストリーミングファイル ...」ブロックに配置するかどうかを指定します。 デフォルト値は「true」です。

    ブロックで囲む
  • 文字セット (オプション) — Java でサポートされるエンコーディングの正規名または別名。 引数が存在しない場合、またはエンコーディングを解決できない場合は、UTF-8 が使用されます。

TeamCity は、親ランナーがアクティブである限り、指定されたファイルを監視します。 ランナーが停止すると、ファイルは最後までストリーミングされて閉じられます。

カスタム Slack メッセージの送信

TeamCity サービスメッセージを使用して、Slack ダイレクトメッセージを送信し、Slack チャンネルに更新を投稿できます。

Slack のカスタム TeamCity メッセージ

TeamCity は Slack 接続を使用して Slack メッセージを送信します。 Slack 接続がまだない場合は、 プロジェクト設定 | 接続 に移動して作成してください。

  1. Slack 接続の設定を開き、 通知制限 を任意の正の数に設定します。 この値は、ビルド構成が実行ごとに送信できるメッセージの最大数を指定します。

  2. セキュリティ上の理由から、メッセージ内では同じ TeamCity サーバーへのリンクのみが許可されます。 外部 Web リソースへの URL を含むメッセージは、対応するメッセージが "teamcity-notifications.log" ファイル (管理 | 診断 | サーバーログ) に書き込まれて自動的にブロックされます。

    ブロックされたサービスのメッセージ

    外部リソースへのリンクを含める必要がある場合は、 許可されたホスト名 フィールドにホスト名を入力します。 複数の値を入力するには区切り文字としてコンマ (,) を使用し、文字列のワイルドカードとしてアスタリスク (*) を使用します (*.test.co.uk など)。

  3. Slack 接続が構成されたら、次の形式でサービスメッセージをビルドスクリプトに追加できます。

    ##teamcity[notification notifier='slack' message='Line 1 |rLine2 |rLine3' sendTo='build_farm_alerts' connectionId='PROJECT_EXT_2']
    • 通知機能 — 常に「緩み」に等しくなります。

    • メッセージ — 表示するメッセージ。 Markdown 構文をサポートします (改行には "\n" ではなく、 代わりに "|n" または "|r" を使用してください)。

      Markdown 形式のサービスメッセージ

    • 送信先 — メッセージを受信する人を指定します。 単一の Slack チャネル名、チャネル ID (「C」で始まる、たとえば「C052UHDRZU7」)、ユーザー ID (「U」で始まる、たとえば「U02K2UVKJP7」) を値として受け入れます。 同じメッセージを複数の受信者に送信する必要がある場合は、異なる 送信先 値を使用して複数のサービスメッセージを作成します。

    • 接続 ID — TeamCity がこのメッセージの送信に使用する特定の Slack 接続を選択できるオプションのパラメーター。 接続 ID を値として受け入れます。 このパラメーターが指定されていない場合、TeamCity は現在のプロジェクトで使用可能なすべての Slack 接続を取得し、 通知制限 がゼロではない接続を選択します。

  1. ビルドを実行して、すべての Slack メッセージが配信されることを確認します。

カスタムメールメッセージの送信

TeamCity サービスメッセージを使用して、ビルドスクリプト内からメールを送信できます。

サービスメッセージによって配信されるメール
  1. 管理 | メール通知 に移動し、送信者のメール、SMTP ログインとパスワード、接続セキュリティプロトコルなどの共通 通知機能設定をセットアップします。 例については、リンク Google Mail を通知サーバーとしてセットアップする を参照してください。

  2. 通知制限 設定を任意の正の数に設定します。 この値は、ビルド構成が実行ごとに送信できるメッセージの最大数を指定します。

  3. 受信者のリストを 許可されたアドレス に入力します。 このリスト以外の受信者に送信されたメッセージは、自動的にブロックされます。 複数のアドレスを入力するには区切り文字としてコンマ (,) を使用し、文字列のワイルドカードとしてアスタリスク (*) を使用します (*@gmail.com など)。

  4. セキュリティ上の理由から、メッセージ内では同じ TeamCity サーバーへのリンクのみが許可されます。 外部 Web リソースへの URL を含むメッセージは、対応するメッセージが "teamcity-notifications.log" ファイル (管理 | 診断 | サーバーログ) に書き込まれて自動的にブロックされます。

    ブロックされたサービスのメッセージ

    外部リソースへのリンクを含める必要がある場合は、 許可されたホスト名 フィールドにホスト名を入力します。 複数の値を入力するには区切り文字としてコンマ (,) を使用し、文字列のワイルドカードとしてアスタリスク (*) を使用します (*.test.co.uk など)。

  5. Email Notifier を設定したら、次の形式でサービスメッセージをビルドスクリプトに追加できます。

    ##teamcity[notification notifier='email' message='Message body' subject='Email subject' address='user1@gmail.com,user2@yourcompany.com']
    • 通知機能 — 常に「メール」と等しくなります。

    • メッセージ — メッセージ本文はプレーンテキスト形式です。

    • 件名 — メールの件名。

    • アドレス — Email Notifier の 許可されたアドレス リストからの 1 つまたは複数のアドレス。

  6. ビルドを実行して、すべてのメールが配信されることを確認します。

サービスメッセージによるビルドのキャンセル

スクリプトからビルドをキャンセルする必要がある場合、たとえば、ビルドが環境のせいで正常に続行できない場合、サブプロセスからビルドをキャンセルする必要がある場合は、次のサービスメッセージを使用できます。

echo "##teamcity[buildStop comment='canceling comment' readdToQueue='true']"

必要に応じて、キャンセル後にビルドをキューに再度追加できます。 デフォルトでは、TeamCity はビルドをキューに再追加するために 3 回試行します。

ダウンストリームチェーンビルドは、先行する (アップストリーム) 構成から キューに入っているビルドをスキップ メッセージを送信することでキャンセルできます。 このメッセージは、スキップする構成の ID またはタグを タグ パラメーターとして受け入れます。

##teamcity[skipQueuedBuilds tags='value1,value2,...' comment='Your comment']

ビルドチェーンにリンクされたビルドをキャンセルする方法の詳細については、 部分的なチェーン実行 の記事を参照してください。

ビルドタグの追加と除去

サービスメッセージを使用すると、 ビルドタグを追加および削除できます。

  • ##teamcity[addBuildTag 'カスタムタグ'] — 現在のビルドに新しいタグを追加します。

  • ##teamcity[removeBuildTag '削除するタグ'] — 現在のビルドからタグを削除します。

どちらのメッセージでも、プレーンな文字列の代わりに 構成パラメーターの値を渡すことができます。 例: ##teamcity[addBuildTag '%teamcity.agent.jvm.os.name%'] メッセージタグは、エージェントマシンにインストールされているオペレーティングシステムの名前で構築されます。

ビルドに OS 名をタグ付けする

1 つのサービスメッセージで 1 つのタグを追加または削除できます。 複数のタグを追加または削除するには、複数のサービスメッセージを送信します。

TeamCity サービスメッセージによって結果を報告するライブラリ

JetBrains および外部ソースの複数のプラットフォーム固有ライブラリは、TeamCity サービスメッセージを介して結果を報告できます。

  • サービスメッセージ .NET ライブラリ — .NET アプリケーションから TeamCity サービスメッセージを生成 (および構文解析) するための .NET ライブラリ。 関連するブログ投稿(英語)を参照してください。

  • Jasmine 2.0 TeamCity レポーター — Jasmine 2.0 レポーターから TeamCity サービスメッセージを出力するためのサポート

  • Perl TAP フォーマッター — TAP メッセージを TeamCity サービスメッセージに変換する Perl 用フォーマッター

  • PHPUnit 5.0 — テスト用の TeamCity サービスメッセージをサポートします。 以前の PHPUnit バージョンでは、次の外部ライブラリを使用できます: PHPUnit Listener 1PHPUnit Listener 2 — PHPUnit の suite.xml を介してプラグインし、テスト用の TeamCity サービスメッセージを生成できるリスナーです。

  • TeamCity への Python ユニットテストレポート — サービスメッセージを介して TeamCity サーバーにユニットテストを自動的に報告するパッケージ (TeamCity の下で実行され、テストコードがそれを使用するように適合されている場合)。

  • Mocha(英語) — Mocha JavaScript テストフレームワークのサービスメッセージを介したオンザフライレポート。 手順については、関連する 投稿(英語)を参照してください。

  • Karma — TeamCity サービスメッセージを使用して、テストの進捗を TeamCity に報告するための JavaScript テストツールでのサポート。

Perforce サービスメッセージ

パフォーマンスプロジェクトと連携した パーソナルビルドは、最後の「個人の変更を元に戻す」段階で失敗する可能性があります。 これは通常、この段階が始まる前にコードソースチェックアウトディレクトリが使用できなくなった場合に発生します (たとえば、 Bootstrap ビルドステップによってマウントされ、最後のビルドステップの後に自動的にアンマウントされた場合など)。

このような場合、ビルドステップ実行中に、TeamCity が通常行うよりも早く個人の変更を元に戻す必要があります。 これを行うには、最後のビルドステップ中に次の サービスメッセージを送信します。

##teamcity[undoPersonalPatch]
2026 年 9 月 11 日