如果排队超过指定时间,则阻止 TeamCity 构建启动

Prevent TeamCity build from starting if queued beyond a specified time

我有一个 TeamCity 构建配置,它 运行 夜间在大量机器上进行测试。重要的是这些测试不要在白天 运行。

构建是从每天凌晨 1 点触发的计划触发器开始的。 我已将构建设置为在 运行 超过 6 小时时超时,因此它会在早上 7 点左右停止。

今天早上查看最新的Build,发现关联的Build Agent不可用;因此构建仍在排队。

如果 Build Agent 可用,比如说,在早上 6 点,那么我假设排队的 Build 将开始并继续 运行 直到上午 11 点。我不希望 Build 在早上 7 点之后 运行ning。

如果构建排队时间过长,有什么方法可以阻止构建启动?

或者,是否可以在特定时间停止 Build?在这种情况下,如果构建在早上 7 点之后排队,我还需要首先阻止构建开始。

我有一个具有类似要求的构建链。我的解决方案是拥有一个由计划计时器触发的单独构建配置。

此构建配置的唯一职责是查看是否满足所有要求(例如您的时钟时间),然后才成功完成 - 成功完成后将触发 "real" 构建chain - 您可以为此使用条件为 "Trigger after successful build only" 的 Finish Build Trigger。

另一方面,如果不满足要求,则构建失败,构建链将不会 运行。

此"Check and Trigger"构建配置的实现只需几行powershell:

$time = Get-Date
if($time.Hour -gt 6)
{
    exit 1 #failing this build
}