12

是否可以从 TeamCity 构建中获取原始构建日志?我编写了一个自定义测试运行程序,它作为命令行构建步骤运行,并通过将行打印##teamcity...到标准输出来报告测试结果。TeamCity 的构建日志在识别它们时似乎将它们剥离。我想查看原始输出以帮助调试我的测试运行器。

更新: 显然这根本不可能。neverov(我假设 JetBrains 的 Dimitry Neverov?)已经解释了这一点并给出了解决方法,所以我接受了他的回答。

4

6 回答 6

13

您可以通过查看代理/logs目录来查看构建代理的原始输出。这显示了在 TeamCity 控制台中显示的构建输出中隐藏的未解析数据。

例如c:\TeamCity-Agent\logs\teamcity-build.log.

于 2013-05-30T12:16:49.300 回答
4

您可以通过单击构建日志页面上的“下载完整构建日志”来下载它。

于 2012-07-06T12:34:28.497 回答
1

当您提到问题中的行时,我不太清楚这是否是您在谈论的内容##teamcity...,但这是我目前正在为命令行构建步骤所做的事情(这就是我目前所做的一切):

##teamcity[testStarted name='dummyTestName' captureStandardOutput='true']

echo "Do your command-line build steps here."

##teamcity[testFinished name='dummyTestName']

这是一种 hacky 解决方法,但它会导致 stdout/stderr 显示在 TeamCity Web UI 的构建日志页面上。

于 2015-10-14T20:08:16.097 回答
1

我看到这个问题是很久以前(大约 10 年前)提出的,但在 TeamCity 中没有任何变化。

我遇到了与测试记者类似的问题,并找到了一种无需连接到构建代理并从那里获取原始日志的方法(这可能很困难)。我的解决方案不涵盖整个构建日志,但在通过构建步骤中的自定义脚本运行步骤时会很有帮助。

所以解决方案是添加| tee e2e_raw.log到所需的构建步骤脚本中。例如,我们通过运行 docker-compose 命令在 Docker 中运行测试: 在此处输入图像描述

tee将所有输出复制到文件中。原始输出将是相同的,并将由 TeamCity 照常解析。

您还应该在 artifacts 字段中添加一行,以使 build 能够收集新创建的 artifact(Build General 设置): 在此处输入图像描述

之后,您将在 artifacts 选项卡中看到一个新存档,其中包含此构建步骤的原始日志: 在此处输入图像描述

在此处输入图像描述

于 2021-05-21T10:56:42.593 回答
1

在我面前有很好的答案。我要补充一点,您的 TeamCity 主机拥有构建的日志文件,您可以在命令行上获取它们。

进去看看<TeamCity Data Directory>/system/artifacts/<project ID>/<build configuration name>/<internal_build_id>/.teamcity/logs

这对我很重要,因为

  1. TeamCity 代理上的日志在一天左右后被删除,但主服务器上的日志仍然可用。
  2. 我想在机器本身上对它们进行 grep,而不必下载多个相当大的日志文件或使用我的网络浏览器进行多个页面查看。
于 2021-12-14T22:22:10.487 回答
0

构建日志中有一个选项可以查看“详细/详细” - 它显示了所有服务消息。我从 TC9 开始就看到了。

于 2016-07-22T18:59:04.863 回答