如何在Azure Pipeline中获取失败插件任务的错误码并进行后续处理?
在Azure Pipeline中获取插件任务的返回码并执行后续操作
方法1:通过ContinueOnError结合日志解析捕获返回码
- 先给目标插件任务设置
continueOnError: true,让流水线不会因该任务失败直接终止,保留后续执行的可能性。 - 添加一个脚本任务(PowerShell/Bash均可),通过解析流水线日志提取插件返回的错误码:
- 示例Bash脚本(需根据插件实际日志格式调整匹配规则):
# 假设插件日志中包含"Exit Code: XXX"格式的输出 ERROR_CODE=$(grep -r "Exit Code: " $(Agent.WorkFolder)/_diag/ | awk '{print $NF}') # 将提取到的错误码设置为流水线变量 echo "##vso[task.setvariable variable=PluginErrorCode;]$ERROR_CODE"
- 示例Bash脚本(需根据插件实际日志格式调整匹配规则):
方法2:调用插件底层命令行工具直接捕获返回码
部分Azure插件对应有命令行工具,可绕过可视化任务直接调用:
- 示例PowerShell脚本:
# 调用插件对应的命令行指令 & az specific-plugin-command --required-params ... # 获取命令执行的返回码 $exitCode = $LASTEXITCODE Write-Host "##vso[task.setvariable variable=PluginExitCode;]$exitCode" # 按需决定是否标记任务失败 if ($exitCode -ne 0) { Write-Host "##vso[task.logissue type=error;]任务执行失败,返回码: $exitCode" exit $exitCode }
方法3:基于错误特征关键词分支处理
若插件未明确输出返回码,但不同失败场景有独特的错误消息,可通过关键词匹配执行对应逻辑:
steps: - task: AzurePluginTask@1 name: TargetPlugin continueOnError: true inputs: # 插件配置参数 - task: PowerShell@2 condition: failed() && contains(variables['TargetPlugin.ErrorMessage'], '权限不足') inputs: script: | # 针对权限错误的处理逻辑 - task: PowerShell@2 condition: failed() && contains(variables['TargetPlugin.ErrorMessage'], '资源不存在') inputs: script: | # 针对资源不存在错误的处理逻辑
注:不同插件的日志输出格式差异较大,需先查看插件执行日志,确认错误码或特征关键词的具体格式后再调整解析逻辑。
内容的提问来源于stack exchange,提问作者Mike Collins
相关产品推荐
相关产品推荐

