Skip to content

tfexec: add InitJSON #353

tfexec: add InitJSON

tfexec: add InitJSON #353

Workflow file for this run

name: Tests
on:
pull_request:
branches:
- main
push:
branches:
- main
env:
GOPROXY: https://proxy.golang.org/
jobs:
copywrite:
runs-on: ubuntu-latest
timeout-minutes: 3
steps:
- name: Checkout Repo
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- name: Install copywrite
uses: hashicorp/setup-copywrite@v1.1.3
- name: Validate Header Compliance
run: copywrite headers --plan
# resolve-versions allows us to show resolved Go versions in job titles
# for added clarity and quick orientation in a long list of past jobs
resolve-versions:
runs-on: ubuntu-latest
timeout-minutes: 5
steps:
-
name: Resolve old stable version
id: oldstable
uses: actions/setup-go@41dfa10bad2bb2ae585af6ee5bb4d7d973ad74ed # v5.1.0
with:
go-version: oldstable
-
name: Resolve stable version
id: stable
uses: actions/setup-go@41dfa10bad2bb2ae585af6ee5bb4d7d973ad74ed # v5.1.0
with:
go-version: stable
outputs:
oldstable: ${{ steps.oldstable.outputs.go-version }}
stable: ${{ steps.stable.outputs.go-version }}
static-checks:
name: static-checks (go ${{ matrix.go_version }})
needs: resolve-versions
runs-on: ubuntu-latest
timeout-minutes: 10
strategy:
fail-fast: false
matrix:
go_version:
- ${{ needs.resolve-versions.outputs.oldstable }}
- ${{ needs.resolve-versions.outputs.stable }}
steps:
-
name: Checkout
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
-
name: Set up Go
uses: actions/setup-go@41dfa10bad2bb2ae585af6ee5bb4d7d973ad74ed # v5.1.0
with:
go-version: ${{ matrix.go_version }}
-
name: Go fmt
run:
# exit 1 if any files need go fmt
test -z $(gofmt -s -l .)
-
name: Go vet
run: go vet ./...
unit-tests:
name: unit-tests (${{ matrix.os }}, go ${{ matrix.go_version }})
needs:
- resolve-versions
- static-checks
runs-on: ${{ matrix.os }}
timeout-minutes: 20
strategy:
fail-fast: false
matrix:
os:
- ubuntu-latest
- windows-latest
- macos-latest
go_version:
- ${{ needs.resolve-versions.outputs.oldstable }}
- ${{ needs.resolve-versions.outputs.stable }}
steps:
-
name: Checkout
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
-
name: Set up Go
uses: actions/setup-go@41dfa10bad2bb2ae585af6ee5bb4d7d973ad74ed # v5.1.0
with:
go-version: ${{ matrix.go_version }}
-
name: Go mod download
run: go mod download -x
-
name: Go mod verify
run: go mod verify
-
name: Run build
run: go build ./...
-
name: Run unit tests
run: go test -cover -race $(go list ./... | grep -v /tfexec/internal/e2etest)
e2e-tests:
name: e2e-tests (${{ matrix.os }}, go ${{ matrix.go_version }}, terraform ${{ matrix.terraform_version }})
needs:
- resolve-versions
- static-checks
- unit-tests
runs-on: ${{ matrix.os }}
timeout-minutes: 60
strategy:
fail-fast: false
matrix:
os:
- ubuntu-latest
- windows-latest
- macos-latest
go_version:
- ${{ needs.resolve-versions.outputs.oldstable }}
- ${{ needs.resolve-versions.outputs.stable }}
terraform_version:
- "0.11.15"
- "0.12.31"
- "0.13.7"
- "0.14.11"
- "0.15.5"
- "1.0.11"
- "1.1.9"
- "1.2.9"
- "1.3.7"
- "refs/heads/main"
steps:
-
name: Checkout
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
-
name: Set up Go
uses: actions/setup-go@41dfa10bad2bb2ae585af6ee5bb4d7d973ad74ed # v5.1.0
with:
go-version: ${{ matrix.go_version }}
-
name: Run E2E tests
env:
TFEXEC_E2ETEST_VERSIONS: ${{ matrix.terraform_version }}
run: go test -race -timeout=30m -v ./tfexec/internal/e2etest