Luke Kysow b1e32643f5 Fix bug where Atlantis hangs on terraform crash.
Because of some weirdness with how terraform executes (it forks itself
and assigns the parent's stderr and stdout file descriptors to the
child) when terraform panics, Go's exec.CombinedOutput() blocks
indefinitely even though the terraform process has exited.

To handle this, we switch to using os.Pipe for the cmd's stderr/out
which for some reason allows Go to know when the process has exited.
Unfortunately, this brings up a new problem when reading the output from
that pipe. For some reason, after a terraform crash, we never get an EOF
on the pipe and so as we again get in a situation where we're blocking
indefinitely. To handle this, I've added an edge case where we look at
the log lines and if its the end of a terraform panic, we break out of
the loop.

Thanks Terraform 0.12-alpha for discovering this bug!
2019-01-10 17:42:30 -05:00
2019-01-07 16:10:21 -05:00
2018-12-12 14:26:46 -06:00
2018-12-12 12:41:33 -06:00
2018-07-24 17:02:01 +02:00
2018-12-20 13:11:37 -06:00
2018-12-17 17:03:05 -05:00
2018-12-19 10:11:35 -08:00
2018-12-12 12:41:33 -06:00
2018-12-12 12:41:33 -06:00
2018-03-15 17:25:02 -07:00
2018-12-20 13:11:37 -06:00
2018-08-08 16:49:43 -10:00
2018-08-16 13:02:09 -10:00
2018-08-16 13:02:09 -10:00

Atlantis

Atlantis Logo

Terraform For Teams

Resources

What is Atlantis?

A self-hosted golang application that listens for Terraform pull request events via webhooks.

What does it do?

Runs terraform plan and apply remotely and comments back on the pull request with the output.

Why should you use it?

  • Make Terraform changes visible to your whole team.
  • Enable non-operations engineers to collaborate on Terraform.
  • Standardize your Terraform workflows.

Badges!

SuperDopeBadge Go Report Card CircleCI Slack Status Gitter chat

Description
Terraform Pull Request Automation
Readme 215 MiB