当我的NUnit端到端测试失败时,我正在创建一个屏幕截图,我正在尝试使用以下服务消息与TeamCity(构建代理和服务器都在Windows上运行)一起发布(如所述here我在NUnit测试中使用Console.WriteLine
编写的内容:
##teamcity[publishArtifacts 'C:\BuildAgent\work\xxxxxxxxxxxxxxxx\Path\To\My\Stuff\fail.png']
我在构建日志中看到了这一行:
------- Stdout: -------
##teamcity[publishArtifacts 'C:\BuildAgent\work\xxxxxxxxxxxxxxxx\Path\To\My\Stuff\fail.png']
但是TeamCity没有拿起文件,或者至少它没有出现在构建工件中。我如何使这项工作?
答案 0 :(得分:0)
尝试使用相对路径。 Teamcity应该针对构建工作目录解决它们。
答案 1 :(得分:0)
您可以尝试使用Console.Write
代替Console.WriteLine
(见下文)。
无论如何,我猜TeamCity不会捕获这些消息,因为它们是“测试报告”并作为文本输出附加在构建日志中。
我的感觉是它们没有被解析,因此没有被Build Script Interaction行为解释,因为它们被刷新到构建日志中的方式。
来自Build Script Interaction(TC 7):
服务消息用于将命令/构建信息传递给 构建脚本中的TeamCity服务器。为了进行处理 TeamCity应该将它们打印成标准输出流 构建(否则,如果输出不在服务消息语法中, 它应该出现在构建日志中)。 单个服务消息应该 其中不包含换行符,它不应跨越 多行。
您应该将测试工件放在特定文件夹中,并在测试后延迟发布。
请注意,如果您不需要动态解析工件,则应使用最简单的方法:构建配置常规设置中的Artifact paths
。
答案 2 :(得分:0)
使用JetBrains提供的NuGet包,它可以处理所有细微之处
NuGet Install TeamCity.ServiceMessages
在GitHub上:https://github.com/JetBrains/TeamCity.ServiceMessages