Amazon S3 および S3 互換ストレージ
TeamCity には、Amazon S3 Artifact Storage プラグインがバンドルされており、これにより、ビルドアーティファクトを Amazon S3 バケットや MinIO(英語)、バックブレイズ B2(英語) などの S3 互換バケットに保存できます。S3 互換ストレージは、AWS 環境と AWS 以外の環境の両方でホストできます。
新しい AWS S3 ストレージを作成してセットアップする
「管理 | <あなたのプロジェクト>」ページに移動し、「アーティファクトストレージ」タブに切り替えます。
新しいストレージをすべての TeamCity プロジェクトで使用できるようにする場合は、<ルートプロジェクト> の設定を開きます。
新しいストレージをこのプロジェクトとそのサブプロジェクトでのみ使用できるようにする場合は、特定のプロジェクトを 1 つ編集します。
組み込みの TeamCity アーティファクトストレージはデフォルトで表示され、アクティブとしてマークされます。新しいストレージを追加ボタンをクリックして新しいストレージを作成します。
カスタムストレージ名を指定し、必要に応じて内部で使用される ID を指定します。
タイプフィールドを「AWS S3」に設定します。
TeamCity が Amazon リソースにアクセスするために使用する既存の AWS 接続を選択します。適切な AWS 接続が存在しない場合は、「+」アイコンをクリックして追加します。
選択した AWS 接続が S3 バケットにアクセスするために使用する認証情報 (またはそれが想定する IAM ロール) を持つユーザーには、次の権限が必要です。
ListAllMyBucketsGetBucketLocationGetObjectListBucketPutObjectDeleteObjectGetAccelerateConfiguration( 転送加速が有効な場合)
TeamCity は、選択された AWS 接続を使用して、利用可能な S3 バケットのリストを取得します。バケットドロップダウンメニューを開いて、リストから特定の項目を選択します。
(オプション) すべての TeamCity プロジェクトに同じ S3 バケットを使用し、接頭辞ベースの権限を構成する場合は、パス接頭辞(英語)を指定します。
Amazon S3 バケットは、ファイルのアップロードとダウンロードを高速化する 2 つのオプションをサポートしています。
AWS クラウドフロント(英語) — TeamCity が近くの低レイテンシ CloudFront サーバーを使用してアリファクトを転送できるようにするコンテンツ配信ネットワーク (CDN)。
転送加速(英語) — 世界中から一元化された S3 バケットへの転送速度を最適化するように設計されたバケットレベルの機能。これにより、クライアントと S3 バケット間の長距離にわたるファイルの高速、簡単、安全な転送が可能になります。
バケットが Transfer Acceleration または CloudFront を使用するように構成されている場合は、転送速度の向上セクションで対応するオプションを選択します。それ以外の場合、TeamCity が通常モードでファイルを転送する場合は、なしタイプを選択します。

ストレージへの大きなファイルのアップロード(英語)を最適化するには、マルチパートアップロード(英語)を有効にします。これを行うには、しきい値とパーツサイズをカスタマイズする設定にチェックを入れて、マルチパートアップロードのしきい値を設定します。許可される最小値は
5MBです。サポートされている接尾辞:KB、MB、GB、TBこのフィールドを空のままにすると、8 MB を超えるすべてのファイルに対してマルチパートアップロードが自動的に開始されます (8MBがデフォルト値です)。 さらに、アップロードされた各ファイルパーツの最大許容サイズを構成できます。最小値は
5MBです。空のままにすると、TeamCity はデフォルト値として8MBを使用します。
アップロード後にファイルの整合性を確認するにチェックを入れると、TeamCity が追加のアップロードされたファイルのチェックアップ(英語)を実行できるようになります。整合性検証が失敗した場合、TeamCity は対応するメッセージをビルドログに書き込みます。
保存をクリックして新しいストレージを保存し、使用可能なストレージのリストに戻ります。
プロジェクトで使用可能なストレージのリストを表示しているときに、アクティブにするをクリックして、このプロジェクトのすべての新しいビルドに対して対応するストレージの使用を開始します。「N 個の使用状況」リンクでは、アーティファクトをアップロードするためにこのストレージを使用したビルドを表示できます。

新しい S3 互換ストレージの作成とセットアップ
「管理 | <あなたのプロジェクト>」ページに移動し、「アーティファクトストレージ」タブに切り替えます。
新しいストレージをすべての TeamCity プロジェクトで使用できるようにする場合は、<ルートプロジェクト> の設定を開きます。
新しいストレージをこのプロジェクトとそのサブプロジェクトでのみ使用できるようにする場合は、特定のプロジェクトを 1 つ編集します。
組み込みの TeamCity アーティファクトストレージはデフォルトで表示され、アクティブとしてマークされます。新しいストレージを追加ボタンをクリックして新しいストレージを作成します。
カスタムストレージ名を指定し、必要に応じて内部で使用される ID を指定します。
タイプフィールドを「カスタム S3」に設定します。
アクセスキー ID 値と秘密アクセスキー値を指定します。アクセスキーの発行方法については、S3 互換ストレージベンダーのドキュメントを参照してください。
TeamCity がバケットへのアクセスに使用するストレージエンドポイントを指定します。
(オプション) すべての TeamCity プロジェクトに同じ S3 バケットを使用し、接頭辞ベースの権限を構成する場合は、パス接頭辞(英語)を指定します。
ストレージへの大きなファイルのアップロード(英語)を最適化するには、マルチパートアップロード(英語)を有効にします。これを行うには、しきい値とパーツサイズをカスタマイズする設定にチェックを入れて、マルチパートアップロードのしきい値を設定します。許可される最小値は
5MBです。サポートされている接尾辞:KB、MB、GB、TBこのフィールドを空のままにすると、8 MB を超えるすべてのファイルに対してマルチパートアップロードが自動的に開始されます (8MBがデフォルト値です)。
さらに、アップロードされた各ファイルパーツの最大許容サイズを構成できます。最小値は
5MBです。空のままにすると、TeamCity はデフォルト値として8MBを使用します。アップロード後にファイルの整合性を確認するにチェックを入れると、TeamCity が追加のアップロードされたファイルのチェックアップ(英語)を実行できるようになります。整合性検証が失敗した場合、TeamCity は対応するメッセージをビルドログに書き込みます。
保存をクリックして新しいストレージを保存し、使用可能なストレージのリストに戻ります。
プロジェクトで使用可能なストレージのリストを表示しているときに、アクティブにするをクリックして、このプロジェクトのすべての新しいビルドに対して対応するストレージの使用を開始します。「N 個の使用状況」リンクでは、アーティファクトをアップロードするためにこのストレージを使用したビルドを表示できます。

S3 ストレージクラス
Amazon S3 ストレージクラス(英語)を使用すると、必要なパフォーマンス、データの可用性と復元力に基づいてストレージを微調整できます。
必要なストレージクラスを有効にするには、次の 2 つの方法があります。
TeamCity 側。S3 バケットにアーティファクトをアップロードする場合、TeamCity は
PUTリクエストにx-amz-storage-classヘッダーを追加します。ヘッダーの値は、TeamCity の対応するストレージ設定 (例:x-amz-storage-class: INTELLIGENT_TIERING) によって異なります。このモードでは、AWS 側で追加の設定は必要ありません。このアプローチは現在サポートされていませんが、今後のリリースサイクルでこの機能を実装したいと考えています。この機能をサポートし、フィードバックを共有するには、この YouTrack チケットに賛成票を投じ、コメントしてください: TW-79992(英語)。
AWS 側。このモードでは、TeamCity は定期的にアーティファクトをアップロードし、アーティファクトがアップロードされた後、事前構成されたライフサイクルルールによって必要なストレージクラスが適用されます。このルールを設定するには、次の手順を実行します。
必要な S3 ストレージを開き、管理タブに切り替えます。
ライフサイクルルールを作成するをクリックします。
ライフサイクルルールアクションセクションのストレージクラス間でオブジェクトの現在のバージョンを移動するを確認します。
必要なストレージクラスと、アップロード日と移行日の間の遅延を選択します。オブジェクト作成後の日数を「0」に設定すると、TeamCity がアーティファクトをアップロードするとすぐに移行されます。
保存されたアーティファクトの追加ルールを有効にします。例: オブジェクトの現在のバージョンを期限切れにするをチェックすると、以前にアップロードされたアーティファクトに期限切れのラベルを付けることができ、オブジェクトの非現在のバージョンを完全に削除するをチェックすると、ストレージを定期的にクリーンアップできます。
ルールのスコープを指定して、ストレージ全体に適用するか、必要なフィルターに一致するアーティファクトのみに適用するかを選択します。
ページの下部にあるルールを確認します。次のようになります。

ライフサイクルルールを保存するには、ルールを作成をクリックします。
詳細については、次の AWS ヘルプ記事を参照してください: Amazon S3 ストレージクラスの使用(英語)。
CloudFront を介したアーティファクトの転送
Amazon CloudFront(英語) は、低遅延と高速転送を提供するコンテンツ配信ネットワークです。S3 ストレージのサポートを有効にすると、TeamCity は最も近い CloudFront サーバーを介してアーティファクトを転送できるようになります。S3 バケットが TeamCity インフラストラクチャとは異なるリージョンにある場合、これによりアーティファクトのアップロード / ダウンロードが大幅に高速化され、費用が削減される可能性があります。
前提条件
TeamCity は CloudFront 統合をセットアップすることも、すべての設定を手動でセットアップすることもできます。
CloudFront 統合には、以下を設定する必要があります。
OAI(英語) ユーザー
2 つの CloudFront ディストリビューション(英語)、1 つはアーティファクトのアップロードとダウンロード用。
PEM 形式の SSH-2RSA キーペア(英語)(公開鍵 + 秘密鍵)
CloudFront 設定
ストレージタイプを AWS クラウドフロントに切り替えると、4 つの新しい設定が表示されます。
手動で作成されたディストリビューションを選択するには、ダウンロードディストリビューションおよびアップロード配信ドロップダウンメニューを使用します。
公開鍵フィールドと秘密鍵をアップロード ... ボタンを使用すると、対応するキーを指定できます。
あるいは、
アイコンをクリックして、TeamCity に 4 つの設定すべてを自動的に構成させることもできます。
Cloudfront 設定が適切に機能するには、TeamCity に次の権限が必要です。
クラウドフロント: ListDistributions
cloudfront:ListKeyGroups
cloudfront:ListPublicKeys
CloudFront の自動セットアップ
TeamCity は設定を自動的に構成できます。これには以下が含まれます。
キーペアを生成し、公開鍵を CloudFront にアップロードします。
CloudFront で新しいキーグループを作成します。
次の方法で 2 つの新しいディストリビューションを作成します。
すべてのエッジ位置を使用価格クラス。
現在のバケットにアクセスできる新しいオリジンアクセス ID(英語)。
定義するデフォルトの動作
アーティファクトをアップロードするために許可された HTTP メソッド:
GET、HEAD、OPTIONS、PUT、POST、PATCH、DELETE、ダウンロード用:GET、HEAD、OPTIONS;ビューアーアクセス権を持つ新しいキーグループ(英語)。
すべてのクエリ文字列を渡すことができるカスタムキャッシュポリシー(英語)。
S3 バケットに新しいポリシーを追加して、新しいディストリビューションがそれにアクセスできるようにします。ポリシーの例を参照してください。
自動セットアップでは、Teamcity に追加のアクセス許可を与える必要があります。
クラウドフロント: CreateDistribution
クラウドフロント: CreateKeyGroup
cloudfront:CreatePublicKey
cloudfront:CreateOriginRequestPolicy
cloudfront:CreateCloudFrontOriginAccessIdentity
クラウドフロント: CreateCachePolicy
cloudfront:DeleteKeyGroup
cloudfront:DeletePublicKey
cloudfront:ListCloudFrontOriginAccessIdentities
cloudfront:ListCachePolicies
cloudfront:ListOriginRequestPolicies
クラウドフロント: GetDistribution
クラウドフロント: GetPublicKey
s3:GetBucketPolicy
s3:PutBucketPolicy
必要なすべてのアクセス許可を提供するポリシーの例:
CloudFront の手動セットアップ
セキュリティ上の理由から、アーティファクトのアップロードとダウンロード用に 2 つの別々のディストリビューションを構成することをお勧めします。ディストリビューションごとに:
SSH-2RSA キー形式(英語)でキーペアを生成します。
ペアから CloudFront に公開鍵をアップロードします。
CloudFront で新しいキーグループを追加する(英語)を実行し、作成した公開鍵をこのグループに追加します。
キャッシュキー設定 | クエリ文字列をすべてに設定して新しいキャッシュポリシーを作成します。
プライベートバケットを使用する場合は、新しい OAI(英語) ユーザーを作成します。
ディストリビューションを作成する(英語)とそれにキーグループを添付します。
TeamCity で指定されているものと同じ S3 バケットを選択してください。
アーティファクトをアップロードするための許可された HTTP メソッド
GET、HEAD、OPTIONS、PUT、POST、PATCH、DELETE;GET、HEAD、OPTIONSをダウンロードするためビューアーのアクセスを制限する : はい
信頼できる認証タイプ : 信頼できるキーグループ
キーとオリジンのリクエストをキャッシュする : キャッシュポリシーとオリジンリクエストポリシー
プライベートバケットの場合は、OAI の使用オプションを有効にし、次の設定で OAI を構成します。
バケットポリシー : いいえ、バケットポリシーを更新します
パブリックバケットの場合、パブリックアクセスをブロックするオプションを無効にします。
新しいポリシーを追加する(英語)を S3 バケットに追加します。ポリシーの例を参照してください。
設定すると、ディストリビューションはダウンロードディストリビューションおよびアップロード配信ドロップダウンメニューに自動的に表示されます。
ターゲットの CloudFront ディストリビューションを選択します。
公開鍵で、このディストリビューションに関連付けられている公開鍵を選択します。
秘密鍵をアップロード ... ボタンをクリックして、ペアから秘密鍵をアップロードします。
ストレージ設定を保存します。
S3 ポリシーの例
OAI を使用してプライベートバケットにアクセスするには:
パブリックバケットにアクセスする場合:
Kotlin DSL
次のサンプルは、S3 バケットをプロジェクトアーティファクトのカスタムストレージとして追加し、このストレージをプライマリ (デフォルト) として設定する方法を示しています。
アーティファクトを別のストレージに移行する
TeamCity サーバーには、ビルドアーティファクトを 1 つのストレージから別のストレージに転送するコマンドラインツールが付属しています。このツールは、プロジェクト設定 |Artifacts Storage ページからダウンロードできます。

現在、このツールは次の移行ルートをサポートしています。
ローカルディレクトリから Amazon S3 バケットへ、またはその逆
ある Amazon S3 バケットから別のバケット
へ
他のクラウドストレージオプションのサポートにも取り組んでいます。
詳細: アーティファクト移行ツール。
関連ページ:
ビルドパラメーターの設定
パラメーターは、TeamCity 設定およびビルドスクリプトの構文を介して参照するペアです。パラメーター部分は、生の値 () にすることも、別のパラメーターへの参照 () を含めることもできます。パラメーター型:TeamCity は 3 種類のパラメーターをサポートしています。構成パラメーター — ビルド構成内で設定を共有することを主な目的とするパラメーター。これらのパラメーターを使用して、テンプレートから作成された構成やレシピを使用する構成をカスタマイズすることもできます。TeamCity は...
エンティティ ID
ID は、TeamCity エンティティ (プロジェクト、ビルド構成、テンプレート、VCS ルートなど) に付与される識別子です。各エンティティには 2 つの識別子があります。外部 ID、普遍的にユニークな ID または UUID、外部 ID:いわゆる外部識別子は、TeamCity Web UI (プロジェクト ID など) で構成され、サーバー全体の同じタイプのすべてのオブジェクト内で一意である必要があります。ビルド構成とテンプレートは同じ ID スペースを共有します。ID はラテン文字で始まり、...
接続を構成
TeamCity 接続は、外部サービスへのアクセスに必要な資格情報を保存します。このサードパーティサービスの種類に基づいて、2 つの主要な接続カテゴリがあります。VCS 接続これらの接続は、GitHub、GitLab、Bitbucket クラウドなどの VCS プロバイダーへのアクセスに必要な情報を保存します。これらの接続は、プロジェクト、ビルド構成、パイプラインを最も速く作成する方法を提供します。認証は自動的に処理されるため、リポジトリを選択するだけでビルドステップの設定を開始できます。接続が...
Amazon EC2 用の TeamCity のセットアップ
TeamCity Amazon EC2 統合により、TeamCity は、現在のビルドキューのワークロードに応じて、クラウドでホストされているエージェントをオンデマンドで自動的に開始および停止することで、ビルドリソースを自動スケールできます。共通情報:TeamCity では、さまざまなタイプの EC2 統合をセットアップできます。使用する設定とソースに応じて、クラウド AWS ホスト型エージェントは以下で実行できます。同じ Amazon マシンイメージ (AMI) から複製された複数の同一のイ...
アーティファクト移行ツール
アーティファクト移行ツールは、ビルドアーティファクトをあるストレージから別のストレージに転送できるコマンドラインツールです。現在、このツールは移行ターゲットとして Amazon S3 バケットと Azure ストレージのみを受け入れます。Azure ストレージを設定するには、バンドルされていないプラグイン Azure Artifact ストレージをインストールする必要があることに注意してください。アーティファクト移行ツールをダウンロードする:このツールはプロジェクト設定 | アーティファクトスト...
プロジェクト管理者ガイド
このセクションでは、プロジェクト管理に焦点を当てます。TeamCity プロジェクトとビルド構成の作成、ビルドステップの設定、依存関係チェーンの構成などについて説明します。基本的な TeamCity ワークフロー:次のダイアグラムは、基本的な TeamCity ワークフローを示しています。TeamCity サーバーはリポジトリの変更を検出しました。サーバーはこの変更をデータベースに書き込みます。ビルド構成に添付されたトリガーは、データベース内の関連する変更を検出し、ビルドを開始します。トリガー...