将构建与 Agent 分离
如果构建的最后一步触发了某些外部服务,并且构建不再需要 构建代理,则相应的运行程序可以将构建从代理中分离出来。 这使得此代理可以供其他构建使用。 构建接下来会在 TeamCity 服务器上运行,外部服务将其进度直接报告给服务器。 这样的构建步骤被称为 无代理步骤。
发布构建代理
为了释放其当前的构建代理,运行器需要发送 ##teamcity[buildDetachedFromAgent]
服务消息。 在接收到此消息后,代理将跳过构建的所有后续步骤,除非他们启用了 "始终执行,即使发出了构建停止命令" 执行策略。 如果必要,您可以为强制执行的最后步骤启用它 —— 只有在完成这些步骤后,代理才会被释放。
如果无代理构建的限制没有超过,服务器就会释放代理,它立即就能被其他构建使用。 否则,代理将一直附加在构建上,直到一些正在运行的无代理构建完成。
此服务消息支持 trackingInfo
属性(Unicode,最多1000个符号)以提供可能有助于在 TeamCity 服务器上跟踪构建的信息(例如,部署 ID)。
记录构建数据
在无代理步骤期间,外部工具应报告所有构建状态信息,并通过 REST API 直接向 TeamCity 服务器发送任何其他类型的请求。
要执行一个请求,需要提供:
用户名:
%system.teamcity.auth.userId%
密码:
%\系统团队城市认证密码%
构建 ID:
%teamcity.build.id%
TeamCity 服务器网址:
% \teamcity.serverUrl%
代理应该在发布之前,提前向外部软件发送这些参数。
记录消息
要记录消息,请使用以下呼叫:
在这里,您可以将任何 服务消息 作为 <message>
发送。
发送警告的请求示例:
构建完成
确保外部执行的构建向 TeamCity 服务器发送完成请求非常重要。 如果服务器暂时无法使用,无法接收此请求,那么外部工具应重试,直到此操作成功为止。 如果不发送完成请求,构建将在 TeamCity 服务器上无限期运行,直到达到其指定的超时时间(如果有的话)。
要完成构建,请使用以下调用:
或者,您可以通过发送非空字符串的确切完成日期以 yyyyMMdd'T'HHmmssZ
格式来完成它:
无代理构建的许可证
可以同时运行而不需要代理的构建数量受您激活的 agent licenses 的数量限制。 例如,如果您有 10 个代理许可证,您可以并行运行最多 10 个常规构建在代理上,外加最多可达 10 个无代理构建。 一旦您达到无代理构建的限制,TeamCity 在当前的无代理构建结束之前,不会在接下来的构建中分离步骤。