Smoke Tests #8580
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 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: Smoke Tests | |
permissions: read-all | |
on: | |
schedule: | |
- cron: "0 */3 * * *" | |
workflow_dispatch: {} | |
jobs: | |
build: | |
name: Build | |
runs-on: ubuntu-latest | |
timeout-minutes: 5 | |
steps: | |
- name: Check out code into the Go module directory | |
uses: actions/checkout@v4 | |
- name: Set up Go | |
uses: actions/setup-go@v5 | |
with: | |
go-version-file: 'go.mod' | |
cache: true | |
id: go | |
- name: go env | |
run: echo "GOCACHE=$(go env GOCACHE)" >> $GITHUB_ENV | |
- name: Get dependencies | |
run: | | |
go mod download | |
- name: Build | |
run: | | |
make build | |
tests-acceptance: | |
name: Matrix Acceptance Tests | |
needs: build | |
runs-on: ubuntu-latest | |
timeout-minutes: 15 | |
strategy: | |
max-parallel: 2 | |
fail-fast: false | |
matrix: | |
terraform: | |
- '1.8.*' | |
- '1.9.*' | |
- 'latest' | |
steps: | |
- name: Check out code into the Go module directory | |
uses: actions/checkout@v4 | |
- name: Set up Go | |
uses: actions/setup-go@v5 | |
with: | |
go-version-file: 'go.mod' | |
cache: true | |
id: go | |
- uses: hashicorp/setup-terraform@v3 | |
with: | |
terraform_version: ${{ matrix.terraform }} | |
terraform_wrapper: false | |
- name: go env | |
run: echo "GOCACHE=$(go env GOCACHE)" >> $GITHUB_ENV | |
- uses: actions/cache@v4 | |
continue-on-error: true | |
timeout-minutes: 2 | |
with: | |
path: ${{ env.GOCACHE }} | |
key: ${{ runner.os }}-GOCACHE-${{ hashFiles('go.sum') }}-${{ hashFiles('internal/**') }} | |
- uses: actions/cache@v4 | |
continue-on-error: true | |
timeout-minutes: 2 | |
with: | |
path: ~/go/pkg/mod | |
key: ${{ runner.os }}-go-pkg-mod-${{ hashFiles('go.sum') }} | |
- name: Get dependencies | |
run: | | |
go mod download | |
- name: Acceptance tests | |
timeout-minutes: 10 | |
env: | |
TWINGATE_URL: ${{ secrets.TWINGATE_URL }} | |
TWINGATE_NETWORK: ${{ secrets.TWINGATE_NETWORK }} | |
TWINGATE_API_TOKEN: ${{ secrets.TWINGATE_API_TOKEN }} | |
TEST_UNIQUE_VALUE: ${{ github.run_id }}-${{ github.run_number }}-${{ matrix.terraform }} | |
run: | | |
make testacc | |
- name: Report Status | |
if: always() | |
uses: ravsamhq/notify-slack-action@v2 | |
with: | |
status: ${{ job.status }} | |
notification_title: "Terraform Provider {workflow} has {status_message}" | |
message_format: "{emoji} *{workflow} (<{run_url}|{job}-${{ join(matrix.*, ' - ') }}>)* {status_message} in <{repo_url}|{repo}>" | |
footer: "Linked Repo <{repo_url}|{repo}>" | |
notify_when: 'failure' | |
env: | |
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_OPS_WEBHOOK }} | |
tests-acceptance-opentofu: | |
name: OpenTofu Matrix Acceptance Tests | |
needs: build | |
runs-on: ubuntu-latest | |
if: "!github.event.pull_request.head.repo.fork" | |
timeout-minutes: 15 | |
strategy: | |
max-parallel: 2 | |
fail-fast: false | |
matrix: | |
tofu: | |
- '1.6.*' | |
- 'latest' | |
steps: | |
- name: Check out code into the Go module directory | |
uses: actions/checkout@v4 | |
- name: Set up Go | |
uses: actions/setup-go@v5 | |
with: | |
go-version-file: 'go.mod' | |
cache: true | |
id: go | |
- uses: opentofu/setup-opentofu@v1 | |
with: | |
tofu_version: ${{ matrix.tofu }} | |
tofu_wrapper: false | |
- name: go env | |
run: echo "GOCACHE=$(go env GOCACHE)" >> $GITHUB_ENV | |
- name: Get dependencies | |
run: | | |
go mod download | |
- name: Acceptance tests | |
timeout-minutes: 10 | |
env: | |
TF_ACC_PROVIDER_NAMESPACE: "hashicorp" | |
TF_ACC_PROVIDER_HOST: "registry.opentofu.org" | |
TWINGATE_URL: ${{ secrets.TWINGATE_URL }} | |
TWINGATE_NETWORK: ${{ secrets.TWINGATE_NETWORK }} | |
TWINGATE_API_TOKEN: ${{ secrets.TWINGATE_API_TOKEN }} | |
TEST_UNIQUE_VALUE: ${{ github.run_id }}-${{ github.run_number }}-opentofu-${{ matrix.tofu }} | |
run: | | |
tofu version | |
export TF_ACC_TERRAFORM_PATH=$(which tofu) | |
make testacc | |
cleanup: | |
name: Cleanup | |
if: always() | |
needs: [tests-acceptance, tests-acceptance-opentofu] | |
runs-on: ubuntu-latest | |
timeout-minutes: 15 | |
steps: | |
- name: Check out code into the Go module directory | |
uses: actions/checkout@v4 | |
- name: Set up Go | |
uses: actions/setup-go@v5 | |
with: | |
go-version-file: 'go.mod' | |
cache: true | |
id: go | |
- name: go env | |
run: echo "GOCACHE=$(go env GOCACHE)" >> $GITHUB_ENV | |
- name: Get dependencies | |
run: | | |
go mod download | |
- name: Run sweepers | |
timeout-minutes: 10 | |
env: | |
TWINGATE_URL: ${{ secrets.TWINGATE_URL }} | |
TWINGATE_NETWORK: ${{ secrets.TWINGATE_NETWORK }} | |
TWINGATE_API_TOKEN: ${{ secrets.TWINGATE_API_TOKEN }} | |
TEST_UNIQUE_VALUE: ${{ github.run_id }}-${{ github.run_number }} | |
run: | | |
make sweep |