web-dev-qa-db-ja.com

エラーストリームにエラーが書き込まれたときにTFSがPowerShellステップで失敗するのを防ぐにはどうすればよいですか?

TFSビルドにPowerShellステップがあり、エラーストリームにエラーを書き込んで、ビルドに失敗します。エラーを無視して、成功したまま続行する手順を実行してください。

プロセスは終了コード0で完了し、エラーストリームに1つのエラーが書き込まれました。

TFSでContinue on errorオプションを設定しようとしましたが、これにより「ビルドが部分的に成功しました」ステータスになりますが、必要なのは「成功」することです。

また、エラーを生成する行の最後に2>&1 > output.txtを追加しようとしましたが、エラーはTFS出力に書き込まれ、テキストファイルにキャプチャされません。

私が実行しているコマンドは、TFS 2015 PowerToolsのNew-TfsChangesetコマンドレットです。

11
GiddyUpHorsey

PowerShellスクリプト構成のFail on Standard Errorのチェックを外し、lastexitcodeを記述してタスクを渡すことができます。

Enter image description here

標準エラーの失敗

これがtrueの場合、エラーがエラーパイプラインに書き込まれるか、データが標準エラーストリームに書き込まれると、このタスクは失敗します。それ以外の場合、タスクは$ LASTEXITCODEと終了コードのみに依存して失敗を判別します。

次に、PowerShellまたはVSTSタスクコマンドを使用して、エラーまたは警告を出力できます。

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

VSTSタスクコマンドの詳細については、以下を参照してください。 ロギングコマンド

7
PatrickLu-MSFT

次のスクリプトは、VSTSで機能しました。

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

コマンドに"2>&1 | Write-Host"を追加して、標準エラーストリーム書き込みホストストリームにルーティングされるようにしました。

4
Almogo