Jos*_*aia 3 msbuild teamcity cakebuild
我正在使用Cake在TeamCity构建服务器上构建解决方案.
目前,我的构建统计数据还没有达到我想要的程度 - 例如,我可以在TeamCity的Tests选项卡中获得我的测试的总运行时间,我可以看到这些测试的单独运行时间,以及构建的总运行时间.
但是,如果我想看一个特定步骤花费多少时间,我必须手动完成.
例如,给出以下来自执行的样本
[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
Run Code Online (Sandbox Code Playgroud)
为了快速解决问题,我使用Excel手动解析了这个问题.我可以用一个脚本来解析这个输出,但我真的不愿意!
1)蛋糕是否有办法将每个步骤输出为不同的构建步骤,以便TeamCity的图形和统计数据可以自然地组织事物?
2)如果没有,我可以将蛋糕任务结果输出到某种形式的文件吗?CSV或XML可以,因为我至少可以下载它们,或者将它们包含在工件部分或其他内容中.
谢谢JM
是的,这是可能的,最简单的方法可能是使用 Cake.BuildSystems.Module,可以从nuget.org获取
使用TeamCity,它将提供:
如果您使用的是最新的bootstrapper示例(此repo中始终可用),则只需添加tools/Modules/packages.config包含以下内容的文件:
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Cake.BuildSystems.Module" version="0.1.2" />
</packages>
Run Code Online (Sandbox Code Playgroud)
我在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 + "']");
});
}
Run Code Online (Sandbox Code Playgroud)
它做了三件事:
| 归档时间: |
|
| 查看次数: |
714 次 |
| 最近记录: |