TeamCity ビルドのアーティファクトを制限するには?

ディスク容量を節約し、パフォーマンスの問題を回避するため、特定の TeamCity ビルドとプロジェクトに保存されるアーティファクトを制限することができます。 これには主に次の 3 つの方法があります。

  • 複数のアーティファクトファイルを 1 つのアーカイブにパックする。
  • アーティファクトファイルのサイズとビルド当たりのアーティファクト数を制限する。
  • 不要ファイルの自動クリーンアップを構成する。

ビルドアーティファクトをアーカイブにパックする

TeamCity は公開前のビルドアーティファクトからアーカイブを自動的に作成できます。 この動作を変更するには、ビルド構成の General Settings(一般設定)を開き、次の書式でアーティファクトのパスを(複数の場合は改行またはコンマ区切りで)指定します。

[+:|-:]source => target_archive.* は、次のように解釈できます。

  • [+:|-:]source – ビルドアーティファクトとして公開(+:)または公開から除外(-:)されるファイルまたはディレクトリへのパス。 絶対パスも使用できますが、ビルドチェックアウトディレクトリに相対的なソースパスを使用することが推奨されます。
  • target_archive.* – アーティファクトをパックするために TeamCity が作成するアーカイブへのパス。.* はアーカイブの拡張子です。 サポートされているアーカイブタイプは、zip7zipjartar、および tar.gz です。 ターゲットパスに絶対パスを指定することはできません。ビルドチェックアウトディレクトリへの相対パスを指定してください。

たとえば、directory_name ディレクトリに保存されているすべてのファイルとサブディレクトリを archive_name ZIP アーカイブにパックするには、Artifact paths(アーティファクトパス)フィールドに次のように入力します。

directory_name => archive_name.zip

詳細とアーティファクトパスの構成例については、こちらのドキュメントの項目をご覧ください。

アーティファクトファイルのサイズと数を制限する

TeamCity サーバーには、ビルドアーティファクトファイルの最大許容サイズとビルド当たりのアーティファクトの最大数をグローバルに指定することができます。 これを行うには、Administration(管理)| Global Settings(グローバル設定)Build Settings(ビルド設定)セクションにある対応する設定を使用します。

クリーンアップルールを定義する

特定のビルド構成に含まれる古い不要アーティファクトを自動的に削除するように、TeamCity に指示することができます。 これを行うには、Project Settings(プロジェクト設定)| Clean-up Rules(クリーンアップルール)クリーンアップルールを構成します。

  • 変更するビルド構成の Base rule(基本ルール)行をクリックします。 基本ルール行が非表示である場合は、Show 1 inherited rule(継承ルールを 1 個表示)をクリックしてください(各ビルド構成は、デフォルトで親プロジェクトから基本ルールを継承します)。
  • ポップアップダイアログの Clean artifacts(アーティファクトのクリーニング)セクションで、Custom policy(カスタムポリシー)オプションを選択し、ビルドアーティファクトを削除するルールを指定します。 例:
    • n 番目の成功ビルド以前のすべてのビルドを削除する。
    • 最後の成功ビルドから n 日以上前のすべてのビルドのアーティファクトを削除する。
    • 指定パターンに従った名前でアーティファクトを削除する。

      Artifact patterns(アーティファクトのパターン)フィールドに、一致するアーティファクトをクリーンアップの追加対象または除外対象にするアーティファクト名のパターンを改行区切りで入力します。 例:

      • +:**/file*.* – 名前に「file」を含むアーティファクトを削除します。
      • -:**/file*.jar – 名前に「file」を含む .jar アーティファクトをクリーンアップから除外します。
  • 基本ルールダイアログの Dependencies(依存関係)セクションで、チェーンを構成している依存関係ビルドのアーティファクトを削除するか維持するかを指定できます。