如何在满足条件时使Azure DevOps流水线作业失败?
解决Azure DevOps中LambdaInvokeFunction任务出错后触发作业失败的问题
你可以通过新增一个强制检查Lambda调用结果的步骤来实现需求,具体修改如下:
- task: LambdaInvokeFunction@1 inputs: awsCredentials: $(AWS_CREDENTIALS) regionName: $(AWS_REGION) functionName: $(AWS_LAMBDA_NAME) payload: $(AWS_LAMBDA_PAYLOAD) outputVariable: "LambdaOutput" # 新增:检查Lambda调用结果,存在错误则直接标记作业失败 - script: | if echo "$LambdaOutput" | grep -q "error"; then echo "##vso[task.logissue type=error]Lambda调用返回错误,终止作业" echo "##vso[task.complete result=Failed;]" fi displayName: 检查Lambda调用结果 condition: always() - script: | echo "I should run only if Lambda invokation had no error. In case of error, job must fail." condition: not(contains(variables['LambdaOutput'], 'error'))
关键说明:
- 新增的脚本步骤使用
condition: always(),确保无论前序任务是成功、失败还是跳过,这个检查步骤都会执行 - 通过
grep -q "error"检测输出变量中是否包含错误关键字,匹配到后执行两个Azure DevOps命令:##vso[task.logissue type=error]:在流水线日志中记录一条错误信息##vso[task.complete result=Failed;]:直接将当前作业标记为失败状态
- 原有的业务脚本步骤保留原有条件,仅在Lambda调用无错误时执行,错误场景下会被跳过且作业已被标记失败
内容的提问来源于stack exchange,提问作者Mit94
相关产品推荐
相关产品推荐

