【问题标题】:TFS 2015 Build vNext - Show Build task progress under the timeline tabTFS 2015 Build vNext - 在时间线选项卡下显示构建任务进度
【发布时间】:2017-08-28 22:33:30
【问题描述】:

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

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

有没有可能做这样的事情?

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

【问题讨论】:

标签: tfs


【解决方案1】:

我想我在这里找到了我需要的东西 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)]"

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

【讨论】:

    猜你喜欢
    • 2018-05-12
    • 2016-06-20
    • 1970-01-01
    • 2012-04-20
    • 2016-08-27
    • 2016-10-03
    • 2016-01-23
    • 2016-08-07
    • 1970-01-01
    相关资源
    最近更新 更多