feat: add state lock command #1
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
name: build | |
# If you want to test changes to this file before merging to a main branch, | |
# push them up to a branch whose name has the prefix "build-workflow-dev/", | |
# which is a special prefix that triggers this workflow even though it's not | |
# actually a release branch. | |
on: | |
workflow_dispatch: | |
push: | |
branches: | |
- main | |
- 'v[0-9]+.[0-9]+' | |
- releng/** | |
- tsccr-auto-pinning/** | |
- dependabot/** | |
- tf-state-lock | |
tags: | |
- 'v[0-9]+.[0-9]+.[0-9]+*' | |
env: | |
PKG_NAME: "terraform" | |
permissions: | |
contents: read | |
statuses: write | |
jobs: | |
get-product-version: | |
name: "Determine intended Terraform version" | |
runs-on: ubuntu-latest | |
outputs: | |
product-version: ${{ steps.get-product-version.outputs.product-version }} | |
product-version-base: ${{ steps.get-product-version.outputs.base-product-version }} | |
product-version-pre: ${{ steps.get-product-version.outputs.prerelease-product-version }} | |
experiments: ${{ steps.get-ldflags.outputs.experiments }} | |
go-ldflags: ${{ steps.get-ldflags.outputs.go-ldflags }} | |
pkg-name: ${{ steps.get-pkg-name.outputs.pkg-name }} | |
steps: | |
- uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 | |
- name: Get Package Name | |
id: get-pkg-name | |
run: | | |
pkg_name=${{ env.PKG_NAME }} | |
echo "pkg-name=${pkg_name}" | tee -a "${GITHUB_OUTPUT}" | |
- name: Decide version number | |
id: get-product-version | |
uses: hashicorp/actions-set-product-version@e2c49d61aff17b1280ddfe7bb031331d02ca0140 # v1.0.1 | |
- name: Determine experiments | |
id: get-ldflags | |
env: | |
RAW_VERSION: ${{ steps.get-product-version.outputs.product-version }} | |
shell: bash | |
run: .github/scripts/get_product_version.sh | |
- name: Report chosen version number | |
run: | | |
[ -n "${{steps.get-product-version.outputs.product-version}}" ] | |
echo "::notice title=Terraform CLI Version::${{ steps.get-product-version.outputs.product-version }}" | |
get-go-version: | |
name: "Determine Go toolchain version" | |
runs-on: ubuntu-latest | |
outputs: | |
go-version: ${{ steps.get-go-version.outputs.version }} | |
steps: | |
- uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 | |
- name: Determine Go version | |
id: get-go-version | |
uses: ./.github/actions/go-version | |
generate-metadata-file: | |
name: "Generate release metadata" | |
runs-on: ubuntu-latest | |
needs: get-product-version | |
outputs: | |
filepath: ${{ steps.generate-metadata-file.outputs.filepath }} | |
steps: | |
- uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 | |
- name: Generate package metadata | |
id: generate-metadata-file | |
uses: hashicorp/actions-generate-metadata@fdbc8803a0e53bcbb912ddeee3808329033d6357 # v1.1.1 | |
with: | |
version: ${{ needs.get-product-version.outputs.product-version }} | |
product: ${{ env.PKG_NAME }} | |
- uses: actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808 # v4.3.3 | |
with: | |
name: metadata.json | |
path: ${{ steps.generate-metadata-file.outputs.filepath }} | |
build: | |
name: Build for ${{ matrix.goos }}_${{ matrix.goarch }} | |
needs: | |
- get-product-version | |
- get-go-version | |
uses: ./.github/workflows/build-terraform-cli.yml | |
with: | |
goarch: ${{ matrix.goarch }} | |
goos: ${{ matrix.goos }} | |
go-version: ${{ needs.get-go-version.outputs.go-version }} | |
package-name: ${{ needs.get-product-version.outputs.pkg-name }} | |
product-version: ${{ needs.get-product-version.outputs.product-version }} | |
ld-flags: ${{ needs.get-product-version.outputs.go-ldflags }} | |
cgo-enabled: ${{ matrix.cgo-enabled }} | |
runson: ${{ matrix.runson }} | |
secrets: inherit | |
strategy: | |
matrix: | |
include: | |
- {goos: "linux", goarch: "amd64", runson: "ubuntu-latest", cgo-enabled: "0"} | |
- {goos: "darwin", goarch: "arm64", runson: "ubuntu-latest", cgo-enabled: "0"} | |
fail-fast: false |