是否可以从 TeamCity 构建中获取原始构建日志?我编写了一个自定义测试运行程序,它作为命令行构建步骤运行,并通过将行打印##teamcity...
到标准输出来报告测试结果。TeamCity 的构建日志在识别它们时似乎将它们剥离。我想查看原始输出以帮助调试我的测试运行器。
更新: 显然这根本不可能。neverov(我假设 JetBrains 的 Dimitry Neverov?)已经解释了这一点并给出了解决方法,所以我接受了他的回答。
是否可以从 TeamCity 构建中获取原始构建日志?我编写了一个自定义测试运行程序,它作为命令行构建步骤运行,并通过将行打印##teamcity...
到标准输出来报告测试结果。TeamCity 的构建日志在识别它们时似乎将它们剥离。我想查看原始输出以帮助调试我的测试运行器。
更新: 显然这根本不可能。neverov(我假设 JetBrains 的 Dimitry Neverov?)已经解释了这一点并给出了解决方法,所以我接受了他的回答。
您可以通过查看代理/logs
目录来查看构建代理的原始输出。这显示了在 TeamCity 控制台中显示的构建输出中隐藏的未解析数据。
例如c:\TeamCity-Agent\logs\teamcity-build.log
.
您可以通过单击构建日志页面上的“下载完整构建日志”来下载它。
当您提到问题中的行时,我不太清楚这是否是您在谈论的内容##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 的构建日志页面上。
我看到这个问题是很久以前(大约 10 年前)提出的,但在 TeamCity 中没有任何变化。
我遇到了与测试记者类似的问题,并找到了一种无需连接到构建代理并从那里获取原始日志的方法(这可能很困难)。我的解决方案不涵盖整个构建日志,但在通过构建步骤中的自定义脚本运行步骤时会很有帮助。
所以解决方案是添加| tee e2e_raw.log
到所需的构建步骤脚本中。例如,我们通过运行 docker-compose 命令在 Docker 中运行测试:
tee
将所有输出复制到文件中。原始输出将是相同的,并将由 TeamCity 照常解析。
您还应该在 artifacts 字段中添加一行,以使 build 能够收集新创建的 artifact(Build General 设置):
在我面前有很好的答案。我要补充一点,您的 TeamCity 主机拥有构建的日志文件,您可以在命令行上获取它们。
进去看看<TeamCity Data Directory>/system/artifacts/<project ID>/<build configuration name>/<internal_build_id>/.teamcity/logs
。
这对我很重要,因为
构建日志中有一个选项可以查看“详细/详细” - 它显示了所有服务消息。我从 TC9 开始就看到了。