Terraform
Acceptance Tests: Continuous Integration
GitHub Actions Workflow
If using GitHub, run acceptance testing via GitHub Actions. Other continuous integration runners are also supported.
Ensure the GitHub Organization settings for GitHub
Actions
and GitHub Repository settings for GitHub
Actions
allows running workflows and allows the actions/checkout, actions/setup-go,
and hashicorp/setup-terraform actions.
Create a GitHub Actions
workflow
file, such as .github/workflows/test.yaml, that does the following:
- Runs when pull requests are submitted or on other events as appropriate.
- Uses actions/checkoutto checkout the provider codebase.
- Uses actions/setup-goto install Go.
- Uses
hashicorp/setup-terraformto install Terraform CLI.
- Runs the go testcommand with the appropriate environment variables and flags.
Use the
matrix
strategy for more advanced configuration, such as running acceptance testing
against multiple Terraform CLI versions.
The following example workflow runs acceptance testing for the provider using
the latest patch versions of the Go version in the go.mod file and Terraform
CLI 1.11:
---
name: Terraform Provider Tests
on:
  pull_request:
    paths:
      - '.github/workflows/test.yaml'
      - '**.go'
permissions:
  # Permission for checking out code
  contents: read
jobs:
  acceptance:
    name: Acceptance Tests
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-go@v4
        with:
          go-version-file: 'go.mod'
      - uses: hashicorp/setup-terraform@v2
        with:
          terraform_version: '1.11.*'
          terraform_wrapper: false
      - run: go test -v -cover ./...
        env: TF_ACC: '1'r
  unit:
    name: Unit Tests
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-go@v4
        with:
          go-version-file: 'go.mod'
      - run: go test -v -cover ./...  ```
The following example workflow runs acceptance testing for the provider using
the latest patch versions of Go version in the go.mod file and Terraform CLI
0.12 through 1.11:
name: Terraform Provider Tests
on:
  pull_request:
    paths:
      - '.github/workflows/test.yaml'
      - '**.go'
permissions:
  # Permission for checking out code
  contents: read
jobs:
  acceptance:
    name: Acceptance Tests (Terraform ${{ matrix.terraform-version }})
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        terraform-version:
          - '0.12.*'
          - '0.13.*'
          - '0.14.*'
          - '0.15.*'
          - '1.0.*'
          - '1.1.*'
          - '1.2.*'
          - '1.3.*'
          - '1.4.*'
          - '1.5.*'
          - '1.6.*'
          - '1.7.*'
          - '1.8.*'
          - '1.9.*'
          - '1.10.*'
          - '1.11.*'
    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-go@v4
        with:
          go-version-file: 'go.mod'
      - uses: hashicorp/setup-terraform@v2
        with:
          terraform_version: ${{ matrix.terraform-version }}
          terraform_wrapper: false
      - run: go test -v -cover ./...
        env:
          TF_ACC: '1'
  unit:
    name: Unit Tests
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-go@v4
        with:
          go-version-file: 'go.mod'
      - run: go test -v -cover ./...