Skip test if HYOK_ORGANIZATION_NAME not included in env variable #594
Workflow file for this run
This file contains hidden or 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 workflow builds the product for all supported platforms and uploads the resulting | |
| # binaries as Actions artifacts. The workflow also uploads a build metadata file | |
| # (metadata.json) -- and a Terraform Registry manifest file (terraform-registry-manifest.json). | |
| name: build | |
| # We default to running this workflow on every push to every branch. | |
| # This provides fast feedback when build issues occur, so they can be | |
| # fixed prior to being merged to the main branch. | |
| # | |
| # If you want to opt out of this, and only run the build on certain branches | |
| # please refer to the documentation on branch filtering here: | |
| # | |
| # https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#onpushbranchestagsbranches-ignoretags-ignore | |
| # | |
| on: [workflow_dispatch, push] | |
| env: | |
| PKG_NAME: "terraform-provider-tfe" | |
| jobs: | |
| # Detects the Go toolchain version to use for product builds. | |
| # | |
| # The implementation is inspired by envconsul -- https://go.hashi.co/get-go-version-example | |
| get-go-version: | |
| name: "Detect Go toolchain version" | |
| runs-on: ubuntu-latest | |
| outputs: | |
| go-version: ${{ steps.get-go-version.outputs.go-version }} | |
| steps: | |
| - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | |
| - uses: actions/setup-go@44694675825211faa026b3c33043df3e48a5fa00 # v6.0.0 | |
| with: | |
| go-version-file: 'go.mod' | |
| - name: Detect Go version | |
| id: get-go-version | |
| run: | | |
| version="$(go list -f {{.GoVersion}} -m)" | |
| echo "go-version=$version" >> "$GITHUB_OUTPUT" | |
| # Parses the version/VERSION file. | |
| # | |
| # Reference: https://github.com/hashicorp/actions-set-product-version/blob/main/README.md | |
| set-product-version: | |
| name: "Parse version file" | |
| runs-on: ubuntu-latest | |
| outputs: | |
| product-version: ${{ steps.set-product-version.outputs.product-version }} | |
| product-base-version: ${{ steps.set-product-version.outputs.base-product-version }} | |
| product-prerelease-version: ${{ steps.set-product-version.outputs.prerelease-product-version }} | |
| product-minor-version: ${{ steps.set-product-version.outputs.minor-product-version }} | |
| steps: | |
| - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | |
| - name: Set variables | |
| id: set-product-version | |
| uses: hashicorp/actions-set-product-version@v2 | |
| # Creates metadata.json file containing build metadata for consumption by CRT workflows. | |
| # | |
| # Reference: https://github.com/hashicorp/actions-generate-metadata/blob/main/README.md | |
| generate-metadata-file: | |
| needs: set-product-version | |
| runs-on: ubuntu-latest | |
| outputs: | |
| filepath: ${{ steps.generate-metadata-file.outputs.filepath }} | |
| steps: | |
| - name: "Checkout directory" | |
| uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | |
| - name: Generate metadata file | |
| id: generate-metadata-file | |
| uses: hashicorp/actions-generate-metadata@v1 | |
| with: | |
| version: ${{ needs.set-product-version.outputs.product-version }} | |
| product: ${{ env.PKG_NAME }} | |
| repositoryOwner: "hashicorp" | |
| - uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 | |
| with: | |
| name: metadata.json | |
| path: ${{ steps.generate-metadata-file.outputs.filepath }} | |
| # Uploads an Actions artifact named terraform-registry-manifest.json.zip. | |
| # | |
| # The artifact contains a single file with a filename that Terraform Registry expects | |
| # (example: terraform-provider-crt-example_2.3.6-alpha1_manifest.json). The file contents | |
| # are identical to the terraform-registry-manifest.json file in the source repository. | |
| upload-terraform-registry-manifest-artifact: | |
| needs: set-product-version | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: "Checkout directory" | |
| uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
| with: | |
| path: ${{ env.PKG_NAME }} | |
| - name: "Copy manifest from checkout directory to a file with the desired name" | |
| id: terraform-registry-manifest | |
| run: | | |
| name="${{ env.PKG_NAME }}" | |
| version="${{ needs.set-product-version.outputs.product-version }}" | |
| source="${name}/terraform-registry-manifest.json" | |
| destination="${name}_${version}_manifest.json" | |
| cp "$source" "$destination" | |
| echo "filename=$destination" >> "$GITHUB_OUTPUT" | |
| - uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 | |
| with: | |
| name: terraform-registry-manifest.json | |
| path: ${{ steps.terraform-registry-manifest.outputs.filename }} | |
| if-no-files-found: error | |
| # Builds the product for all platforms except macOS. | |
| # | |
| # With `reproducible: report`, this job also reports whether the build is reproducible, | |
| # but does not enforce it. | |
| # | |
| # Reference: https://github.com/hashicorp/actions-go-build/blob/main/README.md | |
| build: | |
| needs: | |
| - get-go-version | |
| - set-product-version | |
| runs-on: ubuntu-latest | |
| strategy: | |
| fail-fast: true | |
| # TODO: Customize `matrix` for your provider. Compare to existing .goreleaser.yml. | |
| # Verify expected Artifacts list for a workflow run. | |
| matrix: | |
| goos: [freebsd, windows, linux, darwin] | |
| goarch: ["386", "amd64", "arm", "arm64"] | |
| exclude: | |
| - goos: freebsd | |
| goarch: arm64 | |
| - goos: windows | |
| goarch: arm64 | |
| - goos: windows | |
| goarch: arm | |
| - goos: darwin | |
| goarch: 386 | |
| - goos: darwin | |
| goarch: arm | |
| name: Go ${{ needs.get-go-version.outputs.go-version }} ${{ matrix.goos }} ${{ matrix.goarch }} build | |
| steps: | |
| - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | |
| - uses: hashicorp/actions-go-build@v1 | |
| env: | |
| CGO_ENABLED: 0 | |
| BASE_VERSION: ${{ needs.set-product-version.outputs.product-base-version }} | |
| PRERELEASE_VERSION: ${{ needs.set-product-version.outputs.product-prerelease-version}} | |
| METADATA_VERSION: ${{ env.METADATA }} | |
| with: | |
| # TODO: Customize `bin_name` for your provider. Compare to existing .goreleaser.yml. | |
| # Protocol v6 providers should omit the `_x5` suffix. | |
| bin_name: "${{ env.PKG_NAME }}_v${{ needs.set-product-version.outputs.product-version }}_x5" | |
| product_name: ${{ env.PKG_NAME }} | |
| product_version: ${{ needs.set-product-version.outputs.product-version }} | |
| go_version: ${{ needs.get-go-version.outputs.go-version }} | |
| os: ${{ matrix.goos }} | |
| arch: ${{ matrix.goarch }} | |
| reproducible: report | |
| # TODO: Customize `go build` flags for your provider. Compare to existing .goreleaser.yml. | |
| # TODO: Customize `ldflags` for your provider. Ensure that the import path and name in the -X flag | |
| # are correct for your provider. | |
| instructions: | | |
| go build \ | |
| -o "$BIN_PATH" \ | |
| -trimpath \ | |
| -buildvcs=false \ | |
| -ldflags "-s -w -X 'version.ProviderVersion=${{ needs.set-product-version.outputs.product-version }}'" | |
| cp LICENSE "$TARGET_DIR/LICENSE.txt" | |
| whats-next: | |
| needs: | |
| - build | |
| - generate-metadata-file | |
| - upload-terraform-registry-manifest-artifact | |
| runs-on: ubuntu-latest | |
| name: "What's next?" | |
| steps: | |
| - name: "Write a helpful summary" | |
| run: | | |
| github_dot_com="${{ github.server_url }}" | |
| owner_with_name="${{ github.repository }}" | |
| ref="${{ github.ref }}" | |
| echo "### What's next?" >> "$GITHUB_STEP_SUMMARY" | |
| echo "#### For a release branch (see \`.release/ci.hcl\`)" >> $GITHUB_STEP_SUMMARY | |
| echo "After this \`build\` workflow run completes succesfully, you can expect the CRT \`prepare\` workflow to begin momentarily." >> "$GITHUB_STEP_SUMMARY" | |
| echo "To find the \`prepare\` workflow run, [view the checks for this commit]($github_dot_com/$owner_with_name/commits/$ref)" >> "$GITHUB_STEP_SUMMARY" |