I'm using Terraform as part of a Jenkins Pipeline. When terraform apply encounters an error, it does not return a non-zero exit code. When running into a problem on Jenkins, it does not stop the pipeline or mark the build as FAILURE.

If terraform encounters an error, I need the job to stop and not progress.

Looking at the docs for apply, it doesn't look like I can provide a flag to return helpful exit codes. The docs for plan has a -detailed-exitcode flag, but doesn't look like that'll help me.

  • Would sidestepping the issue by running terraform apply | tee /dev/tty | ( ! grep "Error applying plan" ) work? That will return 1 if the "Error applying plan" text is in the output. Let me know if that's a suitable answer for you, or if you're looking for a more graceful solution. – Aurora0001 Apr 12 '17 at 19:47
  • Thanks for your response. That would do the job, but it's a little more of a hack than what I was hoping for. – Dan Mandle Apr 12 '17 at 19:54

Turns out this was not a real issue. My apologies. At the end of that shell script, it did an echo which is what was returning the non-zero status code. After I took that out, it worked as expected.

| improve this answer | |
  • shouldn't jenkins fail is any command in 'execute shell' returns non-zero? – xddsg Nov 23 '17 at 14:04

Not the answer you're looking for? Browse other questions tagged or ask your own question.