TeamCity 2019.2ヘルプ

TeamCityとスクリプトの相互作用を構築する

このページで:

TeamCityがあなたのテスト用フレームワークやビルドランナーをそのままサポートしていない場合でも、ビルドスクリプトをカスタマイズしてTeamCityサーバーとやり取りすることで、TeamCityの多くの利点を利用することができます。これにより、テストフレームワークやランナーに関係なく、あらゆるチームが幅広い機能を利用できるようになります。これらの機能には、リアルタイムのテスト結果とカスタマイズされた統計の表示、ビルドステータスの変更、ビルドが完了する前のアーティファクトの公開などがあります。ビルドスクリプトのやり取りは、次の方法で実装できます。

  • ビルドスクリプト内のサービスメッセージ

  • teamcity-info.xml ファイル (古いアプローチ、代わりにサービスメッセージを使用することを検討してください)

サービスメッセージ

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

TeamCity、それらはビルドの標準出力ストリームに書かれる必要があります。すなわち、印刷されるか、ビルドステップからエコーされます。で処理します。1行に1つのサービスメッセージを出力することをお勧めします(つまり、メッセージを改行記号で分割します)。

例:

Windows

echo ##teamcity[<messageName> 'value']

Linux

echo "##teamcity[<messageName> 'value']"

PowerShellスクリプト

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

1つのサービスメッセージに改行文字を含めることはできません。複数行にまたがることはできません。

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

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

  • 単一属性メッセージ

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

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

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

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

where:

  • messageNameはメッセージの名前です。サポートされているメッセージについては下記を参照してください。メッセージ名は有効なJava IDでなければなりません (英数字で始まり、英数字で始まる「-」のみ)

  • propertyNameはメッセージ属性の名前です。有効なJava IDでなければなりません。

  • valueは属性の値です。エスケープ値にする必要があります。(下記参照)。

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

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

  • ...は任意の数の WSPpropertyNameOWSP=OWSP'value' ブロックです

エスケープ値

エスケープ値の場合、TeamCityは縦棒「|」を使用します。エスケープ文字として。特定の文字がTeamCityサーバーによって正しく解釈されるようにするには、それらの前に縦棒を付けなければなりません。例:次のメッセージ

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

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

文字

として逃げる

' (アポストロフィ)

|'

\n (改行)

| n

\r (復帰)

| r

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

| 0xNNNN

| (縦線)

||

[ (左角括弧)

| [

] (右角括弧)

| ]

共通プロパティー

すべての「メッセージおよび複数属性」メッセージは、以下のオプション属性のリストをサポートします。timestamp , flowId。以下の例では、<messageName> は特定のサービスメッセージの名前です。

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

##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' ...]

メッセージFlowId

flowIdは、ビルド内のメッセージフローの一意の識別子です。たとえば、Flowトラッキングは、並行して実行されている別々のプロセスを区別するために必要です。識別子は、個々のビルドの範囲内で一意であるべき文字列です。

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

ビルドログに関するメッセージの報告

次の方法でビルドログのメッセージを報告できます。

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

where:

  • status 属性は次の値を取ります: NORMAL , WARNING , FAILURE , ERROR。デフォルト値は NORMALです。

  • errorDetails 属性は、statusERRORの場合にのみ使用されます。それ以外の場合は無視されます。このメッセージは、ステータスが ERROR で、ビルド構成のビルドの失敗条件ページで「ビルドランナーによってエラーメッセージがログに記録された場合はビルドに失敗する」ボックスがチェックされている場合にビルドに失敗します。例:

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

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

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

ブロックオープニング:

blockOpened システムメッセージで name 属性を使用できます。blockOpened メッセージに説明を追加することもできます。

##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:

  • compiler name は、コンパイルを実行するコンパイラの任意の名前です。javac、groovycなど。現在はビルドログでブロック名として使用されています。

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

レポートテスト

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

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

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

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

すべての個々のテストメッセージは、同じ name 属性を持つ testSuiteStartedtestSuiteFinished の間に(この順序で)表示されます。

入れ子になったテスト報告

TeamCity 9.1より前、あるテストが別のテスト内から報告された可能性があります。(このセクションの最後にある例を参照)。それ以降のバージョンでは、別のテストを開始すると、現在開始されているテストは同じ「フロー」で終了します。他のテスト内からテストを報告するには、ネストしたテストサービスメッセージに別の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>']

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

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

  • captureStandardOutput (オプションのブール属性) - trueの場合、testStarted メッセージと testFinished メッセージの間に受信されたすべての標準出力(および標準エラー)メッセージはテスト出力と見なされます。デフォルト値は false で、テスト出力を報告するための testStdOut および testStdErr サービスメッセージの使用を想定しています。

test suite + test name のペアがビルド内で一意であることを確認することを強くお勧めします。TeamCityの高度なテスト関連機能が機能するためには、テスト名がビルドごとに異なってはいけません(単一のテストがすべてのビルドで同じ名前で報告される必要があります)。報告されたテスト名に絶対パスを含めることは強くお勧めできません

無視されたテスト:

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

テスト "testName"が存在するが、テストフレームワークによって実行されなかった(無視された)ことを示します。例外として、testIgnored メッセージは、一致する testStarted および testFinished メッセージなしで報告される可能性があります。

テスト出力:

##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']

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

テスト結果:

##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']

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

  • message はエラーのテキスト表現を含みます

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

  • actual および expected 属性は、比較の失敗を報告するために type='comparisonFailure' と一緒にしか使用できません。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 should 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']

テスト名の解釈

完全なテスト名は次の形式を取ります: <suite name>:<package/namespace name>.<class name>.<test method>(<test parameters>) ,

<class name>と<test method>では、名前にドットを含めることはできません。<テスト方法>だけが完全なテスト名の必須部分です。

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

完全なテスト名の例は次のとおりです

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はテストタブでのフィルタ処理のために完全なテスト名から<スイート名>を抽出しようとし、スイート以降のすべてを解析不能なテスト名として扱います。

追加テストデータの報告

TeamCity 2018.2以降testMetadata サービスメッセージを使用してテストに追加情報を添付することは可能です。詳細は別ページにあります

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

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

報告インスペクション

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

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

インスペクションタイプ

コード内の特定の警告またはエラー(インスペクションインスタンス)にはそれぞれインスペクションタイプがあります: これは、実施されたインスペクションの一意の説明で、これは

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

すべての属性が必要であり、数値またはテキスト値を持つことができる場所

  • id - (必須)255文字以内

  • name - (必須)255文字以内

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

  • description - (必須)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> 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>']

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

  • typeId - (必須)、上記inspectionType.id を255文字以内で参照

  • message - (オプション)現在のインスタンスの説明(4000文字以内)

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

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

  • additional attribute - 任意の属性を指定できます。SEVERITY はここでよく使用され、次のいずれかの値です。(大文字を気にする): INFO , ERROR , WARNING , WEAK WARNING

サンプル

##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>']

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

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

成果物はバックグラウンドでアップロードされるため、時間がかかる場合があります。一致するファイルがビルドの最後まで削除されていないことを確認してください(たとえば、次回のビルド開始時にクリーンアップされるディレクトリー一時ディレクトリー、またはビルド後にSwabraを使用してクリーンアップすることができます)。

ビルド構成設定で指定された成果物は、通常どおりに公開されます。

ビルドの進行状況を報告する

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

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

##teamcity[progressMessage '<message>']

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

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

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

ビルド問題の報告

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

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

where:

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

  • identity (オプション):固有の問題ID。異なる問題には異なるアイデンティティ、同じ問題–同じアイデンティティが必要です。たとえば、同じコンパイルエラーが発生した場合など、同じ問題がビルド全体で発生することはありません。60文字までの有効なJava IDである必要があります。省略すると、identitydescription テキストに基づいて計算されます。

ビルドステータスの報告

TeamCityでは、ビルドスクリプトからビルドステータステキストを変更できます。進行メッセージとは異なり、この変更はビルドが終了した後も持続します。
失敗したビルドのビルドステータスを SUCCESSに変更することもできます。

ステータスを設定したり、ビルドステータスのテキストを変更したりするには(たとえば、テストフレームワークがTeamCityでサポートされていない場合は失敗したテストの数を書き留めます)、次の形式の buildStatus メッセージを使用します。

##teamcity[buildStatus status='<status_value>' text='{build.status.text} and some aftertext']

where:

  • status (オプション): SUCCESS 値を使用して、ビルドステータスを成功に変更します。

  • text (必須):新しいビルドステータステキストを設定します。
    オプションで、テキストは {build.status.text} 置換パターンを使用できます。これは、合格したテストカウント、コンパイルメッセージなどを使用してTeamCityによって自動的に計算されたステータスを表します。
    ステータスセットは、ビルドの実行中に表示され、最終的なビルド結果にも影響します。

ビルド番号の報告

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

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

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

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

ビルドパラメータを追加または変更する

ビルドスクリプトで専用のサービスメッセージを使用することで、ビルドステップからビルドのビルドパラメーターを動的に更新することができます(パラメーターはビルド構成のパラメータセクションで定義する必要があります)。変更されたビルドパラメータは、変更後のビルドステップで使用可能になります。それらはビルドパラメータとしても利用可能になり、 %dep.*% parameter references による依存ビルドで使用することができます。

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

ビルドパラメータの名前を指定するときは、プレフィックスに注意してください。

  • システムプロパティーのシステム。

  • 環境変数のenv

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

ビルドパラメーターとその接頭辞についてのさらに読み込む

ビルド統計の報告

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

  • ビルドスクリプトでサービスメッセージを直接使用する

  • teamcity-info.xmlファイルを使用してデータを提供する
    サービスメッセージを使用してビルド統計を報告する: 報告したい統計値ごとに、「buildStatisticValue」サービス・メッセージを以下の形式で指定してください。

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

where

  • key は、事前定義されたキーのどれとも等しくないはずです。

  • value は最大13桁の正/負の整数です。小数点以下6桁までのfloat値もサポートされています。

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

何らかの理由で出力内のサービスメッセージの検索を無効にする必要がある場合は、メッセージでサービスメッセージの検索を無効にすることができます。

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

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

XMLレポートのインポート

UIビルド機能に加えて、importData サービスメッセージを使用して、ビルドスクリプト内から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-inspections

TeamCity 2017.1以降、IntelliJ IDEA、インスペクションの結果

checkstyle

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

findBugs 2)

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

jslint

JSLint XMLレポート

ReSharperInspectCode 1)

ReSharper inspectCode.exe XMLレポート

FxCop 1

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

pmd

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

コードの重複

pmdCpd

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

DotNetDupFinder 1)

ReSharper dupfinder.exe XMLレポート

コード・カバレッジ

dotNetCoverage 1) 3)

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

注:

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

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

  3. <tool name>dotcover , partcover , ncover または ncover3のいずれかである tool='<tool name>' サービスメッセージ属性も必要です。

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

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

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

  • 指定されたパスに一致するレポートが見つからなかった場合、whenNoDataPublished=<action> (ここで、<action>は次のいずれかです。info (デフォルト)、nothing , warning , error)は出力レベルを変更します。

  • (代わりに非推奨、ビルド失敗条件を使用
    findBugs , pmd または checkstyle importDataメッセージは、オプションの errorLimit および warningLimit 属性を取り、エラーおよび警告制限を指定します。これを超えると、ビルドが失敗します。

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

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

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

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

必要に応じて、キャンセルした後でビルドをキューに再度追加できます。

TeamCityサービスメッセージ経由のライブラリーレポート結果

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

teamcity-info.xml

古い方法として、ビルドスクリプトに情報を収集させ、ルートビルドディレクトリーに teamcity-info.xml と呼ばれるXMLファイルを生成させることも可能です。ビルドが完了すると、このファイルは自動的にビルド成果物としてアップロードされ、TeamCityサーバーによって処理されます。

このアプローチは将来のTeamCityバージョンで廃止れる可能性があるため、代わりにサービスメッセージアプローチが推奨されることに注意してください。サービスメッセージが役に立たない場合は、詳細をお知らせください。メール(英語)でケースを説明してください。

ビルドステータスを変更する

TeamCityには、ビルドスクリプトから直接ビルドステータスを変更する機能があります。ステータス(ビルド失敗または成功)を設定し、ビルドステータスのテキストを変更できます(たとえば、テストフレームワークがTeamCityによってサポートされていない場合は失敗したテストの数を書き留めます)。

teamcity-info.xmlのXMLスキーマ(英語)

ビルドに対して以下の情報を設定することが可能です。

ビルド番号 - 完成したビルドの新しい番号を設定します。{build.number}を使用してTeamCity提供のビルド番号を参照できます。

ビルド状況 - ビルドステータスを変更します。サポートされている値は "FAILURE" と "SUCCESS" です。

ステータステキスト - ビルド状況のテキストを修正します。TeamCity提供のステータステキストを置き換えるか、標準テキストの前後にカスタムパーツを追加できます。サポートされている action 値は、"append"、"prepend"、および "replace" です。

teamcity-info.xml ファイルの例:

<build number="1.0.{build.number}"> <statusInfo status="FAILURE"> <!-- or SUCCESS --> <text action="append"> fitnesse: 45</text> <text action="append"> coverage: 54%</text> </statusInfo> </build>

カスタム統計の報告

TeamCityでカスタムチャートを提供することは可能です。あなたのビルドは teamcity-info.xml ファイルを使ってそのようなグラフのデータを提供することができます。

teamcity-info.xmlファイルを使用してデータを提供する

このファイルは、ビルドによってビルドのルートディレクトリーに作成されます。複数の統計を公開し(下記のデータ形式の詳細を参照)、値のセットごとに別々のチャートを作成することができます。

teamcity-info.xml ファイルには、次の形式のコードが含まれています( teamcity-info.xml ファイルにさまざまなデータを組み合わせることができます)。

<build> <statisticValue key="chart1Key" value="342"/> <statisticValue key="chart2Key" value="53"/> </build>

key は、事前定義されたキーのどれとも等しくないはずです。 value は最大13桁の正/負の整数です。小数点以下6桁までのfloat値がサポートされています。

ここでのキーは、チャートを説明するときに使用されるvalueTypeタグのキーに関連しています。

カスタムチャートの説明

詳細は統計チャートのカスタマイズのページを参照してください。