Почему моя пользовательская задача VSTS проходит с кодом выхода 1?
У меня следующая раздражающая проблема. Моя пользовательская задача сборки VSTS не потерпит неудачу. Он всегда проходит, а $LASTEXITCODE отличен от нуля.
Код делает как положено. Выдает ошибку в журнале. Несмотря на это, шаг завершается успешно и сборка / выпуск продолжается.
Скриншот: Я включил запись-хост с кодом выхода, который также показывает код выхода 1.
Код:
Try {
....
#Loop through the server list
Foreach ($Server in $machines)
{
# Use SSL or not
If($UseSSL -eq $true)
{
Write-Host "Connecting to $Server using a SSL connection (TCP/5986), Skip CA Check: $CheckCA ..."
$s = New-PSSession -ComputerName $Server -Credential $Cred -UseSSL -SessionOption $SessionOptions
}
Else
{
Write-Host "Connecting to $Server with an unsecure connection (TCP/5985) ..."
$s = New-PSSession -ComputerName $Server -Credential $Cred
}
# Run
$ExitCode = Invoke-Command -Session $s -ScriptBlock $script -ArgumentList $ApplicationPoolName,$Action,$Killswitch
# Cleanup the session
Write-Host "Closing connection to $Server."
Remove-PSSession -Session $s
}
} Catch {
Write-Host "##vso[task.logissue type=Error;]$Error"
$ExitCode = 1
} Finally {
#Leave TFS/VSTS trace
if (Get-Command -Name Trace-VstsEnteringInvocation -ErrorAction SilentlyContinue) {
Trace-VstsLeavingInvocation $MyInvocation
}
write-host "ExitCode: $ExitCode"
Exit $ExitCode
}
Что мне здесь не хватает?
1 ответ
Решение
Я решил это, удалив последнюю часть.
Не работает:
try {
.... do stuff ....
} catch {
write-error "some error"
exit 1
} Finally {
.. some final steps ...
}
За работой:
try {
.... do stuff ....
} catch {
write-error "some error"
exit 1
}
Для людей, прибывающих сюда с той же проблемой с файлами BAT/CMD, я решил добавить эту строку:
exit /b %ERRORLEVEL%
для принудительной передачи уровня ошибки в задачу командной строки VSTS/TFS