为什么使用publishArtifacts服务消息在构建期间发布的工件不会显示在TeamCity中?

时间:2012-02-14 18:23:08

标签: nunit teamcity

当我的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没有拿起文件,或者至少它没有出现在构建工件中。我如何使这项工作?

3 个答案:

答案 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