PowerShellスクリプトで特定の結果を作成しようとしていますが、ビルドプロセスが失敗しますが、機能しません。 TFS 2015の新しいビルドアクションを使用して、次のオプションを試しました。
ステップのログウィンドウに赤いテキストが表示され、ビルドの概要に「問題」とマークされていますが、ビルド結果はまだ緑色です:「ビルドに成功しました」
スクリプトの失敗を使用してビルドを失敗させ、失敗したビルドに関するアラートを使用して電子メールを送信したいと思います。
編集:PSスクリプトを含む:
Param(
[string]$url
)
if ($url -eq '')
{
#use default value
$url = 'https://myurl.com'
}
$req = [system.Net.WebRequest]::Create($url)
$req.Timeout = 60000 * 5 # = 5 minutes
try
{
Write-Host "Try to get response from url:" $url
$res = $req.GetResponse()
Write-Host "Closing the connection"
$req.Close() # close the connection
}
catch [System.Net.WebException]
{
Write-Host "Got an exception"
Write-Host "##vso[task.logissue type=error;]Exception: " $_.Exception
if ($_.response) # try to close the connection
{
$_.response.Close();
}
$res = $_.Exception.Response
}
$printCode=[int]$res.StatusCode
Write-Host "Result StatusCode:" $res.StatusCode "(" $printCode ")"
If ([int]$res.StatusCode -eq 200)
{
Write-Host "##vso[task.complete result=Succeeded;]Done"
}
Else
{
Write-Host "##vso[task.logissue type=error;]Test error: " $res
Write-Host "##vso[task.complete result=Failed;]Error testing if demo site is up"
exit 1
}
非常に単純なスクリプトを作成しました。
Write-Error ("Some error")
exit 1
これをPowerShellスクリプトとして保存します。新しい空のビルド定義を作成し、スクリプトを指すPowerShellタスクを1つだけ追加します。これを行うと、次のエラーでビルドが失敗します。
2015-12-30T10:27:29.4872452Z . 'C:\a\1\s\script.ps1'
2015-12-30T10:27:29.6780242Z Executing the following powershell script. (workingFolder = C:\a\1\s)
2015-12-30T10:27:29.6790500Z C:\a\1\s\script.ps1
2015-12-30T10:27:33.8017820Z ##[error]C:\a\1\s\script.ps1 : Some error
2015-12-30T10:27:33.8027833Z ##[error]At line:1 char:1
2015-12-30T10:27:33.8037819Z ##[error]+ . 'C:\a\1\s\script.ps1'
2015-12-30T10:27:33.8037819Z ##[error]+ ~~~~~~~~~~~~~~~~~~~~~~~
2015-12-30T10:27:33.8047816Z ##[error] + CategoryInfo : NotSpecified: (:) [Write-Error], WriteErrorException
2015-12-30T10:27:33.8047816Z ##[error] + FullyQualifiedErrorId : Microsoft.PowerShell.Commands.WriteErrorException,script.ps1
2015-12-30T10:27:33.8057887Z ##[error]
2015-12-30T10:27:33.8057887Z ##[error]Process completed with exit code 1 and had 1 error(s) written to the error stream.
スクリプトとの主な違いは、出口1と組み合わせたWrite-Errorの使用法です。