powershell tfs2015

Cómo fallar la compilación de una tarea de PowerShell en TFS 2015



tfs2015 (1)

He creado un script muy simple:

Write-Error ("Some error") exit 1

Guarde esto como un script de PowerShell. Cree una nueva definición de compilación vacía y solo agregue una tarea de PowerShell que apunte a su secuencia de comandos. Cuando hago esto, obtengo una compilación fallida con el siguiente 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.

La principal diferencia con su script es el uso de Write-Error en combinación con una salida 1.

Estoy tratando de lograr cierto resultado en un script de PowerShell que falla el proceso de compilación, pero no funciona para mí. Estoy usando las nuevas acciones de compilación de TFS 2015 y probé las siguientes opciones:

Obtengo texto rojo en la ventana de registro del paso, así como marcado ''Problemas'' en la descripción general de la compilación, pero el resultado de la compilación sigue siendo Verde: ''Compilación exitosa''

Quiero usar la falla en el script para fallar la compilación y, por lo tanto, enviar un correo electrónico utilizando una alerta sobre compilaciones fallidas.

Editar: incluido el script 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 }