TeamCity オンプレミス 2025.11 ヘルプ

ビルドとテストの失敗への対処

ビルドの実行中、通常、次のいずれかの種類の障害が発生する可能性があります。

  • テストの失敗 - ビルド中に試行されたユニットテストまたは機能テストの失敗。

  • ビルドの問題 - ビルド中に発生したその他の問題: リモートリポジトリにアクセスできない、ビルドアーティファクトの取得またはアップロードに失敗する、コンパイルエラーなど。

ビルドの問題を表示

TeamCity では、ビルドの問題を検出して調査する方法が複数あります。

ビルド結果ページ

ビルド結果ページには、この個々のビルド実行に関する最も詳細な情報が表示されます。概要タブには、この実行中に発生したビルドとテストの問題の概要を示す展開可能なセクションが表示されます。

Build Results Overview

ビルドの問題が初めて発生すると、ビルドのステータスメッセージに「(新規)」が追加されます。これにより、ビルド履歴をスクロールするときに、固有の問題と繰り返し発生する問題をすばやく区別できます。

New build problem

問題をクリックすると、その問題に対応するビルドログの一部が表示されます。

Expand build problem

失敗したテストでは、現在の障害 / 最初の失敗トグルも表示され、繰り返し発生する問題が最初に発生したビルドにすばやく移動できます。

First failed test

新しいビルドが同じテストに失敗することなく完了しているのに、古いビルドの結果を表示している場合、失敗は取り消し線で表示されます。この場合、この新しいビルドを指すすでに修正済みタブが表示されます。

Already fixed

テストのステータスが失敗から成功に頻繁に変化する場合、TeamCity はそのようなテストを flaky としてマークします。詳細については、専用の不安定なテストセクションを参照してください。

問題タブ

プロジェクトの問題タブには、子サブプロジェクトの問題も含め、現在アクティブなすべてのビルドの問題の概要が表示されます。

Problems tab

このページでは、ビルドとテストの失敗を切り替えたり、問題を状態別にフィルタリングしたりできます。

ビルドの問題とテストの失敗を管理する

TeamCity の問題管理機能は、調査とミュートという 2 つの基本概念を中心に展開されます。

調査

調査対象の問題は、TeamCity ユーザーが割り当てられている問題です。これらのユーザーは、対応するビルドの問題やテストの失敗を修正する責任があります。

ユーザーに割り当てられた調査の合計数は、TeamCity ヘッダーに表示されます。この UI 要素をクリックすると、調査ページが開き、これらの調査の詳細情報を表示できます。

Investigations counter

TeamCity は、調査された問題を視覚化するために警察官のアイコンを描画します。このアイコンの上にマウスを置くと、問題に関する詳細情報が表示され、ユーザーは問題を再割り当てしたり、手動で修正済みとしてラベル付けしたりできます。

Investigation tooltip

ユーザーが調査を修正済みとしてマークすると、アイコンの色が緑に変わります。このアイコンは、同じ問題が発生することなく新しい実行が終了するまで表示されたままになります。

Fixed investigation

問題のステータスを手動で「修正済み」に設定すると、TeamCity ヘッダーのユーザーの調査カウンターは減りますが、問題が引き続き発生する場合、新しいビルドが失敗することを防ぐことはできません。TeamCity でこの問題を無視したい場合は、修正済みとしてラベル付けするのではなく、ミュートします

TeamCity は、問題調査を自動的に作成し、これらの障害の原因である可能性が最も高いユーザーに割り当てます。これを行うには、調査自動割り当てビルド機能を構成します。

ミュート

ミュートされた問題は、ビルドが正常に終了したことを報告することを妨げない問題です。ミュートされた問題が原因で失敗したビルドは、正常に終了したと表示され、ミュートされた問題の数が表示されます。

Muted problems overview

ビルドの問題またはテストをミュートすると、解決されると予想される既知の問題を一時的に無視したり、失敗すると予想されるテストを無視したり、ビルドで問題が発生した場合でも後続のステップまたはビルドチェーン構成が実行されるようにしたりできます。

TeamCity は、ミュートされた問題を視覚化するためにスピーカーアイコンを描画します。このアイコンの上にマウスを置くと、この問題に関する詳細情報が表示されます。

Muted tooltip 1
Muted tooltip 2

失敗したテストをミュートする

テストのミュートは、「少なくとも 1 つのテストが失敗しましたビルド失敗条件で失敗するビルドにのみ影響し、他の条件には影響しません。ビルドに他の失敗条件 (たとえば、ゼロ以外の終了コード) が適用される場合、失敗したテストがミュートされていてもビルドは失敗します。

失敗したがミュートされたテストがあるときにビルドを成功させるために、ビルドスクリプトを調整する必要がある場合があります。発生したエラーがテストの失敗のみであった場合は、他のビルド障害条件(たとえば、「ビルドプロセスの終了コードがゼロでない場合は失敗します」)のためにビルドが失敗しないことを確認してください。詳細については、関連する問題 TW-16784(英語) を参照してください。

アクティブな問題を管理する

ビルド結果ページ問題タブの両方に、ユーザーが問題をミュート、ミュート解除、調査、修正済みとしてマーク、別のユーザーに再割り当てできる UI 要素が表示されます。複数の問題に同じアクションを一度に適用するには、問題タブに移動して必要なエントリを選択します。

Bulk mute problems

調査とミュートを編集する場合、TeamCity では次の設定を指定できます。

  • 調査 / ミュート範囲。同じプロジェクト内のすべての構成 (その子サブプロジェクトを含む) に属するビルドでこの問題をミュート / 調査するには、「プロジェクト全体」を選択します。「選択したビルド構成」オプションを使用すると、必要な構成に対してのみ問題をミュート / 調査できます。

  • 調査と担当者。ミュートされた問題は、失敗したビルドが成功したように見え、根本的な問題が見えにくくなる可能性があります。そのため、ミュートと調査を組み合わせて、誰も調査していない問題をミュートしたままにしないようにすることをお勧めします。

  • 自動ミュート解除 / 解決ポリシー。TeamCity が問題をミュート解除するか、解決済みとしてマークする条件を指定できます。

    • Automatically when fixed — 問題が新しいビルドで解決された場合、TeamCity はそれをミュート解除し、関連する調査を終了します。これは、今後のビルドで問題が再発した場合にチームが迅速に対応できるようにするデフォルトのシナリオです。

      "fixed" の問題は、ステータスが手動で変更された問題 ( 調査セクションを参照)、または新しいビルドで解消された問題です。ブランチとの関係も参照してください。

    • Manually — TeamCity ユーザーのみが、アクティブな調査を閉じてミュートを元に戻すことができます。このモードは、不安定なテストをミュート / 調査する場合に推奨されます。これらのテストは不安定であり、正常に実行されても問題が解決されることは保証されないためです。

    • On a specific date — TeamCity は、指定された日付に調査を終了するか、問題のミュートを解除します。この条件は、チームがすぐに修正できないが、CI ルーチンを実行し続ける必要がある、重大ではない問題に役立ちます。

  • 設定を子サブプロジェクトにコピーします。このプロジェクトとその子サブプロジェクトに存在する調査 / ミュートを編集する場合、TeamCity では、更新された設定をこれらのサブプロジェクトに伝播するかどうかを選択できます。そうでない場合、子サブプロジェクトの調査 / ミュートは異なります (たとえば、別のユーザーに割り当てられます)。

    Copy settings

必須アクセス権

プロジェクト内の調査 / ミュートを管理および表示するには、ユーザーにこのプロジェクトで次の権限が付与されている必要があります。

  • ミュートを管理するための「プロジェクト内のミュート / ミュート解除の問題」

  • 調査を管理するための「調査の割り当て / 割り当て解除」

  • 既存の調査 / ミュートを表示するための「プロジェクトとすべての親プロジェクトを表示」

これらの権限は、デフォルトでプロジェクト管理者とシステム管理者に付与されます。

ブランチとの関係

調査とミュートはブランチ固有のものではありません。問題が調査またはミュートされると、その問題が現れるすべてのブランチに対して調査 / ミュートされます。ただし、TeamCity はブランチ固有のビルドをチェックして、問題が修正されたかどうかを判断します。これは、「修正時に自動的に」ミュート解除 / 調査終了条件の問題の処理方法に影響します。

  • 複数のブランチで障害が発生し、そのうちの 1 つがデフォルトのブランチである場合、デフォルトのブランチで障害が解消されると問題は解決されたとみなされます。

  • デフォルト以外のアクティブなブランチのみで障害が発生した場合、これらすべてのブランチで障害が解消されると問題は解決されたとみなされます。

不安定なテスト

不安定なテストとは、ビルド実行間で違いがないように見える、成功または失敗の両方で終了する可能性のある不安定なテストです。TeamCity は、次のいずれかに該当する場合、テストを不安定であると見なします。

  • テストのフリップレートが高い場合。フリップとは、テストのステータスが成功から失敗に、またはその逆に変わる 1 回の発生です。TeamCity は、特定のテストの呼び出し回数の合計に対するこのようなフリップの比率を計算します。この比率は、エージェントごと、ビルド構成ごと、または特定の期間 (デフォルトでは 7 日間) にわたって測定されます。常に失敗または成功するテストのフリップレートは 0 に近くなります。呼び出されるたびに「フリップ」するテストのフリップレートは 100% に近くなります。

  • 基礎となるコードの変更なしに反転されたテスト。同じリビジョンを処理した前回のビルド実行と比較して逆のステータスでテストが終了した場合 (つまり、新しい変更が処理されていない場合)、TeamCity はこのテストを不安定であると見なします。

  • 1 つのビルド中に複数回呼び出されたテストが、異なるステータスで終了しました。このヒューリスティックは、invocationCount が 1 より大きい TestNG(英語) ユニットテストと、テスト再試行回数が 0 より大きい .NET ランナーによって実行されるテストでサポートされます。

次の場合、テストは不安定であるとはみなされません。

  • 同じ VCS 変更に対して、異なる構成の複数のビルドが実行され、これらのビルド間でテスト結果が異なります。このような結果は、環境の問題によって発生する可能性が最も高くなります。

  • VCS ルートにはブランチが設定されており、テストによってデフォルト以外のブランチが反転します。

TeamCity は、ビルド結果ページテストタブに不安定なテストを表示します ...

Flaky tests in build results

... そして親プロジェクトのフレークテストページにあります。

Flaky tests in project

JUnit(英語) テストの場合、サードパーティの tempus-fugit(英語) ライブラリを JUnit と一緒に使用できます。以下の最小例のように、@Intermittent でテストにアノテーションを付け、IntermittentTestRunner テストランナーを使用するだけで十分です。

import org.junit.Test; import org.junit.runner.RunWith; import com.google.code.tempusfugit.concurrency.IntermittentTestRunner; import com.google.code.tempusfugit.concurrency.annotations.Intermittent; @RunWith(IntermittentTestRunner.class) public class MultipleViaTempusFugit { @Test @Intermittent(repetition = 10) public void test() { // ... } }

このようなテストが 1 つのビルド内の複数の呼び出しで少なくとも 1 回フレークすると、フレーク故障ヒューリスティックがトリガーされます。

失敗したテストと同様に、不安定なテスト(または複数のテスト)に調査を割り当てることができます。不安定なテストの場合、解決方法は自動的に「手動」に設定されます。それ以外の場合、テストが成功すると調査は自動的に削除されますが、これはフレークテストが修正されたことを意味するものではありません。

2025 年 5 月 19 日

関連ページ:

ビルド結果ページ

TeamCity では、ビルドに関するすべての情報 (キューに入っているか、実行中か、完了しているかに関係なく) がビルド結果ページに蓄積されます。ビルド結果を表示するには、任意の構成を選択してビルド履歴を表示し、必要なビルド番号をクリックします。このページには、いくつかの静的タブ (概要、変更、ビルドログ、アーティファクトなど) と、特定の構成機能に応じて表示が決まるコンテキストタブが含まれます。例: 依存関係タブは、親構成がビルドチェーンに属するビルドに対してのみ表示されます。内部ビルド ID...

ビルドログ

ビルドログは、ビルドの拡張コンソール出力です。ビルド中に発生したイベントの構造化されたリストで表されます。通常、ビルドログには、TeamCity が実行したアクションのエントリと、ビルド中に起動されたプロセスの出力が含まれます。TeamCity はプロセスの出力をキャプチャーし、階層表示を可能にする内部形式で保存します。ビルドログを表示する:完全なログの詳細を表示するには、ビルド結果ページに移動し、ビルドログタブに切り替えます。このタブには次の UI 要素が表示されます。すべて展開 / すべて折り...

履歴ビルド

履歴ビルドは、より最近の変更を含むビルドの後に開始されるビルドです。つまり、履歴ビルドは、ソースリビジョンの順序に従って通常のビルドフローを中断するビルドです。次の状況では、ビルドは履歴ビルドになる可能性があります。カスタムビルドを実行するダイアログを使って手動で特定の変更をビルドする場合。静かな期間が設定された VCS トリガーがあります。この静かな期間中に、別のユーザーがより最近の変更でビルドを開始できます。この場合、自動的に起動されたビルドは起動時に古いソースリビジョンを持ち、履歴ビルドとし...

ユーザープロファイルの構成

ユーザープロファイル設定にアクセスするには、ヘッダーのアバターをクリックし、ドロップダウンメニューからプロファイルを選択します。パスワードを変更する:組み込み認証が設定されている場合、TeamCity サーバーはユーザー認証用のパスワードを保持します。プロファイル | 一般 | 組み込み認証でパスワードを変更できます。既存のパスワードと新しいパスワードを入力し、変更を保存をクリックします。パスワードは、組み込みの認証でのみ変更できます。これらのフィールドが表示されない場合は、TeamCity...

調査自動割り当て

TeamCity は、ビルドの問題 (コンパイルエラーなど) とテストの失敗を分析し、コミットがこれらの問題を引き起こした可能性のあるユーザーを特定しようとします。テストが失敗した場合、TeamCity はこれらの潜在的に責任のあるユーザーを調査員として提案します。提案に加えて、同じヒューリスティックを使用して失敗したテストとビルドの問題の調査を自動的に割り当てる調査自動割り当てビルド機能を追加できるようになりました。調査員として割り当てられたユーザーには、管理ボタンの横に対応する通知が表示され...

ビルドチェーン

ビルドチェーンは、スナップショット依存関係によって相互接続された一連のビルドです。ビルドチェーンは「パイプライン」と呼ばれることもあります。リビジョン同期が有効になっているスナップショット依存関係にリンクされたビルドチェーンの各部分は、ソースの同じスナップショットを使用します。一般的なユースケース:ビルドチェーンを指定する最も一般的な使用例は、プロジェクトの同じテストスイートを異なるプラットフォームで実行することです。例: リリースビルドの前に、さまざまなプラットフォームと環境でテストが正しく実...