TFS 2015 Build vNext - 在时间线选项卡下显示构建任务进度

时间:2017-08-28 09:48:36

标签: tfs

在新的构建步骤中,是否可以让PowerShell脚本记录某种时间轴,类似于MSBuild任务的作用?当您在Web界面中打开正在运行或已完成的版本并选择特定任务时,它将显示在时间轴选项卡下。

我们有一个构建大约700个项目的大型构建,有了MSBuild任务,你可以看到它的进展,时间不正确,因为正在构建的依赖项作为第一个项目的一部分,但那没关系。 我们有一个powershell脚本,它在构建步骤之后循环遍历所有解决方案并执行其他任务。 此时只有消息,警告和错误被记录回Web界面,但如果我们可以构建输出我们循环的列表并查看该列表的进度,那将是很好的。可能带有已完成项目的绿色复选标记。

是否可以制作类似的东西?

如果我需要进一步澄清自己,请告诉我。

1 个答案:

答案 0 :(得分:0)

我想我已经找到了我需要的东西 https://github.com/Microsoft/vsts-tasks/blob/986f8f5112017474962affe58c9ebaf394fb9354/docs/authoring/commands.md

修改: 确认这是我需要的。 首先,我遍历所有项目并创建初始的“已初始化”条目,这将确保条目显示在时间轴中但不是已启动。 guid似乎是必需的,我首先尝试了一个独特的字符串,但由于某种原因,它没有用。

$projectKey = GetSomeProjectKey
$guid = [guid]::NewGuid()

Write-Host $solution.FullName
Write-Host "##vso[task.logdetail id=$($guid);name=$($projectKey);type=build;order=$i;state=Initialized;]"
$guidDictionary.Add("$projectKey", "$guid")

然后在你完成工作的循环中,确保将任务设置为InProgress,设置Starttime以确保获得持续时间值

$startDate = "$(Get-Date -Format 'yyyy/MM/dd HH:mm:ss')"
$projectKey = GetSomeProjectKey

Write-Host  "##vso[task.logdetail id=$($guidDictionary[$projectKey]);progress=10;state=InProgress;starttime=$($startDate)]"

完成后,关闭任务并设置正确的状态以及完成时间

$endDate = "$(Get-Date -Format 'yyyy/MM/dd HH:mm:ss')"
Write-Host "##vso[task.logdetail id=$($guidDictionary[$projectKey]);progress=100;state=Completed;result=Succeeded;finishtime=$($endDate)]"

在网络界面中,您现在可以查看构建步骤中每个步骤花费的时间以及设置结果的结果。