我正在尝试获取fxCop结果xml和coveragereport.xml以在构建后发布到工件。
以下是我现在所拥有的,
%system.teamcity.build.tempDir%/fxcop-output*/fxcop-result.xml => BuildLog/FxCop
%system.teamcity.build.tempDir%/teamcity*ncover/CoverageReport.xml => BuildLog/Coverage
但结果目录具有以下格式
BuildLog --> Coverage --> teamcity8681981431807223307ncover --> CoverageReport.xml
BuildLog --> FxCop --> fxcop-output-3810116228914218788 --> fxcop-result.xml
我很好奇如果没有包含文件夹结构,我应该如何做到这一点。
BuildLog --> Coverage --> CoverageReport.xml
BuildLog --> FxCop --> fxcop-result.xml
感谢
答案 0 :(得分:4)
因为工件源定义中有星号(*),搜索模式可能会抓取多个源文件。
为了区分输出路径中的这些(理论上多个)文件,TeamCity将在输出结构中添加* - 模式的匹配,例如: [...] teamcity 8681981431807223307 ncover [...]。因此,无法选择(可能)多个文件并将它们存储为一个文件。
也许答案是另一种方法。您可以编写一个使用TeamCity Build Script Interaction feature的MSBuild脚本,类似于:
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"
ToolsVersion="4.0">
<ItemGroup>
<FxCopResults Include="%system.teamcity.build.tempDir%/fxcop-output*/fxcop-result.xml" />
<CoverageResults Include="%system.teamcity.build.tempDir%/teamcity*ncover/CoverageReport.xml" />
</ItemGroup>
<Target Name="PublishArtifacts">
<Message Text="##teamCity[publishArtifacts '%(FxCopResults) => BuildLog\FxCop'" />
<Message Text="##teamCity[publishArtifacts '%(CoverageResults) => BuildLog\Coverage'" />
</Target>
最后,在执行分析构建步骤后,可以使用带有MSBuild构建运行器的TeamCity构建步骤在此脚本中启动msbuild目标“PublishArtifacts”。