推出 Warm Agents:一款 TeamCity 插件

推出 Warm Agents:一款 TeamCity 插件

💡 原文英文,约1000词,阅读约需4分钟。
📝

内容提要

TeamCity推出Warm Agents插件,可预先启动并保持指定数量的空闲云代理,减少构建排队等待。插件支持所有云服务商,但每个热代理会占用许可证并产生云费用。用户可通过REST API设置目标数量,并利用定时触发器在夜间降低目标以节省成本。插件还提供利用率指标,便于监控需求变化。

🔎

延伸解读

热代理的成本与延迟权衡

Warm Agents 通过预先启动并保持一定数量的空闲代理来减少构建排队等待,但每个热代理都会占用一个构建代理许可证,并且空闲的云实例仍会产生费用。因此,设置目标数量时需要在成本和延迟之间做出权衡。目标越高,构建启动越快,但成本也越高;目标越低,成本越低,但可能增加排队时间。

动态调整目标数量以节省成本

插件支持通过 REST API 动态调整热代理的目标数量,并且 TeamCity 会即时生效,不会强制停止已运行的实例。利用定时触发器,可以在夜间将目标降为 0,早上再恢复,从而在需求低谷时节省云资源费用。这种按需调整的方式适合需求波动明显的团队。

监控利用率以优化配置

插件提供了利用率和饱和度指标,以 Prometheus 格式暴露,方便监控热代理的繁忙程度和队列应对情况。通过分析这些指标,可以了解需求高峰时段,从而更合理地设置目标数量或调整定时策略,避免资源浪费或构建延迟。

❓

Q&A

Warm Agents 插件是做什么的?

Warm Agents 是 TeamCity 的一个插件,用于为指定的云镜像维持一定数量的空闲、已预启动的代理。当空闲代理数量低于目标值时,TeamCity 会立即启动新实例,从而减少构建排队等待时间。

使用 Warm Agents 插件有什么成本?

每个运行中的热代理会占用一个构建代理许可证,并且空闲的云实例仍会产生云服务商费用。因此,热代理是用成本换取更低的延迟,需要根据实际希望减少的排队时间来设定目标数量。

如何安装和启用 Warm Agents 插件?

进入 Admin | Plugins,点击 Browse plugins repository,在 JetBrains Marketplace 中找到 Warm Agents 并安装,然后启用。需要 TeamCity 2024.12.3 或更高版本,且项目已配置云配置文件和云镜像,并拥有“Manage project’s agent cloud profiles”权限。

如何通过 REST API 设置热代理的目标数量?

使用 PUT 请求调用类似 `/app/<projectExternalID>/<cloudProfileID>/<cloudImageName>/warmAgents?target=10` 的端点即可设置目标数量为 10。若要停止维护热代理,将 target 设为 0。

如何根据时段动态调整热代理数量以节省成本?

可以配置带有计划触发器的构建,在夜间降低目标数量,早晨再恢复。例如,使用 Kotlin DSL 定义脚本步骤调用 REST API 更新目标值,并设置每日 8 点触发将目标设为 2,晚上再触发设为 0。

Warm Agents 插件提供哪些监控指标?

插件会按配置的云镜像计算利用率和饱和度指标,并以 Prometheus 格式暴露。可以通过 REST API 获取项目指标,在多节点环境中需添加 X-TeamCity-Node-Id-Cookie 头以固定到主节点。

🏷️

标签

➡️

继续阅读