蛋糕 - 是否可以将我的步骤分别输出到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
是的,这是可能的,最简单的方法可能是使用 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两件事:
- 构建日志是分开的(和嵌套),每个执行任务
- 电流/持续生成的状态更新为当前运行的任务
- 添加构建统计为每个步骤的持续时间
我打算给这个镜头。 您可以在接受的答案(https://github.com/agc93/Cake.BuildSystems.Module)中描述的模块中建议/提交具有构建统计信息的PR。它实现了可折叠的日志,但没有(我至少可以看到)构建统计信息。 –
我不确定这是否涵盖旅游用例,但最好的建议是看看这个:https://github.com/agc93/Cake.BuildSystems.Module –