蛋糕 - 是否可以将我的步骤分别输出到TeamCity的统计信息中?

问题描述:

我正在使用Cake在TeamCity构建服务器上构建解决方案。蛋糕 - 是否可以将我的步骤分别输出到TeamCity的统计信息中?

目前,我的构建统计不在我希望他们的位置 - 例如,我可以在TeamCity的“测试”选项卡中获得我的测试的总运行时间,并且可以看到单个运行时间这些测试以及构建的总运行时间。

但是,如果我想看看特定步骤需要花费多少时间,则必须手动完成。

例如,给定从执行

[17:09:22] [Step 1/1] Clean        00:00:00.0301134  

[17:09:22] [Step 1/1] Update-Version      00:00:00.0826397  

[17:09:22] [Step 1/1] Restore-Node-Packages    00:00:32.2691674  

[17:09:22] [Step 1/1] Restore-NuGet-Packages    00:00:09.2550592  

[17:09:22] [Step 1/1] Build-UI        00:00:07.4544697  

[17:09:22] [Step 1/1] Build        00:04:12.2181356 

对于快速修复以下样品,我手动解析此使用Excel。我可以用一个脚本来分析这个输出,但我真的不想!

1)有没有一种方法可以将每一步输出为不同的构建步骤,以便TeamCity的图表和统计信息可以自然地组织事物?

2)如果没有,我可以输出蛋糕任务结果到某种形式的文件吗? CSV或XML会很好,因为我至少可以下载它们,或者将它们包含在工件部分中,或者其他东西。

感谢 JM

+1

我不确定这是否涵盖旅游用例,但最好的建议是看看这个:https://github.com/agc93/Cake.BuildSystems.Module –

是的,这是可能的,最简单的方法可能是使用 Cake.BuildSystems.Module可以从nuget.org

中获取随着TeamCity的,它将提供:

  • 构建日志是为每个执行的任务分离(并嵌套)
  • 当前/正在进行的构建状态更新为当前正在运行的任务
  • 错误日志别名强调了构建日志输出

安装

使用最新的引导程序

如果您正在使用最新的引导程序示例(总是this repo可用),您可以简单地添加一个tools/Modules/packages.config文件,内容如下:

<?xml version="1.0" encoding="utf-8"?> 
<packages> 
    <package id="Cake.BuildSystems.Module" version="0.1.2" /> 
</packages> 

我在我的build.cake文件中执行此操作。

if (TeamCity.IsRunningOnTeamCity) 
{ 
    // This block makes the teamcily log collapsible by Task 
    TaskSetup(ctx => TeamCity.WriteStartBlock(ctx.Task.Name)); 
    TaskTeardown(ctx => 
    { 
     TeamCity.WriteEndBlock(ctx.Task.Name); 
     // This service message makes the Tasks duration visible as a statisticValue 
     var duration = ctx.Duration.TotalMilliseconds.ToString("0"); 
     Information("##teamcity[buildStatisticValue key='Block." + ctx.Task.Name + ".Duration' value='" + duration + "']"); 
    }); 
} 

它做3两件事:

  • 构建日志是分开的(和嵌套),每个执行任务
  • 电流/持续生成的状态更新为当前运行的任务
  • 添加构建统计为每个步骤的持续时间
+0

我打算给这个镜头。 您可以在接受的答案(https://github.com/agc93/Cake.BuildSystems.Module)中描述的模块中建议/提交具有构建统计信息的PR。它实现了可折叠的日志,但没有(我至少可以看到)构建统计信息。 –