クラウドのホストビルドエージェント
TeamCity とクラウド (IaaS) ソリューションの統合により、TeamCity は TeamCity エージェントをオンデマンドで実行する仮想マシンを提供できるようになります。これにより、TeamCity は現在のワークロードに応じてアクティブなビルドエージェントの数を自動的に調整できます。
クラウドエージェントとエグゼキューター
TeamCity は次の 2 種類の統合をサポートしています。
通常のクラウドエージェント。この統合タイプでは、ビルドエージェントをホストする環境として、クラウドホスティングプロバイダー(AWS、Microsoft、Azure、Google Cloud など)を使用します。これらのエージェントは、ビルドキューのディストリビューション、互換性チェック、起動と終了のアクティビティなど、すべて TeamCity によって制御されます。
エージェントレス統合。このシナリオでは、クラウドプロバイダーは、TeamCity ビルドを処理する「請負業者」として機能します。TeamCity サーバーは、キューに入れられたビルドを「実行者」に送信し、このキューの処理方法には干渉しません。
どちらのオプションも、プロジェクト設定 | クラウドプロファイルページから利用できます。

通常のクラウドエージェント
プロジェクトにエージェントを追加するセクションで利用可能です。現在サポートされている統合は次のとおりです:
Windows Azure(英語) (バンドルされていないプラグイン)
Google Cloud(英語) (バンドルされていないプラグイン)
カスタムプラグイン(英語)を利用したその他の統合。完全なリストについては、この JetBrains マーケットプレイスページ(英語)を参照してください。
エージェントレスクラウドエグゼキューター
外部エージェントにタスクをオフロードするセクションで利用できます。現在、このタイプのクラウドホスティングプロバイダー統合は、Kubernetes クラスターのみをサポートしています。今後のリリースサイクルで他の統合も導入される予定です。
このドキュメントセクションでは、主に通常のクラウドエージェントに焦点を当てています。エージェントレスエグゼキュータモードの詳細については、この記事を参照してください: 実行者モード: 外部 Kubernetes 統合。
共通情報
キューに入れられたビルドごとに、TeamCity は最初に自己ホスト型エージェントの 1 つでビルドを開始しようとします。利用可能なものがない場合、TeamCity は、互換性のあるエージェントと一致するクラウドイメージを見つけて、このイメージの新しいインスタンスを開始します。TeamCity は、実行中のクラウドインスタンスの数の制限を超えないようにします。
通常のクラウドエージェント統合には以下が必要です。
クラウドに TeamCity エージェントがインストールされた構成済みの仮想マシン。起動時に TeamCity エージェントを起動するように事前設定する必要があります。
TeamCity で構成されたクラウドプロファイル。
クラウドプロファイルが 1 つまたは複数のイメージを使用して TeamCity で構成されると、TeamCity は、新しく追加されたすべてのイメージに対して 1 つのインスタンスのテスト開始を実行し、それらに構成されたエージェントについて学習します。エージェントが接続されると、TeamCity はパラメーターを保管して、ビルド構成とエージェントの互換性を正しく処理できるようにします。利用可能なエージェントライセンスがある場合、TeamCity によって開始されたクラウドインスタンスから接続されたエージェントは自動的に承認されます。クラウドエージェントの数は、TeamCity にあるエージェントライセンスの総数によって制限されます。その後、エージェントは通常のエージェントとして処理されます。
プロファイル設定に応じて、TeamCity がより多くのエージェントを必要としていることを認識すると、次のいずれかを実行できます。
既存の仮想マシンを起動して停止します(ビルドが終了した後、またはアイドルタイムアウトが経過した後)。停止したマシンは割り当てが解除されるため、エージェントがアクティブでない場合は仮想マシン料金は適用されません。このタイプの TeamCity エージェントのストレージコストは引き続き適用されます。
イメージから新しい仮想マシンを作成します。このようなマシンは破棄されます(ビルドが終了した後、またはアイドルタイムアウトが経過した後)。これにより、マシンにそれ以上の実行コストが発生しなくなります。
切断されたエージェントは、許可エージェントリストから削除され、システムから削除されて TeamCity ビルドエージェントライセンスを解放します。
エージェントクラウドプロファイルとイメージ
クラウドプロファイルは、ビルドキューを配布しながら、インストールされた TeamCity エージェントを使用して仮想マシンをオンデマンドで起動するための TeamCity の設定のコレクションです。クラウドプロファイルには、次のような一般的な設定が保存されます。
クラウドプロバイダーに接続するために必要な認証情報。
同時にアクティブなクラウドエージェントの最大数。
アクティブなエージェントをいつ終了または停止するかを指定する条件。
新しいクラウドエージェントの開始時に渡す必要がある TeamCity サーバー URL。
各プロファイルには、次の設定を保存する 1 つまたは複数のクラウドイメージがあります。
開始するクラウドインスタンスまたは使用するインスタンスイメージの ID。
インスタンス / ノードの起動時にプルするコンテナーイメージ。
起動後のスクリプト。
このイメージから生成されたクラウドエージェントを所有するエージェントプール。
共有プロファイル
プロジェクトで構成されたクラウドプロファイルは、すべてのサブプロジェクトでも使用できます。つまり、<ルートプロジェクト> でプロファイルを構成すると、すべての TeamCity プロジェクトで新しいクラウドエージェントを起動できるようになります。
すべてのサブプロジェクトまたは個々のサブプロジェクトが親プロジェクトから継承したクラウドプロファイルを使用しないようにすることができます。これを行うには、プロジェクト設定 | クラウドプロファイルに移動して、クラウド統合ステータスを変更するをクリックします。
親プロジェクトの場合: サブプロジェクトでクラウド統合を有効にするのチェックを外します。
子のサブプロジェクトの場合: このプロジェクトでクラウド統合を有効にするのチェックを外します。
クラウド統合のための TeamCity セットアップ
このセクションでは、クラウド統合に必要な一般的な手順について説明します。
TeamCity クラウド統合に使用される仮想マシン / イメージの要件
TeamCity エージェントは、マシンの起動時に自動的に起動するように正しくインストールおよび構成されている必要があります。
サーバーへの各エージェント接続での更新の試行をスキップするには、エージェントが最新であることを確認します。開始して、更新が完了するのを待ちます。プラグインまたはツールがサーバーにインストール / 更新 / 削除されるたびに、エージェントの状態が変化します。
buildAgent.propertiesファイルは「現状のまま」にしておくことができます。serverUrl、name、authorizationTokenプロパティは空のままにすることも、任意の値に設定することもできます。TeamCity がインスタンスを開始するときは無視されます。
これらの要件が満たされていれば、通常の TeamCity エージェントのインストールとクラウドプロバイダーのイメージバンドリング手順が適用可能です。
サーバーとエージェントマシン間の接続を安全にする必要がある場合は、起動時にサーバーへの安全なトンネル (VPN など) を確立するようにエージェントマシンを設定し、TeamCity エージェントが安全なチャネル経由でデータを受信できるようにする必要があります。TeamCity エージェントとサーバー間の通信には、エージェントとサーバーの両方でポートを開く必要があることに注意してください。
仮想マシンの準備
目的の OS がインストールされた仮想マシンを作成して起動します。
仮想マシンに接続してログインします。
実行中のインスタンスを設定します。
ビルドエージェントをインストールして構成します。
buildAgent.propertiesファイルでサーバー名とエージェント名を構成します - これは TeamCity がイメージを起動するように構成される場合はオプションですが、エージェントが正しく構成されていることをテストできます。通常、非システムドライブ(たとえば、Windows の
Dドライブ)を使用するには、conf/buildAgent.propertiesでtempDirおよびworkDirを指定するのが理にかなっています。
マシンのビルドに必要な追加のソフトウェア(Java や .NET など)をインストールします。
エージェントを起動し、サーバーに接続するまで待ちます。エージェントが動作し、必要なすべてのビルド構成と互換性があることを確認します(TeamCity UI で、エージェントページに移動し、ビルドエージェントを選択して互換性のある構成タブを表示します)。
マシンの起動時にエージェントが開始されるようにシステムを構成します(マシンの起動時に TeamCity サーバーにアクセスできることを確認します)。
ビルドエージェントが TeamCity からの受信データをリッスンするポートを確認し、必要なファイアウォールポート(通常は
9090)を開きます。
マシンを再起動し、エージェントがサーバーに正常に接続していることを確認して、セットアップをテストします。エージェントが接続すると、すべてのプラグインが自動的に更新されます。エージェントが完全に接続され、すべてのプラグインがエージェントマシンにダウンロードされるまで待ちます。
TeamCity に既存の仮想マシンを起動させ、ビルドの完了後またはアイドルタイムアウトの経過後に停止させる場合は、上記の設定だけで十分です。TeamCity がイメージから仮想マシンを作成して起動し、使用後にそのマシンを終了させたい場合は、作成された仮想マシンからイメージをキャプチャーする必要があります。
仮想マシンからのイメージのキャプチャー
仮想マシンを作成する手順を完了します。
システム内の一時 / 履歴情報を削除します。
エージェントを停止します (Windows では、サービスを停止しますが、自動スタートアップタイプに残します)。
(オプション)エージェントホームの
logsおよびtempディレクトリの内容を削除します。(オプション)プラットフォーム固有のファイルから
<Agent Home>/conf/ディレクトリをクリーンアップします。(オプション)
buildAgent.propertiesファイルを変更して、name、serverUrl、authorizationTokenプロパティを削除します。
実行中のインスタンスから新しいイメージを作成します。方法については、クラウドプロバイダーのドキュメントを参照してください。
クラウドプロファイルの設定
クラウドプロファイルは、TeamCity エージェントがオンデマンドでインストールされた仮想マシンを起動するための TeamCity の設定のコレクションです。クラウドプロファイルは、プロジェクト設定のクラウドプロファイルセクションで構成されます。Amazon EC2、Kubernetes、vSphere プロファイルの詳細な手順を参照してください。
見積もり
クラウドプロバイダーの価格が適用されます。料金は、TeamCity をデプロイするために実装された特定の構成によって異なります。予想外の請求をできるだけ早く発見し防止するために、設定とクラウドアカウントデータを定期的に確認することをお勧めします。
トラフィック量と必要なサーバーおよびエージェントマシンの特性は、TeamCity のセットアップと実行されるビルドの性質に大きく依存することに注意してください。
トラフィックの見積もり
TeamCity 関連のトラフィックを推定するのに役立ついくつかのポイントがあります。
TeamCity サーバーがエージェントと同じ地域またはアフィニティグループ内に存在しない場合、サーバーとエージェント間のトラフィックはプロバイダによって課される通常の外部トラフィック料金の対象となります。トラフィックを推定するときは、TeamCity に関連するトラフィックが多数あることを覚えておいてください(下記の不完全なリストを参照)。
サーバーから発信された外部接続 :
VCS サーバー
E メールサーバー
Maven リポジトリ
NuGet リポジトリ
サーバーから発信された内部接続 :
TeamCity エージェント (ステータスの確認、コマンドの送信、スレッドダンプなどの情報の取得など)
エージェントから発信された外部接続 :
VCS サーバー (エージェント側のチェックアウトの場合)
Maven リポジトリ
NuGet リポジトリ
ビルドプロセス自体から実行される接続
エージェントから発信された内部接続 :
TeamCity サーバー (サーバー側のチェックアウトまたは個人用ビルドの場合はビルドソースを取得する、アーティファクトをダウンロードするなど)
サーバーが使用する通常の接続 :
ウェブブラウザー
IDE プラグイン
実行コスト
クラウドプロバイダーは仮想マシンの稼働時間に基づいてコストを計算するため、通常のビルド期間に応じてタイムアウト設定を調整することをお勧めします。これにより、仮想マシンの稼働時間が短縮されます。また、すべてのビルドに実行タイムアウトを設定して、ビルドがハングしてもペイロードなしでオーバータイムインスタンスが実行されないようにすることを強くお勧めします。
関連ページ:
プロジェクト管理者ガイド
このセクションでは、プロジェクト管理に焦点を当てます。TeamCity プロジェクトとビルド構成の作成、ビルドステップの設定、依存関係チェーンの構成などについて説明します。基本的な TeamCity ワークフロー:次のダイアグラムは、基本的な TeamCity ワークフローを示しています。TeamCity サーバーはリポジトリの変更を検出しました。サーバーはこの変更をデータベースに書き込みます。ビルド構成に添付されたトリガーは、データベース内の関連する変更を検出し、ビルドを開始します。トリガー...
Amazon EC2 用の TeamCity のセットアップ
TeamCity Amazon EC2 統合により、TeamCity は、現在のビルドキューのワークロードに応じて、クラウドでホストされているエージェントをオンデマンドで自動的に開始および停止することで、ビルドリソースを自動スケールできます。共通情報:TeamCity では、さまざまなタイプの EC2 統合をセットアップできます。使用する設定とソースに応じて、クラウド AWS ホスト型エージェントは以下で実行できます。同じ Amazon マシンイメージ (AMI) から複製された複数の同一のイ...
VMware vSphere および vCenter 用の TeamCity のセットアップ
TeamCity vSphere 統合により、VMwarevSphere および vCenter インストールで TeamCity エージェントクラウド機能を使用できます。VMware vSphere/vCenter アカウントを使用して TeamCity を構成する必要があり、その後、キューに入れられたビルドに基づいて、オンデマンドで TeamCity エージェントを使用して仮想マシンの自動作成、起動、停止、削除を処理します。機能は TeamCity にバンドルされているプラグインとして実装されていま...
Kubernetes 用の TeamCity の設定
TeamCity は 2 種類の Kubernetes 統合を提供します。定期的な Kubernetes 統合。このアプローチでは、AWS、Microsoft、Azure、Google Cloud などの他のクラウドプロバイダーとの統合と同様に、TeamCity のクラウドプロファイルとイメージを使用します。ビルドエージェントは TeamCity で設定し、Kubernetes クラスターでホストします。この統合タイプは、外部の Kubernetes のサポートプラグインに依存します。外部エグゼキ...
エージェントプールの構成
ビルドエージェントの共通セットを 1 つ持つ代わりに、エージェントプールと呼ばれる個別のグループに分割できます。プールは、プロジェクトを割り当てることができるエージェントの名前付きセットです。エージェントは 1 つのプールにのみ所属できます。プロジェクトではビルドに複数のプールを使用できます。TeamCity サーバーによって承認されるエージェントの数は、エージェントライセンスの数によって制限されます。デフォルトでは、新しく承認されたすべてのエージェントがデフォルトプールに含まれます。エージェント...
TeamCity エージェントをインストールして開始する
TeamCity ビルドエージェントは、TeamCity サーバーからのコマンドをリッスンし、実際のビルドプロセスを開始するソフトウェアです。実稼働の TeamCity セットアップでは、専用のマシンに追加のビルドエージェントをインストールする必要があります。その前に、エージェントとサーバー間の通信、システム要件、競合するソフトウェア、およびセキュリティに関する注意事項を必ず参照してください。Tomcat サーブレットコンテナーにバンドルされた TeamCity をインストールするか、Window...