【发布时间】:2020-09-16 01:54:10
【问题描述】:
我在想出一个解决方案时遇到了麻烦附加到计划命令:没有更改是退出代码 0,更改是退出代码 2。
我面临的问题是,如果没有 terraform 计划的更改,我希望管道跳过其余阶段并报告成功,并在检测到更改时继续管道。
- script: |
terraform plan -input=false -no-color -out=plan.tfplan -detailed-exitcode
# on changes detected, succeed; otherwise fail
if [ $? -eq 2 ]; then
exit 0
else
exit 1
fi
displayName: "Planning Terraform Changes"
name: TerraformPlan
condition: succeeded()
continueOnError: true
workingDirectory: "$(Build.SourcesDirectory)/terraform/$(ENVIRONMENT_NAME)"
env:
TF_IN_AUTOMATION: true
ARM_CLIENT_ID: $(NONPROD_ARM_CLIENT_ID)
ARM_CLIENT_SECRET: $(NONPROD_ARM_CLIENT_SECRET)
ARM_SUBSCRIPTION_ID: $(NONPROD_ARM_SUBSCRIPTION_ID)
ARM_TENANT_ID: $(NONPROD_ARM_TENANT_ID)
- script: |
echo "Nothing to do"
displayName: "No changes detected"
name: NoChanges
condition: failed()
- script: |
echo "Changes detected"
displayName: "Changes Detected"
name: Changes
condition: succeeded()
- stage: ...
使用上述管道 yaml,“检测到的更改”脚本始终运行。我不确定我是否以正确的方式进行此操作,因此感谢您提供任何意见。
您是否认为采用删除文件并使用管道变量的方法会更好,例如:Skip stage with manual approval in Azure DevOps Pipelines (YAML)
更新:
如果我删除continueOnError: true,那么整个管道在舞台之后停止并且“未检测到更改”被拾取。我正在尝试让管道进入另一个阶段。
【问题讨论】:
标签: azure-devops terraform azure-pipelines