mirror of
https://github.com/kubernetes-sigs/external-dns.git
synced 2026-04-18 06:20:59 +02:00
* ci: validate Go version consistency across cloudbuild.yaml, go.mod, and go.tool.mod Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com> * ci: validate Go version consistency across cloudbuild.yaml, go.mod, and go.tool.mod Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com> * ci: validate Go version consistency across cloudbuild.yaml, go.mod, and go.tool.mod Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com> --------- Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>
53 lines
1.5 KiB
Bash
Executable File
53 lines
1.5 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Compares Go major.minor version in cloudbuild.yaml against go.mod and go.tool.mod
|
|
|
|
set -euo pipefail
|
|
|
|
if ! command -v yq &>/dev/null; then
|
|
echo "ERROR: yq is not installed" >&2
|
|
exit 1
|
|
fi
|
|
|
|
REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
|
|
|
extract_major_minor() {
|
|
[[ $1 =~ ([0-9]+\.[0-9]+) ]] && echo "${BASH_REMATCH[1]}"
|
|
}
|
|
|
|
image_name=$(yq '.steps[].name | select(. == "docker.io/library/golang*")' "$REPO_ROOT/cloudbuild.yaml" | head -1)
|
|
if [[ -z "$image_name" ]]; then
|
|
echo "ERROR: Go version not found in cloudbuild.yaml" >&2
|
|
exit 1
|
|
fi
|
|
|
|
cloudbuild_ver=$(extract_major_minor "${image_name##*:}")
|
|
gomod_ver=$(extract_major_minor "$(awk '/^go [0-9]/{print $2; exit}' "$REPO_ROOT/go.mod")")
|
|
gotoolmod_ver=$(extract_major_minor "$(awk '/^go [0-9]/{print $2; exit}' "$REPO_ROOT/go.tool.mod")")
|
|
|
|
echo "cloudbuild.yaml : $cloudbuild_ver"
|
|
echo "go.mod : $gomod_ver"
|
|
echo "go.tool.mod : $gotoolmod_ver"
|
|
|
|
ok=true
|
|
|
|
if [[ "$cloudbuild_ver" != "$gomod_ver" ]]; then
|
|
echo "Go version in cloudbuild.yaml ($cloudbuild_ver) doesn't match go.mod ($gomod_ver)"
|
|
ok=false
|
|
fi
|
|
|
|
if [[ "$cloudbuild_ver" != "$gotoolmod_ver" ]]; then
|
|
echo "Go version in cloudbuild.yaml ($cloudbuild_ver) doesn't match go.tool.mod ($gotoolmod_ver)"
|
|
ok=false
|
|
fi
|
|
|
|
if [[ "$gomod_ver" != "$gotoolmod_ver" ]]; then
|
|
echo "Go version in go.mod ($gomod_ver) doesn't match go.tool.mod ($gotoolmod_ver)"
|
|
ok=false
|
|
fi
|
|
|
|
if $ok; then
|
|
echo "OK: all versions match ($cloudbuild_ver)"
|
|
else
|
|
exit 1
|
|
fi
|