2017-08-28 74 views
0

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

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

是否有可能做出类似的东西?

让我知道我是否需要进一步澄清自己。

+0

像这样的东西? https://blogs.technet.microsoft.com/heyscriptingguy/2011/01/29/add-a-progress-bar-to-your-powershell-script/ – Lennart

回答

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,则设置开始时间,以确保你得到一个持续时间值

$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)]" 

当您完成后,关闭任务并与finishtime

$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)]" 

在Web界面中,你现在可以看到有多少时间在每个步骤花费在构建步骤一起的结果,如果你把它沿设置适当的状态。