2017-06-15 40 views
6

我在TFS構建中有一個Powershell步驟,它將錯誤寫入錯誤流,因此構建失敗。我希望這一步忽略錯誤並繼續成功。當錯誤寫入錯誤流時,如何防止TFS失敗Powershell步驟?

Process completed with exit code 0 and had 1 error(s) written to the error stream. 

我試過設置在TFS的Continue on error選項,但是這導致了「建設部分成功」的狀態,但我想要的是它是「成功的」。

我也試過在生成錯誤的行尾添加2>&1 > output.txt,但這些錯誤仍然寫入TFS輸出,而不是在文本文件中捕獲。

我正在執行的命令是TFS 2015 Power Tools中的New-TfsChangeset cmdlet。

+1

嗨,我無法使用您的解決方案,也無法驗證它的工作原理,因爲我們現在正在使用TFS 2015。然而,我贊成它。爲了解決這個問題,我禁用了使用New-TfsChangeset命令簽入時出錯的簽入策略。 TFS 2015 Powertools在簽入政策方面存在缺陷。 – GiddyUpHorsey

回答

4

您可以取消選中PowerShell腳本配置中的標準錯誤失敗並寫入lastexitcode以傳遞任務。

enter image description here

失敗在標準錯誤

如果這是真的,如果任何錯誤被寫入 錯誤管道這個任務會失敗,或者如果任何數據被寫入標準錯誤 流。否則,該任務將僅依靠$ LASTEXITCODE和退出代碼來確定失敗。

然後,您可以使用PowerShell或vsts任務命令輸出錯誤或報警。

Write-Warning 「warning」 
Write-Error 「error」 
Write-Host " ##vso[task.logissue type=warning;]this is the waring" 
Write-Host " ##vso[task.logissue type=error;sourcepath=consoleapp/main.cs;linenumber=1;columnnumber=1;code=100;]this is an error " 

約VSTS任務命令的更多信息,你可以參考:Logging Commands

+0

這是一個Powershell構建步驟嗎?我似乎沒有這個選擇。我們正在使用TFS 2015. – GiddyUpHorsey

+0

@GiddyUpHorsey此選項可用於TFS2017 update2RC或VSTS。在TFS2015上,如果有任何數據寫入標準錯誤流以用於內置PowerShell步驟,恐怕無法繞過它。您可能必須使用*繼續出錯*選項。 –

+0

這是不幸的。出錯繼續在這種情況下沒有幫助。 TFS 2015 Powertools似乎無法正確重定向錯誤流。 – GiddyUpHorsey

0

下面的腳本VSTS工作對我來說

Write-Host "Running build script..." 
&$CAKE_EXE $cakeArguments **2>&1 | Write-Host** 

只需添加"2>&1 | Write-Host"的命令,這樣stderr流將被路由到寫主機流

相關問題