# This GitHub action runs your tests for each commit push and/or PR. Optionally # you can turn it on using a cron schedule for regular testing. # name: Tests on: pull_request: paths-ignore: - "README.md" push: paths-ignore: - "README.md" # For systems with an upstream API that could drift unexpectedly (like most SaaS systems, etc.), # we recommend testing at a regular interval not necessarily tied to code changes. This will # ensure you are alerted to something breaking due to an API change, even if the code did not # change. # schedule: # - cron: '0 13 * * *' jobs: # ensure the code builds... build: name: Build runs-on: ubuntu-latest timeout-minutes: 5 steps: - name: Set up Go uses: actions/setup-go@v4 with: go-version: "1.20" id: go - name: Check out code into the Go module directory uses: actions/checkout@v3 - name: Get dependencies run: | go mod download - name: Build run: | go build -v . generate: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - uses: actions/setup-go@v4 with: go-version-file: "go.mod" cache: true - run: go generate ./... - name: git diff run: | git diff --compact-summary --exit-code || \ (echo; echo "Unexpected difference in directories after code generation. Run 'go generate ./...' command and commit."; exit 1) # run acceptance tests in a matrix with Terraform core versions test: name: Matrix Test needs: build runs-on: ubuntu-latest timeout-minutes: 15 strategy: fail-fast: false matrix: # list whatever Terraform versions here you would like to support terraform: - "0.12.*" - "0.13.*" - "0.14.*" - "0.15.*" - "1.0.*" - "1.1.*" steps: - name: Set up Go uses: actions/setup-go@v4 with: go-version: "1.20" id: go - uses: hashicorp/setup-terraform@v2 with: terraform_version: ${{ matrix.terraform }} terraform_wrapper: false - name: Check out code into the Go module directory uses: actions/checkout@v3 - name: Get dependencies run: | go mod download - name: TF acceptance tests timeout-minutes: 10 env: TF_ACC: "1" # Set whatever additional acceptance test env vars here. You can # optionally use data from your repository secrets using the # following syntax: # SOME_VAR: ${{ secrets.SOME_VAR }} run: | go test -v -cover ./internal/provider/