Azure DevOps 在出现警告时失败,'fail on standard error'设置为 true



我在Azure DevOps ci管道上有一个内联PowerShell任务,要求忽略任何警告,但是,任何错误都会使任务失败并停止生成。

我最初将"标准错误失败"设置为true,但由于所有错误和警告都写入stderr,因此任何警告都将失败。

下面我用"标准错误失败"改为false。尽管注意到了错误,但并没有使任务失败。

sfdx partial:lsapp:build
if ($exitCode -ne 0)
{    
Write-Output ("[Error] Failing task since return code was {0} while expected 0." -f $exitCode)
}
[Environment]::Exit($exitCode)

如有任何帮助,我们将不胜感激。

似乎salesforce cli向stderr写入了警告。在这种情况下,您无法在执行salesforce命令的内联PowerShell任务中分离警告和错误。

但是,如果你想根据退出代码使管道失败,你仍然可以使用一个变通方法:将退出代码保存在管道变量中,并在一个单独的任务中对其进行评估,该任务具有failOnStderr: true,如果需要则失败:

steps:
- task: PowerShell@2
inputs:
targetType: 'inline'
script: |
#sfdx partial:lsapp:build
$exitCode = 1    # Setting this for testing
Write-Host "##vso[task.setvariable variable=sfdxExitCode;]$exitCode"
- task: PowerShell@2
inputs:
targetType: 'inline'
script: |
$exitCode = $(sfdxExitCode)
if ($exitCode -ne 0)
{    
Write-Error ("Failing task since return code was {0} while expected 0." -f $exitCode)
}
failOnStderr: true

根据您的场景,您可以更改Azure DevOps管道,使其在发生错误时不会停止-这就是;出现错误时继续";标志,可以在YAML Azure DevOps管道中设置如下:

- task: "Test@1"
continueOnError: true

对于经典管道;出现错误时继续";复选框。

有关更多信息,您可以阅读此Azure DevOps文档页面:https://learn.microsoft.com/en-us/azure/devops/pipelines/process/tasks?view=azure-devops&tabs=yaml

最新更新