TeamCity On-Premises 2026.2 Help

ビルドをエージェントからデタッチ

ビルドの最終ステップで外部サービスがトリガーされ、ビルドに ビルドエージェントが不要になった場合、それぞれのランナーはビルドをエージェントから切り離すことができます。 これにより、このエージェントを他のビルドで使用できるようになります。 その後、ビルドは TeamCity サーバー上で実行を継続し、外部サービスは進捗をサーバーに直接報告します。 このようなビルドステップは、 エージェントレスステップと呼ばれます。

ビルドエージェントの解放

現在のビルドエージェントを解放するには、ランナーは ##teamcity[buildDetachedFromAgent] サービスメッセージ を送信する必要があります。 このメッセージを受信すると、エージェントは、" ビルド停止コマンドが発行された場合でも常に実行する" 実行ポリシーが有効化されていない限り、ビルドの以降のすべてのステップをスキップします。 必要に応じて、必須の最終ステップで有効化できます - エージェントはそれらの完了後にのみ解放されます。

エージェントレスビルドの制限を超えていない場合、サーバーはエージェントを解放し、すぐに他のビルドで使用できるようになります。 それ以外の場合、実行中のエージェントレスビルドの一部が終了するまで、エージェントはビルドに接続されたままになります。

このサービスメッセージは、TeamCity サーバーでビルドを追跡するのに役立つ情報 (たとえば、デプロイ ID) を提供するための trackingInfo 属性 (Unicode、最大 1000 シンボル) をサポートします。

ビルドデータのログ記録

エージェントレスステップ中、外部ツールはすべてのビルドステータス情報を報告し、その他の種類のリクエストを REST API 経由で TeamCity サーバーに直接送信する必要があります。

リクエストを実行するには、以下を提供する必要があります。

エージェントは、リリースされる前に、これらのパラメーターを事前に外部ソフトウェアに送信する必要があります。

メッセージのログ記録

メッセージをログに記録するには、次の呼び出しを使用します。

POST /app/rest/builds/id:<build_id>/log (curl -v --basic --user <username>:<password> --request POST <teamcity.url>/app/rest/builds/id:<build_id>/log --data <message> --header "Content-Type: text/plain")

ここでは、任意の サービスメッセージ<メッセージ> として送信できます。

警告を送信するリクエストの例:

POST /app/rest/builds/id:TestBuild/log (curl -v --basic --user TeamCityBuildId=87065:lqmT22NStn4ulqmT22NStn4ulqmT22NStn4u --request POST http://localhost:8111/app/rest/builds/id:TestBuild/log --data "##teamcity[message text='Deployment failed' errorDetails='stack trace' status='ERROR']" --header "Content-Type: text/plain")

ビルドの終了

外部で実行されるビルドが、終了リクエストを TeamCity サーバーに確実に届けることが重要です。 サーバーが一時的に利用できず、この要求を受信できない場合、外部ツールはこの操作が成功するまで再試行する必要があります。 終了リクエストがない場合、ビルドは指定されたタイムアウトがある場合はそれに達するまで、TeamCity サーバー上で無期限に実行されます。

ビルドを完了するには、次の呼び出しを使用します。

PUT /app/rest/builds/id:<build_id>/finish (curl -v --basic --user <username>:<password> --request PUT <teamcity.url>/app/rest/builds/id:<build_id>/finish)

または、正確な終了日を yyyyMMdd'T'HHmmssZ 形式の空でない文字列として送信して終了することもできます。

PUT /app/rest/builds/id:<build_id>/finishDate (curl -v --basic --user <username>:<password> --request PUT <teamcity.url>/app/rest/builds/id:<build_id>/finishDate --data "20201231T235959+0000" --header "Content-Type: text/plain")

エージェントレスビルドのライセンス

エージェントを使用せずに同時に実行できるビルドの数は、有効な エージェントライセンスの数によって制限されます。 例: エージェントライセンスが 10 個ある場合、エージェント上で最大 10 個の通常のビルドと、エージェントレスビルドを最大 10 個並行して実行できます。 実行中のエージェントレスビルド数が上限に達すると、現在実行中のエージェントレスビルドの一部が終了するまで、TeamCity は後続のビルドのステップを切り離しません。

2026 年 9 月 11 日