mirror of
https://github.com/hashicorp/setup-terraform.git
synced 2025-12-15 16:12:35 +00:00
Fix output malformed when wrapper enabled (#367)
* Fix output malformed when wrapper enabled
Presently using a command such as `terraform output -json | jq` does not
work with the wrapper enabled, as it is by default.
In order to consume terraform's output having set it up with this
Action, it is necessary either to disable the wrapper (`with:
terraform_wrapper: false`) or run it in its own Actions step with an
explicit `id` (e.g. `id: foo`) so that it can be referred to and consumed
(`${{steps.foo.outputs.stdout}}` et al.) in later steps.
This seems to be the result of much confusion (issues passim) and is not
at all easy (#338) to debug/diagnose and come to the realisation that
it's due to the wrapper, or even that such a thing exists.
@austinvalle identified the issue as being due to the `@actions/exec`
package writing the spawned command to stdout (along with then its
actual stdout). This has previously been reported upstream in
actions/toolkit#649; I've proposed actions/toolkit#1573 to fix it.
This commit aims to address the issue for `setup-terraform` in the
meantime by silencing `@actions/exec` and then writing out to stdout &
stderr from the listener buffers, which it writes to without this
additional logging.
Closes #20, #80, #85, #149, #338, and probably more.
* add test for stdout with jq
* update test name
* remove debug lines and add changelog
* add additional note about the bug fix to wrapper
---------
Co-authored-by: Austin Valle <austinvalle@gmail.com>
This commit is contained in:
parent
4c41f96f26
commit
4dff81de7e
6 changed files with 99 additions and 15 deletions
69
.github/workflows/setup-terraform.yml
vendored
69
.github/workflows/setup-terraform.yml
vendored
|
|
@ -1,4 +1,4 @@
|
|||
name: 'Setup Terraform'
|
||||
name: 'setup-terraform tests'
|
||||
|
||||
on:
|
||||
push:
|
||||
|
|
@ -303,3 +303,70 @@ jobs:
|
|||
- name: Terraform Plan
|
||||
id: plan
|
||||
run: terraform plan
|
||||
|
||||
|
||||
terraform-stdout-wrapper:
|
||||
name: 'Terraform STDOUT'
|
||||
runs-on: ${{ matrix.os }}
|
||||
strategy:
|
||||
matrix:
|
||||
os: [ubuntu-latest, windows-latest, macos-latest]
|
||||
defaults:
|
||||
run:
|
||||
shell: bash
|
||||
working-directory: ./.github/workflows/data/local
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0
|
||||
|
||||
- name: Setup Terraform
|
||||
uses: ./
|
||||
with:
|
||||
terraform_wrapper: true
|
||||
|
||||
- name: Terraform Init
|
||||
run: terraform init
|
||||
|
||||
- name: Terraform Format
|
||||
run: terraform fmt -check
|
||||
|
||||
- name: Terraform Apply
|
||||
id: apply
|
||||
run: terraform apply -auto-approve
|
||||
|
||||
- name: Terraform Output to JQ
|
||||
id: output
|
||||
run: terraform output -json | jq '.pet.value'
|
||||
|
||||
terraform-stdout-no-wrapper:
|
||||
name: 'Terraform STDOUT No Wrapper'
|
||||
runs-on: ${{ matrix.os }}
|
||||
strategy:
|
||||
matrix:
|
||||
os: [ubuntu-latest, windows-latest, macos-latest]
|
||||
defaults:
|
||||
run:
|
||||
shell: bash
|
||||
working-directory: ./.github/workflows/data/local
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0
|
||||
|
||||
- name: Setup Terraform
|
||||
uses: ./
|
||||
with:
|
||||
terraform_wrapper: false
|
||||
|
||||
- name: Terraform Init
|
||||
run: terraform init
|
||||
|
||||
- name: Terraform Format
|
||||
run: terraform fmt -check
|
||||
|
||||
- name: Terraform Apply
|
||||
id: apply
|
||||
run: terraform apply -auto-approve
|
||||
|
||||
- name: Terraform Output to JQ
|
||||
id: output
|
||||
run: terraform output -json | jq '.pet.value'
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue