Skip to content

Smoke Tests

Smoke Tests #8593

Workflow file for this run

# 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