2017-11-07 23 views
2

私はTeamCityでInvoke-MsBuildを実行するpowershellスクリプトを持っています。ビルド中に、私は "警告:プロジェクトのビルドに失敗しました"を見ました。しかし、最後のチームシップはビルドが成功したと言いました。 TCをエラーコードで終了させたり、少なくとも失敗したビルドを報告するにはどうすればよいですか。ここにビルドスクリプトの一部があります。Team Cityのビルドに失敗しても失敗しない

Write-Host "Attempting to build $SolutionPath" 
$buildSucceeded = Invoke-MsBuild -Path $SolutionPath -MsBuildParameters $MSBuildParams -BuildLogDirectoryPath "$BuildPath\Logs" -KeepBuildLogOnSuccessfulBuilds 

答えて

1

TeamCityは、Powershellからスローされた例外をキャッチして報告することはあまりよくありません。私のPowershellのスクリプトはすべて、0以外の値を出すことで問題を補うようなもので包まれています(

Try { 
    Write-Host "Attempting to build $SolutionPath" 
    $buildSucceeded = Invoke-MsBuild -Path $SolutionPath -MsBuildParameters $MSBuildParams -BuildLogDirectoryPath "$BuildPath\Logs" -KeepBuildLogOnSuccessfulBuilds 
} 
Catch [Exception] { 
    Write-Error ('Failed: ' + $_.Exception.Message) 
    Exit 1 
} 

私はこれがかなり煩雑で、やや不満であることを認めます。ほとんどの(すべて?)Powershellコマンドレットがサポートする一般的な-ErrorActionパラメータを使用すると、何かが得られる可能性があります。

1

powershellスクリプトの冒頭に$ErrorActionPreference = "Stop"を追加することができます。エラーが発生した場合はスクリプトの実行を停止し、ゼロ以外のコードを付けて終了する必要があります。

デフォルト設定の$ErrorActionPreferenceContinueであり、これはおそらくその動作を示しています。あなたはhereをもっと読むことができます。

関連する問題