2017-08-28 73 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界面中,你現在可以看到有多少時間在每個步驟花費在構建步驟一起的結果,如果你把它沿設置適當的狀態。