mirror of
https://github.com/opentofu/opentofu.git
synced 2025-02-25 18:45:20 -06:00
goenv was making things more complicated than needed since it's really designed to help with interactive use in a shell more than automated use like this. Instead, we'll follow the same strategy that our build.yml was doing of just reading the .go-version file directly and then using the official actions/setup-go action to do the actual installation. The key advantage here is that Go ends up installed in a way where just running "go" will do the right thing, and we no longer need to fuss with shims and version-based path prefixes. Rather than duplicating the logic from build.yml, instead it's factored out into a separate composite action which both build.yml and checks.yml will now share, in case we want to change the Go version selection methodology in the future.
24 lines
974 B
YAML
24 lines
974 B
YAML
name: 'Determine Go Toolchain Version'
|
|
description: 'Uses the .go-version file to determine which Go toolchain to use for any Go-related actions downstream.'
|
|
outputs:
|
|
version:
|
|
description: "Go toolchain version"
|
|
value: ${{ steps.go.outputs.version }}
|
|
runs:
|
|
using: "composite"
|
|
steps:
|
|
# We use goenv to make sure we're always using the same Go version we'd
|
|
# use for releases, as recorded in the .go-version file.
|
|
- name: "Determine Go version"
|
|
id: go
|
|
shell: bash
|
|
# We use .go-version as our source of truth for current Go
|
|
# version, because "goenv" can react to it automatically.
|
|
# However, we don't actually use goenv for our automated
|
|
# steps in GitHub Actions, because it's primarily for
|
|
# interactive use in shells and makes things unnecessarily
|
|
# complex for automation.
|
|
run: |
|
|
echo "Building with Go $(cat .go-version)"
|
|
echo "::set-output name=version::$(cat .go-version)"
|