使TeamCity始终发布工件

时间:2013-09-02 13:13:48

标签: teamcity

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

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

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

文件仍然存在于磁盘上,只是TeamCity不再发布它们。这特别令人恼火,因为我真的,真的需要查看这些日志中的内容,以便我可以找出为什么构建在第一时间挂起。

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

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

PS。我意识到我可以手动登录构建服务器来查看日志,但TeamCity的整点意思是为我自动化这样的东西......

3 个答案:

答案 0 :(得分:3)

我认为启用挂起构建检测通常是一个好主意(您可以在构建上设置失败条件,花费时间超过 n 分钟完成),但如果您对工件,以下内容可能很有用:

您可以输出TeamCity service messages以立即发布工件。当构建停止时,这些工件也将保持可用。例如:

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

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

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

答案 1 :(得分:2)

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

相反,我建议您配置TeamCity,这样您就不必停止构建。有两个选项可供启用:hanging build detection和“it runs longer than”构建失败条件。两者都应该帮助TeamCity自动终止构建,而不是你必须停止它。

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

答案 2 :(得分:0)

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

相关问题