繁体   English   中英

如何使 Azure devops 管道任务失败,专门针对构建步骤中的失败。yaml 文件 - bash

[英]How to fail Azure devops pipeline task specifically for failures in build-steps.yaml file - bash

在此处输入图像描述,尽管 terraform 验证有错误但构建并未停止,这是构建步骤中的部分。yaml:

 - task: TerraformCLI@0
    displayName: "Run Terraform fmt"
    inputs:
      command: 'fmt'
      commandOptions: '-check -recursive'
      allowTelemetryCollection: false

  - bash: |
     find . -type f \
       -name "*.tf" | \
       xargs -I % dirname % | \
       sort -u | \
       xargs -I ? bash -c \
         '(cd ? && terraform init -backend=false && terraform validate ; rm -rf .terraform)' \ 

    displayName: "Run Terraform validate" 

我试过continueOnError: false ,但没有用。

- task: TerraformCLI@0
    displayName: "Run Terraform fmt"
    inputs:
      command: 'fmt'
      commandOptions: '-check -recursive'
      allowTelemetryCollection: false

 - bash: |
    find . -type f \
      -name "*.tf" | \
      xargs -I % dirname % | \
      sort -u | \
      xargs -I ? bash -c \
        '(cd ? && terraform init -backend=false && terraform validate ; rm -rf .terraform)' \ 

   displayName: "Run Terraform validate" 
   continueOnError: false

首先,您可以使用TerraformCLl任务运行 terraform 验证。

- task: TerraformCLI@0
   displayName: "Run Terraform fmt"
   inputs:
     command: 'validate'
     commandOptions: 'xxxx'
     allowTelemetryCollection: false

我可以在使用 bash 时停止构建吗?

您可以尝试为 bash 任务启用选项“ Fail on Standard Error ”。 如果这是真的,如果有任何错误写入StandardError stream,则此任务将失败。

例如:

 - bash: |
    find . -type f \
      -name "*.tf" | \
      xargs -I % dirname % | \
      sort -u | \
      xargs -I ? bash -c \
        '(cd ? && terraform init -backend=false && terraform validate ; rm -rf .terraform)' \ 

   displayName: "Run Terraform validate" 
   failOnStderr: true

或者,在脚本中使用set -e

 - bash: |
    set -e
    find . -type f \
      -name "*.tf" | \
      xargs -I % dirname % | \
      sort -u | \
      xargs -I ? bash -c \
        '(cd ? && terraform init -backend=false && terraform validate ; rm -rf .terraform)' \ 

   displayName: "Run Terraform validate" 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM