Cake - 是否可以将我的步骤单独输出到 TeamCity 的统计信息中?
Cake - Is it possible to output my steps separately to TeamCity's statistics?
我正在使用 Cake 在 TeamCity 构建服务器上构建解决方案。
目前,我的构建统计数据未达到我希望的水平 - 例如,我可以在 TeamCity 的“测试”选项卡中获得测试的总 运行时间,并且我可以在那里查看这些测试的单个 运行ning 时间,以及构建的总 运行 时间。
但是,如果我想查看特定步骤花费了多少时间,我必须手动执行。
例如,给定以下执行示例
[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) cake 有没有办法将每个步骤输出为不同的构建步骤,以便 TeamCity 的图表和统计数据可以自然地组织事物?
2) 如果没有,我可以将蛋糕任务结果输出到某种形式的文件中吗? CSV 或 XML 就可以了,因为我至少可以去下载它们,或将它们包含在工件部分或其他内容中。
谢谢
JM
是的,这是可能的,最简单的方法可能是使用
Cake.BuildSystems.Module which can be fetched from nuget.org
对于 TeamCity,它将提供:
- 构建日志为每个执行的任务分开(并嵌套)
- Current/ongoing 构建状态更新为当前 运行 任务
- 错误记录别名在构建日志输出中突出显示
安装
使用最新的引导程序
如果您使用的是最新的引导程序示例(在 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 件事:
- 构建日志为每个执行的任务分开(并嵌套)
- Current/ongoing 构建状态更新为当前 运行 任务
- 为每个步骤的持续时间添加构建统计信息
我正在使用 Cake 在 TeamCity 构建服务器上构建解决方案。
目前,我的构建统计数据未达到我希望的水平 - 例如,我可以在 TeamCity 的“测试”选项卡中获得测试的总 运行时间,并且我可以在那里查看这些测试的单个 运行ning 时间,以及构建的总 运行 时间。
但是,如果我想查看特定步骤花费了多少时间,我必须手动执行。
例如,给定以下执行示例
[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) cake 有没有办法将每个步骤输出为不同的构建步骤,以便 TeamCity 的图表和统计数据可以自然地组织事物?
2) 如果没有,我可以将蛋糕任务结果输出到某种形式的文件中吗? CSV 或 XML 就可以了,因为我至少可以去下载它们,或将它们包含在工件部分或其他内容中。
谢谢 JM
是的,这是可能的,最简单的方法可能是使用 Cake.BuildSystems.Module which can be fetched from nuget.org
对于 TeamCity,它将提供:
- 构建日志为每个执行的任务分开(并嵌套)
- Current/ongoing 构建状态更新为当前 运行 任务
- 错误记录别名在构建日志输出中突出显示
安装
使用最新的引导程序
如果您使用的是最新的引导程序示例(在 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 件事:
- 构建日志为每个执行的任务分开(并嵌套)
- Current/ongoing 构建状态更新为当前 运行 任务
- 为每个步骤的持续时间添加构建统计信息