5

我很惊讶我找不到任何关于此的文档,但无论如何......

有时我的 TeamCity 构建挂起,我最终需要停止它。构建过程会在磁盘上生成多个日志文件,然后 TeamCity 将其发布为构建工件。但是,如果我停止构建,TeamCity 会拒绝发布日志:

Build was interrupted. Artifacts will not be published for this build

这些文件仍然存在于磁盘上,只是 TeamCity 不再发布它们。这尤其令人恼火,因为我真的非常需要查看这些日志中的内容,这样我才能弄清楚为什么构建首先会挂起。

有什么方法可以强制 TeamCity 始终发布构建工件,即使我必须中止构建?

(我已经看到几个问题询问如何在构建失败时停止TeamCity 发布工件,所以我有点困惑为什么我的设置还没有这样做,但无论如何......)

PS。我意识到我可以手动登录到构建服务器来查看日志,但是 TeamCity 的全部意义在于为我自动化这样的事情......

4

3 回答 3

4

我认为启用挂起构建检测通常是一个好主意(您可以对花费超过n分钟才能完成的构建设置失败条件),但如果您对迄今为止由构建创建的工件感兴趣最终停止/挂起,以下可能有用:

您可以输出TeamCity 服务消息以立即发布工件。当构建停止时,这些工件也将保持可用。例子:

##teamcity[publishArtifacts '/tmp/logfile => logs']

这将确保文件/tmp/logfile发布到 artifacts 目录logs

另一个优点是,您可以立即在构建的工件选项卡上获得这些工件,这有助于决定是否应该取消构建。

于 2014-04-04T07:06:44.600 回答
2

TeamCity 无法在停止的构建上发布,这与失败的构建不同。停止的构建更像是一个被终止的进程,而失败的构建是一个非零退出代码。

相反,我建议配置 TeamCity,这样您就不必停止构建。有两个选项可以启用:挂起构建检测和“它运行时间超过”构建失败条件。两者都应该帮助 TeamCity 自动终止构建,而不是您必须停止它。

这样,您将获得失败的构建而不是停止的构建,并且您的工件应该发布。

于 2013-09-05T16:34:12.790 回答
0

它可能是构建的最后一个“命令行”步骤,
带有选项“执行步骤:始终,即使发出构建停止命令”
,它将输出发布工件指令?

于 2019-10-18T11:05:20.387 回答