ビルドをエージェントからデタッチ
ビルドの最終ステップで外部サービスがトリガーされ、ビルドに ビルドエージェントが不要になった場合、それぞれのランナーはビルドをエージェントから切り離すことができます。 これにより、このエージェントを他のビルドで使用できるようになります。 その後、ビルドは TeamCity サーバー上で実行を継続し、外部サービスは進捗をサーバーに直接報告します。 このようなビルドステップは、 エージェントレスステップと呼ばれます。
ビルドエージェントの解放
現在のビルドエージェントを解放するには、ランナーは ##teamcity[buildDetachedFromAgent] サービスメッセージ を送信する必要があります。 このメッセージを受信すると、エージェントは、" ビルド停止コマンドが発行された場合でも常に実行する" 実行ポリシーが有効化されていない限り、ビルドの以降のすべてのステップをスキップします。 必要に応じて、必須の最終ステップで有効化できます - エージェントはそれらの完了後にのみ解放されます。
エージェントレスビルドの制限を超えていない場合、サーバーはエージェントを解放し、すぐに他のビルドで使用できるようになります。 それ以外の場合、実行中のエージェントレスビルドの一部が終了するまで、エージェントはビルドに接続されたままになります。
このサービスメッセージは、TeamCity サーバーでビルドを追跡するのに役立つ情報 (たとえば、デプロイ ID) を提供するための trackingInfo 属性 (Unicode、最大 1000 シンボル) をサポートします。
ビルドデータのログ記録
エージェントレスステップ中、外部ツールはすべてのビルドステータス情報を報告し、その他の種類のリクエストを REST API 経由で TeamCity サーバーに直接送信する必要があります。
リクエストを実行するには、以下を提供する必要があります。
ビルドシステムプロパティとして指定された ビルドレベルの認証資格情報:
ユーザー名:
%system.teamcity.auth.userId%パスワード:
%system.teamcity.auth.password%
ビルド ID:
%teamcity.build.id%TeamCity サーバー URL:
%teamcity.serverUrl%
エージェントは、リリースされる前に、これらのパラメーターを事前に外部ソフトウェアに送信する必要があります。
メッセージのログ記録
メッセージをログに記録するには、次の呼び出しを使用します。
ここでは、任意の サービスメッセージ を <メッセージ> として送信できます。
警告を送信するリクエストの例:
ビルドの終了
外部で実行されるビルドが、終了リクエストを TeamCity サーバーに確実に届けることが重要です。 サーバーが一時的に利用できず、この要求を受信できない場合、外部ツールはこの操作が成功するまで再試行する必要があります。 終了リクエストがない場合、ビルドは指定されたタイムアウトがある場合はそれに達するまで、TeamCity サーバー上で無期限に実行されます。
ビルドを完了するには、次の呼び出しを使用します。
または、正確な終了日を yyyyMMdd'T'HHmmssZ 形式の空でない文字列として送信して終了することもできます。
エージェントレスビルドのライセンス
エージェントを使用せずに同時に実行できるビルドの数は、有効な エージェントライセンスの数によって制限されます。 例: エージェントライセンスが 10 個ある場合、エージェント上で最大 10 個の通常のビルドと、エージェントレスビルドを最大 10 個並行して実行できます。 実行中のエージェントレスビルド数が上限に達すると、現在実行中のエージェントレスビルドの一部が終了するまで、TeamCity は後続のビルドのステップを切り離しません。