Dav*_*ard 10 powershell task azure-devops
在 Azure DevOps 中,我有一个运行 PowerShell 脚本的任务。在某些情况下,脚本应以非 0 代码退出,导致任务报告为失败。但是,Azure DevOps 无论如何都会报告任务已通过。
这是一个问题,因为如果该作业失败,我有一个后续作业应该运行,但由于误报而没有发生。
脚本的相关部分显示,在屏幕截图的情况下,检测到退出代码1,这应该会导致脚本错误退出。
if ($exitCode -ne 0)
{
Write-Output ("[Error] Failing task since return code was {0} while expected 0." -f $exitCode)
}
exit $exitCode
Run Code Online (Sandbox Code Playgroud)
该任务作为deployment作业的一部分运行,并且我确实将选项failOnStandardError设置为true。
- task: AzurePowerShell@5
displayName: Check Function App Version
inputs:
azureSubscription: ${{ parameters.serviceConnectionName }}
scriptType: FilePath
scriptPath: ${{ parameters.scriptsArtefactPath }}/Test-FunctionAppVersion.ps1
scriptArguments: -Uri ${{ parameters.healthCheckUri }} -AuthHeaderName Authorization -AuthHeaderValue "$(healthCheckAuthHeaderValue)"
failOnStandardError: true
azurePowerShellVersion: LatestVersion
pwsh: true
Run Code Online (Sandbox Code Playgroud)
如何让 Azure DevOps 遵守我的退出代码?
Lev*_*SFT 12
Azure PowerShell 任务似乎在从脚本文件捕获退出代码时存在问题,但它与内联脚本配合得很好。您可以将此问题报告给微软开发团队。希望他们尽快提供修复。
但是,您可以使用以下任一解决方法来修复它。
1、使用[Environment]::Exit($exitCode)代替exit. 见下文:
if ($exitCode -ne 0)
{
Write-Output ("[Error] Failing task since return code was {0} while expected 0." -f $exitCode)
}
[Environment]::Exit($exitCode)
Run Code Online (Sandbox Code Playgroud)
2、如果 exitCode 不为 0,则使用logging命令手动使任务失败。 ##vso[task.complete result=Failed;]Failed见下文:
if ($exitCode -ne 0)
{
Write-Output ("[Error] Failing task since return code was {0} while expected 0." -f $exitCode)
Write-Host "##vso[task.complete result=Failed;]Failed"
}
exit $exitCode
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10906 次 |
| 最近记录: |