如何从TeamCity构建中获取原始构建日志?我编写了一个自定义的测试运行器,作为一条命令行构建步骤运行,并通过将##teamcity...
行打印到标准输出来报告测试结果。但是,TeamCity的构建日志似乎会在识别出这些行时将它们过滤掉。我想要查看原始输出以帮助调试我的测试运行器。
更新: 显然这是不可能的。neverov(我假设是JetBrains的Dimitry Neverov?)已经解释了这个问题并给出了一个解决方法,因此我接受了他的答案。
如何从TeamCity构建中获取原始构建日志?我编写了一个自定义的测试运行器,作为一条命令行构建步骤运行,并通过将##teamcity...
行打印到标准输出来报告测试结果。但是,TeamCity的构建日志似乎会在识别出这些行时将它们过滤掉。我想要查看原始输出以帮助调试我的测试运行器。
更新: 显然这是不可能的。neverov(我假设是JetBrains的Dimitry Neverov?)已经解释了这个问题并给出了一个解决方法,因此我接受了他的答案。
您可以查看代理程序的/logs
目录中的原始输出。这显示了在TeamCity控制台中显示的构建输出上隐藏的未解析数据。
例如:c:\TeamCity-Agent\logs\teamcity-build.log
我看到这个问题很久以前就被问过了(几乎是10年前),但是在TeamCity中什么也没有改变。
我遇到了与测试报告器类似的问题,并找到了一种获取原始日志的方法,而不必连接到构建代理并从那里获取它(可能很困难)。我的解决方案并不涵盖整个构建日志,但在通过Build Steps运行步骤时可能会有所帮助。
所以解决方案是将| tee e2e_raw.log
添加到所需的构建步骤脚本中。例如,我们通过运行docker-compose命令在Docker中运行测试:
tee
将所有输出复制到文件中。原始输出将保持不变,并像往常一样由TeamCity解析。
您还应该在artifacts字段中添加一行,以使构建能够收集新创建的artifact(Build General settings):
我不太确定你在问题中提到的##teamcity...
行是否涉及到这个,但这是我目前在命令行构建步骤中所做的(这是我目前所做的所有工作):
##teamcity[testStarted name='dummyTestName' captureStandardOutput='true']
echo "Do your command-line build steps here."
##teamcity[testFinished name='dummyTestName']
这是一种“hacky”解决方法,但它会导致标准输出/标准错误显示在TeamCity Web UI的构建日志页面上。
之前有很好的答案。我要补充的是,您的TeamCity主服务器保存了构建的日志文件,您可以在命令行中获取它们。
请查看<TeamCity数据目录>/system/artifacts/<项目ID>/<构建配置名称>/<内部构建ID>/.teamcity/logs
。
这对我很重要,因为:
在构建日志中有一个选项可以查看“详细/冗长”-它显示所有的服务消息。我从TC9开始就看到了它。
##teamcity
行。 - Peter Grahamteamcity.internal.build.serviceMessages.logOriginal=true
。 - KIR