aboutsummaryrefslogtreecommitdiff
path: root/.github/workflows
diff options
context:
space:
mode:
Diffstat (limited to '.github/workflows')
-rw-r--r--.github/workflows/release.yml41
-rw-r--r--.github/workflows/test.yml78
2 files changed, 119 insertions, 0 deletions
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
new file mode 100644
index 0000000..1115591
--- /dev/null
+++ b/.github/workflows/release.yml
@@ -0,0 +1,41 @@
+# Terraform Provider release workflow.
+name: Release
+
+# This GitHub action creates a release when a tag that matches the pattern
+# "v*" (e.g. v0.1.0) is created.
+on:
+ push:
+ tags:
+ - 'v*'
+
+# Releases need permissions to read and write the repository contents.
+# GitHub considers creating releases and uploading assets as writing contents.
+permissions:
+ contents: write
+
+jobs:
+ goreleaser:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3
+ with:
+ # Allow goreleaser to access older tag information.
+ fetch-depth: 0
+ - uses: actions/setup-go@fac708d6674e30b6ba41289acaab6d4b75aa0753 # v4.0.1
+ with:
+ go-version-file: 'go.mod'
+ cache: true
+ - name: Import GPG key
+ uses: crazy-max/ghaction-import-gpg@72b6676b71ab476b77e676928516f6982eef7a41 # v5.3.0
+ id: import_gpg
+ with:
+ gpg_private_key: ${{ secrets.GPG_PRIVATE_KEY }}
+ passphrase: ${{ secrets.PASSPHRASE }}
+ - name: Run GoReleaser
+ uses: goreleaser/goreleaser-action@336e29918d653399e599bfca99fadc1d7ffbc9f7 # v4.3.0
+ with:
+ args: release --clean
+ env:
+ # GitHub sets the GITHUB_TOKEN secret automatically.
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ GPG_FINGERPRINT: ${{ steps.import_gpg.outputs.fingerprint }}
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
new file mode 100644
index 0000000..b742054
--- /dev/null
+++ b/.github/workflows/test.yml
@@ -0,0 +1,78 @@
+# Terraform Provider testing workflow.
+name: Tests
+
+# This GitHub action runs your tests for each pull request and push.
+# Optionally, you can turn it on using a schedule for regular testing.
+on:
+ pull_request:
+ paths-ignore:
+ - 'README.md'
+ push:
+ paths-ignore:
+ - 'README.md'
+
+# Testing only needs permissions to read the repository contents.
+permissions:
+ contents: read
+
+jobs:
+ # Ensure project builds before running testing matrix
+ build:
+ name: Build
+ runs-on: ubuntu-latest
+ timeout-minutes: 5
+ steps:
+ - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3
+ - uses: actions/setup-go@fac708d6674e30b6ba41289acaab6d4b75aa0753 # v4.0.1
+ with:
+ go-version-file: 'go.mod'
+ cache: true
+ - run: go mod download
+ - run: go build -v .
+ - name: Run linters
+ uses: golangci/golangci-lint-action@639cd343e1d3b897ff35927a75193d57cfcba299 # v3.6.0
+ with:
+ version: latest
+
+ generate:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3
+ - uses: actions/setup-go@fac708d6674e30b6ba41289acaab6d4b75aa0753 # v4.0.1
+ 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 CLI versions
+ test:
+ name: Terraform Provider Acceptance Tests
+ 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:
+ - '1.4.*'
+ - '1.5.*'
+ steps:
+ - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3
+ - uses: actions/setup-go@fac708d6674e30b6ba41289acaab6d4b75aa0753 # v4.0.1
+ with:
+ go-version-file: 'go.mod'
+ cache: true
+ - uses: hashicorp/setup-terraform@633666f66e0061ca3b725c73b2ec20cd13a8fdd1 # v2.0.3
+ with:
+ terraform_version: ${{ matrix.terraform }}
+ terraform_wrapper: false
+ - run: go mod download
+ - env:
+ TF_ACC: "1"
+ run: go test -v -cover ./internal/provider/
+ timeout-minutes: 10