diff --git a/.github/workflows/go-version.yaml b/.github/workflows/go-version.yaml new file mode 100644 index 000000000..2bbc42309 --- /dev/null +++ b/.github/workflows/go-version.yaml @@ -0,0 +1,22 @@ +name: Go version setup + +env: + GO_VERSION: "1.19.8" + +on: + workflow_call: + outputs: + goversion: + value: ${{ jobs.version.outputs.goversion }} + +jobs: + version: + name: Set Go version variable for all the workflows + runs-on: ubuntu-latest + outputs: + goversion: ${{ steps.step1.outputs.goversion }} + steps: + - id: step1 + run: | + echo "Go Version: $GO_VERSION" + echo "goversion=$GO_VERSION" >> $GITHUB_OUTPUT diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 1b7bc750d..d9437a053 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -1,13 +1,16 @@ name: Release on: [push, pull_request] jobs: + goversion: + uses: ./.github/workflows/go-version.yaml release: runs-on: ubuntu-latest + needs: goversion steps: - uses: actions/checkout@v2 - uses: actions/setup-go@v2 with: - go-version: "1.19.8" + go-version: ${{ needs.goversion.outputs.goversion }} - name: release run: | set -euo pipefail diff --git a/.github/workflows/tests.yaml b/.github/workflows/tests.yaml index 4f1788692..38e225663 100644 --- a/.github/workflows/tests.yaml +++ b/.github/workflows/tests.yaml @@ -1,8 +1,11 @@ name: Tests on: [push, pull_request] jobs: + goversion: + uses: ./.github/workflows/go-version.yaml test: runs-on: ubuntu-latest + needs: goversion strategy: fail-fast: false matrix: @@ -21,7 +24,7 @@ jobs: - uses: actions/checkout@v2 - uses: actions/setup-go@v2 with: - go-version: "1.19.8" + go-version: ${{ needs.goversion.outputs.goversion }} - run: date - env: TARGET: ${{ matrix.target }} diff --git a/scripts/release.sh b/scripts/release.sh index 90f4f32ca..c3a2388c0 100755 --- a/scripts/release.sh +++ b/scripts/release.sh @@ -83,7 +83,7 @@ main() { # Check go version. log_callout "Checking go version" local go_version current_go_version - go_version="go$(grep go-version .github/workflows/tests.yaml | awk '{print $2}' | tr -d '"')" + go_version="go$(grep -oP '(?<=GO_VERSION:\s")[^"]*' .github/workflows/go-version.yaml | tr -d ' ')" current_go_version=$(go version | awk '{ print $3 }') if [[ "${current_go_version}" != "${go_version}" ]]; then log_error "Current go version is ${current_go_version}, but etcd ${RELEASE_VERSION} requires ${go_version} (see .github/workflows/tests.yaml)."