在另一个代理上重新启动 "failed to start" 构建

Restart a "failed to start" build on another agent

偶尔,我的一个 Windows 构建代理会收到一条 "failed to start" 消息,因为它无法从以前的构建中清理结帐目录。这通常是因为 MSBuild 进程仍挂在文件句柄上。

[Updating sources] Failed to perform checkout on agent: '"C:\Program Files\Git\bin\git.exe" clean -f -d -x' command failed.
exit code: 1
stdout: Removing bin/
[...]
stderr: warning: failed to remove bin/prod/otherDirectory
warning: failed to remove bin/prod/yetAnotherDirectory

一个解决方案是在下一次构建开始之前使用 Swabra 终止进程,因为 described in this answer

我想尝试的另一件事是自动将 "failed to start" 构建重新添加到队列中并强制它在另一个代理上 运行。问题代理通常会在几分钟内自行解决,因此立即在另一个代理上开始构建是一个很好的临时解决方案。

是否可以通过这种方式再次将 "failed to start" 个构建添加到队列中?

问题是关于如何手动指定 运行 在哪个代理上构建?如果是这样,那么就有 Custom Build 功能,它允许您从下拉列表中 select 所需的代理。只需单击 "Run".

旁边的“...”按钮

TeamCity 有一个 Retry Build Trigger 可以满足我的要求。它不允许指定一个代理来 运行 构建,但是 "Seconds to wait" 参数和我的构建队列的性质减轻了这一点。