如何使 TFS 2015 中的 PowerShell 任务的构建失败 [英] How to fail the build from a PowerShell task in TFS 2015
问题描述
我试图使 PowerShell 脚本中的某个结果在构建过程中失败,但它对我不起作用.我正在使用 TFS 2015 中的新构建操作并尝试了以下选项:
I am trying to make a certain result in a PowerShell script fail the build process, but its not working for me. I am using the new build actions from TFS 2015 and tried the following options:
- 记录命令立>
- 退出 1
我确实在步骤的日志窗口中看到了红色文本,并在构建概述中标记了问题",但构建结果仍然是绿色:构建成功"
I do get red text in the log window of the step as well as marked 'Issues' in the build overview, but the build result is still Green: 'Build succeeded'
我想使用脚本中的失败来使构建失败,从而使用失败构建的警报发送电子邮件.
I want to use the failure in the script to fail the build and thus send an email using an alert on failed builds.
包括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
}
推荐答案
我已经创建了一个非常简单的脚本:
I've created a very simple script:
Write-Error ("Some error")
exit 1
将其另存为 PowerShell 脚本.创建一个新的 Empty Build 定义并仅添加一个指向您的脚本的 PowerShell 任务.当我这样做时,我得到一个失败的构建并出现以下错误:
Save this as a PowerShell script. Create a new Empty Build definition and only add one PowerShell task that points to your script. When I do this I get a failed build with the following error:
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.
与您的脚本的主要区别在于将 Write-Error 与 exit 1 结合使用.
The main difference with your script is the usage of Write-Error in combination with an exit 1.
这篇关于如何使 TFS 2015 中的 PowerShell 任务的构建失败的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!