diff --git a/.github/updatecli.d/bump-go-microsoft-version.sh b/.github/updatecli.d/bump-go-microsoft-version.sh deleted file mode 100755 index bf2f0a01..00000000 --- a/.github/updatecli.d/bump-go-microsoft-version.sh +++ /dev/null @@ -1,38 +0,0 @@ -#!/usr/bin/env bash -# -# Given the Golang microsoft version this script will bump the version. -# -# This script is executed by the automation we are putting in place -# -# Parameters: -# $1 -> the Golang release version to be bumped. Mandatory. -# -set -euo pipefail -MSG="parameter missing." -GO_RELEASE_VERSION=${1:?$MSG} -OS=$(uname -s| tr '[:upper:]' '[:lower:]') -if [ "${OS}" == "darwin" ] ; then - SED="sed -i .bck" -else - SED="sed -i" -fi - -MAJOR_MINOR_PATCH_VERSION=$(echo "$GO_RELEASE_VERSION" | sed -E -e "s#([0-9]+\.[0-9]+\.[0-9]+).*#\1#g") -SECURITY_VERSION=$(echo "$GO_RELEASE_VERSION" | sed -E -e "s#([0-9]+\.[0-9]+\.[0-9]+)(.+)#\2#g") - -# Gather microsoft/go sha256 values -MSFT_DOWNLOAD_METADATA=$(curl -s -L https://aka.ms/golang/release/latest/go${MAJOR_MINOR_PATCH_VERSION}.assets.json) -MSFT_DOWNLOAD_SHA256_ARM=$(echo $MSFT_DOWNLOAD_METADATA | jq -r ".arches[] | select( .env.GOOS == \"linux\") | select( .env.GOARCH == \"arm64\") | .sha256") -MSFT_DOWNLOAD_SHA256_AMD=$(echo $MSFT_DOWNLOAD_METADATA | jq -r ".arches[] | select( .env.GOOS == \"linux\") | select( .env.GOARCH == \"amd64\") | .sha256") - -echo "Update go version ${GO_RELEASE_VERSION}" - -find "go" -type f -name Dockerfile.tmpl -print0 | - while IFS= read -r -d '' line; do - ${SED} -E -e "s#(ARG SECURITY_VERSION)=.*#\1=${SECURITY_VERSION}#g" "$line" - if echo "$line" | grep -q 'arm' ; then - ${SED} -E -e "s#(ARG MSFT_DOWNLOAD_SHA256)=.+#\1=${MSFT_DOWNLOAD_SHA256_ARM}#g" "$line" - else - ${SED} -E -e "s#(ARG MSFT_DOWNLOAD_SHA256)=.+#\1=${MSFT_DOWNLOAD_SHA256_AMD}#g" "$line" - fi - done diff --git a/.github/updatecli.d/bump-go-release-version.sh b/.github/updatecli.d/bump-go-version.sh similarity index 60% rename from .github/updatecli.d/bump-go-release-version.sh rename to .github/updatecli.d/bump-go-version.sh index 3ba89563..8e6b0847 100755 --- a/.github/updatecli.d/bump-go-release-version.sh +++ b/.github/updatecli.d/bump-go-version.sh @@ -1,13 +1,15 @@ #!/usr/bin/env bash # -# Given the Golang release version this script will bump the version. +# Given the Microsoft Golang release version this script will bump the version. # # This script is executed by the automation we are putting in place # -# NOTE: sha256 is retrieved from https://pkg.go.dev/golang.org/x/website/internal/dl?utm_source=godoc +# NOTE: +# * sha256 is retrieved from https://pkg.go.dev/golang.org/x/website/internal/dl?utm_source=godoc +# * sha256 is retrieved from https://aka.ms/golang/release/latest/go${MAJOR_MINOR_PATCH_VERSION}.assets.json # # Parameters: -# $1 -> the Golang release version to be bumped. Mandatory. +# $1 -> the Microsoft Golang release version to be bumped. Mandatory. # set -euo pipefail MSG="parameter missing." @@ -19,34 +21,30 @@ else SED="sed -i" fi -MAJOR_MINOR_VERSION=$(echo "$GO_RELEASE_VERSION" | sed -E -e "s#([0-9]+\.[0-9]+).*#\1#g") +# Process the GO_RELEASE_VERSION to extract major, minor, patch and security versions +MAJOR_MINOR_PATCH_VERSION=${GO_RELEASE_VERSION%-*} +SECURITY_VERSION="-${GO_RELEASE_VERSION##*-}" + +# Gather golang/go sha256 values GOLANG_DOWNLOAD_SHA256_ARM=$(curl -s -L https://golang.org/dl/\?mode\=json | jq -r ".[] | select( .version | contains(\"go${GO_RELEASE_VERSION}\")) | .files[] | select (.filename | contains(\"go${GO_RELEASE_VERSION}.linux-arm64.tar.gz\")) | .sha256") GOLANG_DOWNLOAD_SHA256_AMD=$(curl -s -L https://golang.org/dl/\?mode\=json | jq -r ".[] | select( .version | contains(\"go${GO_RELEASE_VERSION}\")) | .files[] | select (.filename | contains(\"go${GO_RELEASE_VERSION}.linux-amd64.tar.gz\")) | .sha256") # Gather microsoft/go sha256 values -URL=https://aka.ms/golang/release/latest/go${GO_RELEASE_VERSION}.assets.json -if curl -s -L "$URL" > /dev/null ; then - MSFT_DOWNLOAD_METADATA=$(curl -s -L "$URL") - MSFT_DOWNLOAD_SHA256_ARM=$(echo $MSFT_DOWNLOAD_METADATA | jq -r ".arches[] | select( .env.GOOS == \"linux\") | select( .env.GOARCH == \"arm64\") | .sha256") - MSFT_DOWNLOAD_SHA256_AMD=$(echo $MSFT_DOWNLOAD_METADATA | jq -r ".arches[] | select( .env.GOOS == \"linux\") | select( .env.GOARCH == \"amd64\") | .sha256") - # when a new minor then we use `-1` - # then nex security versions will be `-2`, `-3`, etc, see bump-microsoft.yml - SECURITY_VERSION=-1 -fi +MSFT_DOWNLOAD_METADATA=$(curl -s -L https://aka.ms/golang/release/latest/go${MAJOR_MINOR_PATCH_VERSION}.assets.json) +MSFT_DOWNLOAD_SHA256_ARM=$(echo $MSFT_DOWNLOAD_METADATA | jq -r ".arches[] | select( .env.GOOS == \"linux\") | select( .env.GOARCH == \"arm64\") | .sha256") +MSFT_DOWNLOAD_SHA256_AMD=$(echo $MSFT_DOWNLOAD_METADATA | jq -r ".arches[] | select( .env.GOOS == \"linux\") | select( .env.GOARCH == \"amd64\") | .sha256") ## As long as https://golang.org/dl/?mode=json supports only 2 major versions ## and there is a new major release, then it's required to parse https://golang.org/dl ## see https://github.com/elastic/golang-crossbuild/pull/389/commits/d0af04f97a2381630ea5e8da5a99f50cf27856a0 if [ -z "$GOLANG_DOWNLOAD_SHA256_ARM" ] ; then - GOLANG_DOWNLOAD_SHA256_ARM=$(curl -s -L https://golang.org/dl | grep go${GO_RELEASE_VERSION}.linux-arm64.tar.gz -A 5 | grep "" | sed 's#.*##g' | sed 's#" | sed 's#.*##g' | sed 's#" | sed 's#.*##g' | sed 's#" | sed 's#.*##g' | sed 's#