TeamCity データクリーンアップ
TeamCity のクリーンアップ機能により、古い不要なビルドデータを自動的に削除できます。
サーバーのクリーンアップ構成は 管理 | サーバー管理 | クリーンアップ設定 で使用可能です。 クリーンアップスケジュールの設定が可能で、一般的なクリーンアップ情報が表示されます。
特定のプロジェクトに関連するクリーンアップルールは、 プロジェクト設定 | クリーンアップルール で構成します。 これらのルールは、クリーンアップするデータと保持するデータを定義します。 プロジェクトまたはビルド構成に割り当てることができます。
古いビルドとそのアーティファクトを除去し、ディスク容量を解放するためにデータベースとキャッシュから不要なデータを消去し、TeamCity UI からビルドを削除して TeamCity のワークロードを減らすように、クリーンアップルールを構成することをお勧めします。
クリーンアップにより、 <TeamCity データディレクトリ>/system およびデータベースに保存されているデータが削除されます。 また、クリーンアップ中に、サーバーはさまざまなメンテナンスタスクを実行します (たとえば、VCS フルパッチキャッシュをリセットします)。
サーバークリーンアップ設定
サーバーのクリーンアップ設定は 管理 | サーバー管理 | クリーンアップ設定 で構成されます。
ビルド履歴のクリーンアップはバックグラウンドプロセスとして実行されるため、サーバーメンテナンスのダウンタイムは発生しません。
クリーンアップするデータ量によっては、処理にかなりの時間がかかる場合があり、その間サーバーのパフォーマンスが低下する可能性があります。 そのため、ピーク時間外にクリーンアップをスケジュールすることをお勧めします。 デフォルトでは、TeamCity は毎日 3:00 AM にクリーンアップを開始します。 毎日の開始時刻を変更するか、カスタム cron 式を構成して、必要な周期でクリーンアップを開始できます。
また、 クリーンアップを手動で開始することもできます。
クリーンアッププロセスの制限時間も指定できます。 指定した時間枠内にすべてのデータがパージされない場合、残りのデータは次のクリーンアッププロセス中に削除されます。
クリーンアップが有効化されている場合、TeamCity はデフォルトでサーバーの 監査レコードを一年間 (365 日間) 保持します。
手動クリーンアップの開始
サーバーのクリーンアップ設定の 前回のクリーンアップ セクションでは、以下のことが可能です。
以前のサーバークリーンアップの日付と期間に関する情報を確認して、特定のタイミングでクリーンアッププロセスを開始するかどうかを判断します。
今すぐクリーンアップを開始 ボタンを使用して、手動でクリーンアップを実行します。
クリーンアップ中、TeamCity は進捗を報告します。 必要に応じてクリーンアッププロセスを停止でき、残りのデータは次回のクリーンアップ中に除去されます。
クリーンアップルール
クリーンアップ規則は、現在のプロジェクト、そのサブプロジェクト、ビルド構成のデータを消去する方法を定義します。
プロジェクト設定の クリーンアップルール ページでは、現在のプロジェクトとそのビルド構成のクリーンアップルールを表示および管理できます。 このプロジェクトにサブプロジェクトがある場合は、オプションでサブプロジェクトのルールも表示できます。
プロジェクトのクリーンアップルールには 2 つのタイプがあります。
基本ルールは、どのデータをいつ削除するかを定義します。 それらは設定が簡単で、ほとんどの一般的なクリーンアップのケースに対応しています。 各プロジェクトおよびビルド構成に 1 つの基本ルールが割り当てられます。 基本ルールの構成方法を読む
ルールを守るは、クリーンアップ中に保存するデータを定義します。 それらは非常に柔軟ですが、基本ルールよりも構成に多くの労力がかかります。 複数の保持ルールをプロジェクトまたはビルド構成に割り当てることができます。 キープルールの構成方法を読む
キープルールはよりきめ細かく、すべてのビルドを特定のタグ(たとえば、 リリース )または特定のブランチで保持するなどのケースをカバーできます。 キープルールを使用するには、さまざまな種類のビルドとそのデータをよりよく理解する必要がありますが、柔軟性も向上します。 基本ルールを設定して一般的なクリーンアップシナリオを構成し、複数の保持ルールを追加して、保持する正確なデータを調整するか、保持ルールのみに依存することができます。
クリーンアップ中、TeamCity は基本ルールと保持ルールを分析して組み合わせ、保持するデータと削除するデータのスコープを決定します。
プロジェクトに割り当てられたクリーンアップルールは、そのすべてのサブプロジェクトとビルド構成によって継承されますが、独自のルールによってオーバーライドできます。 次のダイアグラムは、サンプルプロジェクト A 全体にルールがどのように伝播するかを示しています。

オーバーライドされたルールは、親プロジェクトの階層内で最も近い元の定義にいつでもリセットできます。
基本ルール
単一の基本ルールが各プロジェクトまたはビルド構成に割り当てられます。 基本ルールを使用すると、保存するビルドの成功数、および / またはビルドを履歴に保持する期間を定義できます。
基本ルールでは、次のクリーンアップレベルを使用できます。
アーティファクト: ビルドログを含むすべてのデータが保存され、 非表示のアーティファクトも保存されます。
履歴: 統計チャートに表示されるビルド統計値を除き、すべてのビルドデータが削除されます。
すべて: TeamCity にビルドデータは残りません。
各レベルには、その上のリストが含まれます。
デフォルトでは、すべてが永久に保持されます。 カスタム設定を選択すると、上記の各レベルで次を指定できます。
日数:
指定された日数より古いビルドは、指定されたレベルでクリーニングされます。 開始点は、現在の日付ではなく、最後に成功したビルドビルドの日付です。 1 日は、暦日ではなく、24 時間に相当します。成功したビルドの数:
最後に一致した成功したビルドより古いビルドのみが、指定されたレベルでクリーンアップされます(保存された成功したビルド間のすべての失敗したビルドが保持されます)。
両方の条件が指定されている場合、適用されたすべてのルールに従ってクリーンアップ対象となり、保持ルールによって保持されないビルドだけが実際に除去されます: TeamCity は各ルールに従って保持する最も古いビルドを見つけ、その後、見つかった両方のうち古い方よりも古いすべてのビルドをクリーンアップします。
レベルに 成功したビルド数 の制限が指定されていても、履歴に成功したビルドがない場合、TeamCity はこのレベルのデータをクリーンアップしないことに注意してください。
アーティファクト レベルでは、アーティファクトのお名前のパターンも指定できます。指定したパターンに一致するアーティファクトは、クリーンアップに含められるか除外されます。 改行区切りのルールを使用し、 Ant 風パターンに従ってください。 例:
名前の一部として
ファイルを使用してアーティファクトをクリーンアップするには、構文+:**/ファイル*.*を使用します。名前の一部として
ファイルを持つ*.jarアーティファクトをクリーンアップから除外するには、-:**/ファイル*.jarを使用します。
依存関係ビルドに対する基本ルールの動作
基本ルールの 依存関係 ブロックでは、依存関係ビルド構成のビルドアーティファクトに対するクリーンアップ動作オプションも選択できます。 TeamCity は、他のビルドで スナップショット依存関係 として使用されているビルドを常に保持します。 これらのビルドは、依存するビルドが削除されるまで、クリーンアッププロシージャによってビルド履歴から削除されません。 これらのビルドのアーティファクトは、以下のオプションに基づいて削除できます。
TeamCity は、他のビルドで アーティファクト依存関係 によって使用されているビルドとそのアーティファクトを任意で保持できます。 次のオプションが利用可能です。
デフォルトを使用するは、デフォルトのクリーンアップルールで構成されたオプションを使用します。
クリーンアップを防ぐは、現在のビルド構成のビルドのアーティファクトまたはスナップショットの依存関係のソースとして使用されたビルド(およびそのアーティファクト)を保護します。
クリーンアップを妨げない (デフォルト) では、依存関係ビルドのクリーンアップ関連の処理で、現在のビルド構成のビルドで使用されているという事実が無視されます。 依存関係ビルドとアーティファクトはクリーンアップされます。 このオプションを選択した場合でも、クリーンアップによってスナップショット依存関係ビルドのビルド履歴とログは削除されないことに注意してください。
例: 依存ビルド構成 A は B にアーティファクト依存関係があります。 クリーンアップを防ぐオプションが A に使用される場合、A のビルドのアーティファクトを提供する B のビルドは、ビルドのクリーニング中に処理されないため、ビルドとそのアーティファクト保存されます。
機能ブランチを持つビルド構成に対する基本ルールの動作
ビルド構成に複数の ブランチ からのビルドがある場合、基本クリーンアップルールを適用する前に、TeamCity はこの構成のビルド履歴を複数のグループに分割します。 TeamCity は、 アクティブなブランチ ごとにグループを作成し、非アクティブなブランチからのすべてのビルドには単一のグループを作成します。 次に、基本クリーンアップルールが各グループに個別に適用されます。
個人ビルドに対する基本ルールの動作
ベースクリーンアップルールは、非個人用ビルドと個人用ビルドに別々に適用されます。 つまり、3 つの成功したビルドを保持するルールがある場合、3 つの非個人ビルドと 3 つの個人ビルドが(上記の各ブランチグループで)保存されます。
ビルド構成テンプレートの基本ルール
TeamCity 2019.2 より前は、基本ルールをビルド構成テンプレートに割り当てることができました。 互換性のために、ビルド構成テンプレートの既存のクリーンアップルールはすべてそのままで、 クリーンアップルール ページでアクセスできます。
保持ルール
キープルールは、クリーンアップ中に保存する特定のデータを定義します。 複数の保持ルールをプロジェクトまたはビルド構成に割り当てることができます。
各保持ルールでは、次の設定を構成できます。
保持するビルドデータ: 履歴、アーティファクト、ログ、統計、すべて。
依存関係内のアーティファクトを保持する かどうか。 このオプションは、依存関係ビルド構成のビルドもクリーンアップするかどうかを制御します。 このオプションを有効にすると、このルールによって一部のビルドが保持される場合、その依存関係ビルドのすべてのアーティファクトも保持されます。 このオプションは、基本ルールの 依存関係オプションと同様に機能します。
ビルド範囲: ルールの影響を受ける時間間隔または最後のビルドの数。
オプションで、保存されたビルドを 状況、 タグ、 ブランチ で フィルター できます (パターンマッチングによる ブランチフィルターがサポートされています)。 ルールを個人用ビルドまたは非個人用ビルドのみに制限することもできます。
制限を、一致する各ブランチに個別に適用するか、選択したブランチ内のすべてのビルドを単一の設定として適用するかを選択します。
この条件は、影響を受ける各ビルド構成ごとに一度適用されます。 フィルターでブランチが指定されていない場合、次のように適用されます: ビルド構成内の各ブランチ、またはビルド構成のすべてのブランチを設定として対象にします。
例: 最後の 10 件のビルドの統計を保持するように選択し、このルールに二つのブランチを選択した場合、" 選択したすべて" を選択して選択した両方のブランチ全体で最後の 10 件のビルドを保持するか、" 選択した各ブランチ" を選択して最後の 20 件のビルド — 各ブランチにつき 10 件 — を保持できます。
TeamCity は保持ルールを次の順序で処理します:
影響を受けるプロジェクトまたはビルド構成のビルドを フィルター。
ルールをすべての選択されたブランチに適用するか、選択された各ブランチのビルドに個別に適用するかを決定します (説明を参照)。
指定された 範囲 内でのみビルドを保持します。
保持するビルドデータ の種類を決定します。
依存関係ビルドのアーティファクトを保持する必要があるかどうかを決定します。
ルールの保持動作に関する注意事項:
複数のタグを入力すると、これらのタグのいずれかでマークされたすべてのビルドにルールが適用されます。
すべての "経過日数" 範囲オプションで、TeamCity は特定の日付の端数時間を考慮せず、選択した日 (深夜から 11:59 PM まで) から、影響を受ける範囲の開始日 (選択した日から構成済みの日数制限を差し引いた日) までの時間間隔内に開始されたビルドにのみルールを適用します。
削除済みビルド構成のクリーンアップ
プロジェクトまたはビルド構成が削除されると、対応するビルドデータはクリーンアップ中に削除されますが、これは削除から 5 日 (432,000 秒) が経過した場合に限られます。
タイムアウトを変更するには、 teamcity.deletedEntities.cleanupTimeout 内部プロパティを必要な秒数に設定して、データを削除から保護します。
クリーンアップ診断
TeamCity がクリーンアップを実行すると、一部の古いビルドが引き続き保持される場合があり、現在のクリーンアップまたは保持ルールと一致しないように見えることがあります。 例: 依存関係で参照されるビルドは保持されます。
ビルドが削除されなかった理由を調査するには、ビルドに diagnostics:cleanup タグのラベルを付けます。 クリーンアップ中に、TeamCity はタグ付けされたすべてのビルドを識別し、これらのビルドが保持された理由を説明する詳細なレポートを生成します。 このレポートは、 ビルドアーティファクトとして非表示の .teamcity/cleanup/ ディレクトリに保存されます。
レポートには次の情報が含まれています。
一般的なビルドとサーバーの詳細: ビルド ID、サーバーバージョン、クリーンアップ開始時刻。
適用可能な各ルールの概要: 現在のビルドと一致するかどうか、一致しない場合はその理由。
関連するルールに基づいて保持する必要があるビルドコンポーネントのリスト。
現在のビルドに依存するビルドの概要(存在する場合)。
レポートを生成した後、TeamCity はビルドから diagnostics:cleanup タグを除去します。