TeamCity エージェントをインストールして開始する
TeamCity ビルドエージェントは、TeamCity サーバーからのコマンドをリッスンし、実際のビルドプロセスを開始するソフトウェアです。実稼働の TeamCity セットアップでは、専用のマシンに追加のビルドエージェントをインストールする必要があります。その前に、エージェントとサーバー間の通信、システム要件、競合するソフトウェア、およびセキュリティに関する注意事項を必ず参照してください。
Tomcat サーブレットコンテナーにバンドルされた TeamCity をインストールするか、Windows 用の TeamCity インストーラを使用すると、サーバーと 1 つのビルドエージェントの両方が同じマシンにインストールされます。セキュリティ上の懸念があるため、この設定は実稼働目的には推奨されません。さらに、ビルド手順により、Web UI の応答性と TeamCity サーバー全体の機能が遅くなる可能性があります。
ビルドエージェントの共通概念
エージェントは、通常、ソースコードをチェックアウトし、他のビルドのアーティファクトをダウンロードし、ビルドプロセスを実行するソフトウェアです。TeamCity サーバーとは別にインストールおよび構成されます。
エージェントは物理マシンとクラウドホスト型仮想マシンの両方にインストールできます。
エージェントは、互換性のある任意のビルド構成のビルドを実行できます。各エージェントは、アーキテクチャ、オペレーティングシステム、インストールされているツールなど、固有の環境を持つことができます。これらのプロパティは、エージェントが実行できるビルドを定義します。
エージェントは一度に 1 つのビルドを実行できます。基本的に、エージェントの数によって、並列ビルドの数とビルドプロセスが実行される環境の数が制限されます。
エージェントのスムーズな動作を確保するには、実行可能ファイルまたはアーカイブからインストールされたエージェントのコアソフトウェアとツールを定期的に更新する必要があります。例: TeamCity サーバーを新しいバージョンにアップグレードした後、既存の VM イメージから起動されたすべてのクラウドエージェントの更新にはしばらく時間がかかります (これは自動的に行われますが、キューに入れられたビルドを開始できるタイミングが遅れます)。エージェントが常に最新のソフトウェアを実行するようにするには、代わりに Docker コンテナーとして実行します。
ビルドは Docker または Podman コンテナー内で実行できるため、エージェントマシンの OS だけではエージェントとプロジェクトの互換性が制限されることはありません。つまり、Windows エージェントで Linux 固有のタスクを実行でき、その逆も可能です。
TeamCity ビルドエージェントには、エージェントランチャー (エージェントプロセスを起動する Java プロセス) とエージェント (エージェントランチャーの子プロセスとして実行されるビルドエージェントのメインプロセス) の 2 つのプロセスが含まれます。
ビルドエージェントのステータス
TeamCity では、ビルドエージェントは以下のステータスを持つことができます。
状況 | 説明 |
|---|---|
接続済み / 切断済み | エージェントは、TeamCity サーバーに登録され、サーバーコマンドに応答する場合は接続されており、それ以外の場合は切断されています。このステータスは自動的に決定されます。 |
エージェントは、エージェントページの Web UI から手動で承認されます ( クラウド統合によって起動されたマシンのエージェントを除く)。承認されたビルドエージェントのみがビルドを実行できます。承認されたエージェントの数は、サーバーに入力されたエージェントライセンスの数を超えることはできません。エージェントが承認されていない場合は、ライセンスが解放され、別のビルドエージェントを承認できます。ビルドを同時に実行できるエージェントの数を増やすには、追加のライセンスを購入してください。新しいエージェントがサーバーに初めて登録されると、デフォルトでは承認されていないため、ビルドを実行するには手動で承認する必要があります。 ビルドエージェントが TeamCity ビルドサーバーと同じコンピューターにインストールされて実行されている場合は、自動的に承認されます。 | |
有効 / 無効 (クラウドエージェントのメンテナンスのため無効化) | エージェントは、Web UI を介して手動で有効化 / 無効化されます。TeamCity サーバーは、有効化されているエージェントにのみビルドを配布します。 エージェントを無効にしても、そのエージェントで現在実行されているビルドには影響しません(停止しません)。 無効なエージェントでも、ビルドが特別なエージェントに割り当てられている場合は ( カスタムビルドをトリガーするなど)、ビルドを実行できます。この機能は通常、エージェント固有の問題を調査するために、ビルドグリッドからエージェントを一時的に削除するために使用されます。 |
サーバーに接続されているすべてのエージェントには、固有のエージェント名が必要です。
特定のロールを持つユーザーのみがエージェントを管理できます。詳細については、この記事を参照してください。
ビルドエージェントの構成については、このセクションを参照してください。
エージェント - サーバーデータ転送
TeamCity エージェントは、serverUrl エージェントプロパティとして構成された URL を介して TeamCity サーバーに接続します。これは、単方向のエージェント間接続と呼ばれます。
エージェントは、ポーリングプロトコルを介した単方向のエージェント間接続を使用します。エージェントは TeamCity サーバーへの HTTP(S) 接続を確立し、サーバーコマンドについてサーバーを定期的にポーリングします。
ローカルエージェントを TeamCity サーバーに接続する
ビルドエージェントをローカルにインストールしたら、それを構成して TeamCity サーバーまたはクラウドインスタンスに接続する必要があります。クイックガイドについては、次のビデオを参照してください。
クラウドエージェント
クラウドで TeamCity エージェントをホストすると、新しいエージェントがオンデマンドで起動し、処理するビルドがなくなったら終了する、高度にスケーラブルなソリューションを実装できます。クラウドでホストされる TeamCity エージェントの詳細については、クラウドのホストビルドエージェントセクションを参照してください。
エージェントのアップグレード
TeamCity エージェントは、必要に応じて自動的にアップグレードされます。通常、これは次の場合に発生します。
サーバーがアップグレードされました
サーバーのアップグレード後にエージェントのプラグインを更新し、新しいファイルを受信すると、変更を有効にするためにエージェントの再起動がトリガーされる場合があることに注意してください。エージェントが十分な権限を持つユーザーアカウントで実行されている場合、すべての再起動が自動的に行われるため、入力は必要ありません。
エージェントの優先順位
TeamCity は、CPU 数、過去のパフォーマンス、エージェントソース(ローカルセルフホストエージェントが最も優先度が高く、次にクラウドエージェント、Kubernetes エグゼキューター pods が最も優先度が低い)など、複数の基準に基づいてエージェントを選択します。このロジックは、整数 teamcity.agent.priority プロパティ( – 10,000 から 10,000、デフォルト: 0)を設定することでオーバーライドできます。
AWS がホストするクラウドエージェントの場合、クラウドイメージ設定ページでこのプロパティを設定できます。

その他のエージェントタイプの場合は、<TeamCity_Agent_Home>/conf/buildAgent.properties ファイルに次の行を追加します。
teamcity.agent.priority=54
TeamCity は、エージェントが完全に起動し、サーバーに接続された後にのみエージェントのプロパティを認識することに注意してください。そのため、EC2 以外のクラウドエージェントの優先順位は、アクティブ / 実行中のインスタンスにのみ適用されます。現在、インスタンスが起動する前に EC2 クラウドイメージのみがエージェントの優先順位を中継します。
エージェントをリモートでデバッグする
エージェントをインストールして接続した後、TeamCity UI からこのエージェントのマシンのターミナルを直接呼び出すことができます。この機能を使用すると、エージェントログをリモートで表示したり、インストールされているソフトウェアを確認したり、エージェント固有の問題をデバッグしたりできます。
ターミナルを呼び出すには、TeamCity ヘッダーのエージェントをクリックし、必要なエージェントを選択して、ターミナルを開くをクリックします。

このターミナルはビルド結果ページから開くこともできます。この場合、ターミナルは $HOME フォルダーではなくチェックアウトディレクトリで開きます。

ターミナルが開いたら、別のタブで開くリンクをクリックすると、より大きなクライアント領域が表示されます。
ターミナルを開くボタンは、すべてのタイプのエージェントマシン (Linux、Windows、macOS) で使用でき、TeamCity エージェントを起動するのと同じユーザー ID でターミナルを呼び出します。
メンテナンスの実行中にビルドエージェントがアイドル状態であることを確認するには、ターミナルセッションでは実行中のビルドエージェントが必要であるため、ビルドエージェントを停止せずに無効にします。ビルドエージェントの停止は、以前に開いていたターミナルタブをフリーズし、ユーザーが新しいコマンドを入力できないようにします。
一定時間アイドル状態になると自動的に終了するクラウドエージェントの場合は、ビルドの問題を調査している間にエージェントのマシンを実行したままにしてシャットダウンしないようにするために、「メンテナンスのため無効にします ...」ボタンをクリックすることをお勧めします。
ターミナルを開くリンクは、ロール権限に「対話型エージェントターミナルを呼び出す」権限が含まれているユーザーにのみ表示されます。この権限は、対応するエージェントのエージェントプールに関連付けられているすべてのプロジェクトに付与する必要があります。「プロジェクト管理者」および「システム管理者」ロールを持つユーザーには、デフォルトでこのような権限が付与されます。追加の予防策として、ターミナルを開く各要求は、監査ログに新しい「エージェントアクション | エージェントに接続」アクティビティとして書き込まれます。
関連ページ:
システム要件
この記事には、TeamCity サーバーとエージェントの環境の選択と構成、およびそれらと専用の外部データベース間のネットワーク接続に関する一般的な推奨事項が含まれています。ここに記載されていない特定の質問がある場合は、便利なフィードバックチャネルを介してサポートに連絡してください。TeamCity サーバーの要件:サーバー OS/ プラットフォームの選択 TeamCity サーバーは、Windows、Linux、macOS の最新バージョンで実行できます。サーバーのオペレーティングシステムの要件...
クラウドのホストビルドエージェント
TeamCity とクラウド (IaaS) ソリューションの統合により、TeamCity は TeamCity エージェントをオンデマンドで実行する仮想マシンを提供できるようになります。これにより、TeamCity は現在のワークロードに応じてアクティブなビルドエージェントの数を自動的に調整できます。クラウドエージェントとエグゼキューター:TeamCity は次の 2 種類の統合をサポートしています。通常のクラウドエージェント。この統合タイプでは、ビルドエージェントをホストする環境として、クラ...
エージェント要件の設定
エージェントの要件は、ビルド構成を実行できるエージェントを指定する条件です。現在存在するすべての要件を表示して新しい要件を作成し、特定の構成を実行できるエージェントを確認するには、ビルド設定 | エージェント要件にアクセスしてください。エージェント要件ビデオガイド:要件構文:エージェント要件は式です。ここは、定義済みまたはカスタム (ユーザー定義) のビルドパラメーターです。例: エージェントにインストールされているオペレーティングシステムを報告するパラメーター。要件では、エージェントがこの特...
ビルドエージェントの設定とメンテナンス
TeamCity エージェントの詳細の表示:TeamCity Web UI のエージェントページは、TeamCity エージェントに関する包括的な情報を提供します。ページ上のタブの数は、エージェントのセットアップによって異なる場合があります。接続済み / 切断済み接続済みタブと切断済みタブには、エージェントがエージェントプール (デフォルト) 順に表示されます。エージェントをアルファベット順に表示するには、エージェントプールによるグループ化ボックスのチェックを外します。TeamCity は各プー...
カスタムビルドの実行
通常、ビルド構成ではビルドトリガーを使用して、必要なスケジュールに従って、または TeamCity がソースコード内の新しい変更を検出したときに新しいビルドを開始します。これらの自動的にトリガーされるビルドに加えて、TeamCity ではビルドを手動で実行し、必要に応じて設定をカスタマイズすることもできます。つまり、新しいプロパティの追加または既存のプロパティの変更、特定の変更の選択、ビルドのスケジュール、ビルドを実行するエージェントの選択などを行うことができます。TeamCity には、カスタ...
ロールと権限の管理
TeamCity のユーザーアクセスレベルは、ユーザーに異なるロールを割り当てて、それぞれの権限を付与することによって処理されます。権限とは、ビルドを実行したり、ビルド構成設定を変更したりするなど、特定の操作を実行するための承認です。ロールとは、1 つまたはすべてのプロジェクトでユーザーに付与できる権限のセットであり、プロジェクトや UI のさまざまな機能へのアクセスを制御します。認証モード:TeamCity 認証は、シンプルモードと per-project モードの 2 つのモードをサポートしま...