ビルド失敗条件
TeamCity では、ビルドが 失敗としてマークされる条件を変更できます。 これらの ビルド失敗条件は、 ビルド構成設定 | 失敗条件
共通ビルド失敗条件
一般的な失敗条件 ブロックでは、TeamCity がビルドを失敗にする方法を正確に指定できます。
カスタムビルド実行タイムアウトの設定
... 分以上実行された場合条件はビルド実行のタイムアウトを設定します。 ビルドが指定された時間(分単位)を超えると、自動的にキャンセルされます。 これにより、ビルドのハングを防ぎ、エージェントの効率性が向上します。 タイムアウトは実際の実行時間のみに適用され、ソースのチェックアウトやアーティファクトの解決などのサービスタスクは除外されることに注意してください。
構成のタイムアウトが 0 (デフォルト値) の場合、グローバル server-wide タイムアウトが適用されます。 それ以外の場合、この構成で指定されたタイムアウトは、 管理 | グローバル設定 で指定されたグローバル値をオーバーライドします。
TeamCity UI では、実行時間はビルドがエージェントに割り当てられた時点から測定されます。 ただし、実際の実行時間はエージェント自体によって追跡され、制限時間を超過したビルドの停止も TeamCity サーバーではなくエージェントが担当します。 その結果、エージェントがサーバーへの接続を失うと (たとえば、ネットワークの課題により)、UI ではビルドが指定された制限を大幅に超えて実行中であると表示される場合があります。
終了コードがゼロでない場合にビルドを失敗させること。
ビルドプロセスの終了コードがゼロでない場合の条件により、ビルドプロセスが正常に終了しない場合にビルドが失敗します。
テスト失敗時にビルドを失敗させる
少なくとも 1 つのテストが失敗した場合の条件は、少なくとも 1 つのテストが失敗した場合にビルドを失敗としてマークします。 このオプションを無効にすると、ビルドがいくつかのテストに合格しなかった場合でも、ビルドは成功としてマークされます。 このオプションに関係なく、TeamCity はすべてのビルドステップを実行します。
テストの再試行をサポート: 成功したテスト実行で以前のテスト失敗をミュートするオプションが有効化されている場合、TeamCity は同じビルド内でテストが失敗した後に成功すると、そのテストをミュートします。 このようなテストはビルドステータスに影響しません。 これは、同じソースリビジョンに適用すると、失敗と成功を交互に繰り返す不安定なテストを含む構成に便利です。
エラーメッセージでビルドを失敗させる
ビルドランナーによってエラーメッセージが記録される場合の条件では、ビルドランナーがビルド中にエラーを報告した場合に、ビルドが失敗としてマークされます。
メモリ不足クラッシュ時にビルドを失敗させる
メモリ不足の問題やクラッシュが検出された場合 (Java のみ) 条件では、JVM のクラッシュが検出された場合、または Java にメモリ不足の問題がある場合に、ビルドが失敗としてマークされます。 可能であれば、TeamCity はそのようなビルドのアーティファクトとして、クラッシュログとメモリダンプをアップロードします。
追加の失敗条件
一部のメトリクス(たとえば、コードカバレッジやアーティファクトサイズ)が別のビルドと比較して変化した場合に、ビルドを失敗としてマークするよう TeamCity に指示できます。 たとえば、コードの重複数が前のビルドよりも多い場合、ビルドに失敗のマークを付けることができます。
別のビルド失敗条件では、ビルドログに特定のテキストが含まれている場合に、TeamCity がビルドを失敗としてマークします。
このような障害状態を追加するには、 ビルド失敗条件を追加 をクリックしてリストから選択します。
メトリクス変更時にビルドを失敗させる
ビルドでコードカバレッジ、重複ファインダー、インスペクションなどのコード検査ツールを使用すると、さまざまな数値メトリクスが生成されます。 これらのメトリクスには、超過した場合にビルドを失敗させるしきい値を指定できます。
一般に、このビルド失敗条件を構成するには 2 つの方法があります。
ビルドメトリクスが指定した定数値(しきい値)を超えているか、下回っています。
たとえば、 次の場合にビルドを失敗させる: "ビルド期間(秒)" が定数値と比較して "大きい"、つまり "300" を超える場合です。
この場合、ビルドが 300 秒を超えて実行されると失敗します。ビルドメトリクスが、特定のビルドと比較して指定した値だけ変化しています。
たとえば、 次の場合にビルドを失敗させる: "ビルド期間(秒)" が別のビルドの値と比較して "大きい" 方向に、" 300" 以上のこのメトリクスのデフォルト単位だけ、" 最後に成功したビルド" の値より大きい場合です。
この場合、ビルドが最後に成功したビルドより 300 秒長く実行されると失敗します。 ブランチ仕様が構成されている場合は、 次のロジックが適用されます。
次のビルドの値は、ビルドメトリクスを比較するための基準として使用できます。
最後に成功したビルド
最後の固定ビルド
最後に完了したビルド
指定されたビルド番号でビルドする
指定されたタグでビルドを最後に終了しました。
デフォルトでは、TeamCity は幅広い ビルドメトリクスを提供します:
アーティファクトサイズ(バイト) —
.teamcityディレクトリの 内部アーティファクトを除くアーティファクトのサイズビルド期間(秒) — ソースをチェックアウトする時間を除くビルド期間
クラスの数
複製されたコードの数
対象クラスの数
カバーラインの数
カバーされるメソッドの数
失敗したテストの数
無視されたテストの数
インスペクションエラーの数
インスペクション警告の数
コードの行数
メソッドの数
合格したテストの数
テスト数
ブロックカバレッジの割合
クラスカバレッジの割合
回線カバレッジの割合
メソッドカバレッジの割合
ステートメントカバレッジの割合
テスト時間 (秒)
アーティファクトの合計サイズ(バイト) — 内部アーティファクトを含むすべてのアーティファクトのサイズ
カスタムビルドメトリクスの追加
独自のビルドメトリクスを追加できます。 それには次の 2 つの方法があります。
Kotlin DSL を使用して、ビルドによって報告される カスタム統計値に対してビルド失敗条件を構成します。
Kotlin DSL コードのサンプルは次のとおりです。
failureConditions { failOnMetricChange { param("metricKey", "myReportedCustomStatisticValue") .... } }TeamCity 構成ファイル
<TeamCity データディレクトリ>/config/main-config.xmlを変更します。変更にはシステム管理者権限が必要です。サーバーノードの下にあるmain-config.xmlに、次のセクションを追加します:<build-metrics> <statisticValue key="myMetric" description="build metric for number of files"/> </build-metrics>
ビルドで myMetric 値を公開する場合、ビルド失敗の基準として使用できます。
ビルドログ内の特定テキストでビルドを失敗させる
TeamCity は、ビルド失敗を示す特定のテキストの出現を探すために、ビルドログ内のすべての行を検査できます。 行を照合する場合、各ログメッセージの前にある時間とブロック名の接頭辞は無視されます。
このビルド失敗条件を構成するには、次を指定します。
ビルドログの存在 / 不在がビルド失敗のインジケータである文字列または Java 正規表現 (英語)
この状態が原因でビルドが失敗した場合に、 ビルド結果 ページに表示される失敗メッセージ。
Regex を使用する場合、" 失敗メッセージ" フィールドから正規表現またはその一部を参照できます(たとえば、特定の キャプチャグループを $N で参照します。この場合、 N はグループ番号です)。 これにより、一致したエラーテキストを、ビルド結果に表示される失敗メッセージに含めることができます。
TeamCity は、ビルドログで最初に見つかったテキストの出現についてのみビルドの問題を報告します。 代わりに見つかった一致ごとに問題を報告するには、オプション 最初の一致でのみビルド問題を作成するを無効にします。 これは、ビルドツールが検索されたパターンに一致する複数の異なるエラーを送信し、それぞれについて問題レポートを取得したい場合に役立ちます。
ビルドをすぐに停止する
ビルドログで指定されたテキストに遭遇した場合、または メトリクスの変更で失敗する条件を使用して指定された特定のビルドメトリクスを超えた場合、ビルドをすぐに停止できます。