enter image description here although terraform validate has an error the build didn't stop , and here is the part in build-steps.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"
I've tried continueOnError: false, but it didn't work.
- 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
CodePudding user response:
Firstly, you can use the TerraformCLl task to run terraform validate.
- task: TerraformCLI@0
displayName: "Run Terraform fmt"
inputs:
command: 'validate'
commandOptions: 'xxxx'
allowTelemetryCollection: false
Can I stop the build while using the bash?
You can try to enable the option "Fail on Standard Error" for the bash task. If this is true, this task will fail if any errors are written to the StandardError stream.
For example:
- 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
Alternately, use set -e inside the script:
- 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"
