11#! /usr/bin/env bash
22
3- # Copyright 2026 The kpt Authors
3+ # Copyright 2025- 2026 The kpt Authors
44#
55# Licensed under the Apache License, Version 2.0 (the "License");
66# you may not use this file except in compliance with the License.
@@ -18,6 +18,15 @@ set -e
1818
1919# Script to check version consistency between source files and docs/config.toml
2020# Ensures public docs align with the code being built and tested.
21+ #
22+ # Usage:
23+ # scripts/check-versions.sh - Check only, fail on mismatches
24+ # scripts/check-versions.sh --fix - Check and auto-fix critical mismatches (Go, kpt)
25+
26+ FIX_MODE=" "
27+ if [ " $1 " = " --fix" ]; then
28+ FIX_MODE=" true"
29+ fi
2130
2231REPO_ROOT=" $( cd " $( dirname " ${BASH_SOURCE[0]} " ) /.." && pwd) "
2332cd " $REPO_ROOT "
@@ -36,6 +45,9 @@ echo "kpt version (go.mod): $kpt_version"
3645kind_version=$( awk ' /helm\/kind-action@v1/,/version:/ {if (/version:/) print $2}' .github/workflows/porch-e2e-ci-jobs.yaml | head -1)
3746echo " kind version (.github/workflows): $kind_version "
3847
48+ kube_node_image=$( grep " kindest/node:" deployments/local/kind_porch_test_cluster.yaml | grep -oP ' v\d+\.\d+\.\d+' | head -1)
49+ echo " Kubernetes node image (local dev): $kube_node_image "
50+
3951echo " "
4052echo " === Versions in docs/config.toml ==="
4153
@@ -51,48 +63,115 @@ echo "kind version (config): $config_kind"
5163config_kube=$( grep ' ^version_kube = ' docs/config.toml | cut -d' "' -f2)
5264echo " Kubernetes version (config): $config_kube "
5365
66+ config_git=$( grep ' ^version_git = ' docs/config.toml | cut -d' "' -f2)
67+ config_docker=$( grep ' ^version_docker = ' docs/config.toml | cut -d' "' -f2)
68+
5469echo " "
5570echo " === Consistency Check ==="
5671
5772errors=0
73+ warnings=0
74+ declare -a fixes_needed
5875
5976# Go version check (CRITICAL - we control this in go.mod)
6077if [ " $go_version " != " $config_go " ]; then
6178 echo " FAIL: Go version mismatch - source: $go_version , config: $config_go "
6279 errors=$(( errors + 1 ))
80+ if [ " $FIX_MODE " = " true" ]; then
81+ fixes_needed+=(" version_go|$go_version " )
82+ fi
6383else
6484 echo " ✓ Go version matches: $go_version "
6585fi
6686
6787# kpt version check (CRITICAL - core dependency in go.mod)
68- if [ " $kpt_version " != " v $config_kpt " ]; then
69- echo " FAIL: kpt version mismatch - source: $kpt_version , config: v $config_kpt "
88+ if [ " $kpt_version " != " $config_kpt " ]; then
89+ echo " FAIL: kpt version mismatch - source: $kpt_version , config: $config_kpt "
7090 errors=$(( errors + 1 ))
91+ if [ " $FIX_MODE " = " true" ]; then
92+ fixes_needed+=(" version_kpt|$kpt_version " )
93+ fi
7194else
7295 echo " ✓ kpt version matches: $kpt_version "
7396fi
7497
7598# kind version check (WARNING - test environment, controls k8s version)
76- if [ " $kind_version " != " v $config_kind " ]; then
77- echo " WARN: kind version mismatch - source: $kind_version , config: v $config_kind "
99+ if [ " $kind_version " != " $config_kind " ]; then
100+ echo " WARN: kind version mismatch - source: $kind_version , config: $config_kind "
78101 echo " Consider updating docs/config.toml to match the test environment"
102+ warnings=$(( warnings + 1 ))
103+ if [ " $FIX_MODE " = " true" ]; then
104+ fixes_needed+=(" version_kind|$kind_version " )
105+ fi
79106else
80107 echo " ✓ kind version matches: $kind_version "
81108fi
82109
83- echo " ℹ Kubernetes version (from config): v$config_kube (derived from kind)"
110+ # Kubernetes version check (compare dev config with config.toml)
111+ if [ " $kube_node_image " != " $config_kube " ]; then
112+ echo " WARN: Kubernetes version mismatch - dev config: $kube_node_image , docs config: $config_kube "
113+ warnings=$(( warnings + 1 ))
114+ if [ " $FIX_MODE " = " true" ]; then
115+ fixes_needed+=(" version_kube|$kube_node_image " )
116+ fi
117+ else
118+ echo " ✓ Kubernetes version matches: $kube_node_image "
119+ fi
120+
121+ echo " (info) Kubernetes version (from config): $config_kube (derived from kind)"
122+
123+ # Only check runner versions if in CI
124+ if [ -n " $GITHUB_ACTIONS " ]; then
125+ echo " "
126+ echo " === Runner Environment Checks (CI only) ==="
127+
128+ git_version=$( git --version | awk ' {print $3}' )
129+ echo " Git version (runner): $git_version "
130+
131+ docker_version=$( docker --version | grep -oP ' version \K[0-9.]+' )
132+ echo " Docker version (runner): $docker_version "
133+
134+ # Compare with config
135+ if [ " $git_version " != " $config_git " ]; then
136+ echo " (info) Git mismatch: runner has $git_version , config has $config_git "
137+ else
138+ echo " ✓ Git matches config: $git_version "
139+ fi
140+
141+ if [ " $docker_version " != " $config_docker " ]; then
142+ echo " (info) Docker mismatch: runner has $docker_version , config has $config_docker "
143+ else
144+ echo " ✓ Docker matches config: $docker_version "
145+ fi
146+ fi
147+
148+ echo " "
149+
150+ # Handle auto-fix if requested
151+ if [ " $FIX_MODE " != " " ] && [ ${# fixes_needed[@]} -gt 0 ]; then
152+ echo " === Auto-Fixing Versions ==="
153+ for fix in " ${fixes_needed[@]} " ; do
154+ key=" ${fix% |* } "
155+ value=" ${fix#* |} "
156+ echo " Updating $key = \" $value \" "
157+ sed -i " s/^$key = \" [^\" ]*\" /$key = \" $value \" /" docs/config.toml
158+ done
159+ echo " ✓ Updated docs/config.toml"
160+ echo " "
161+ echo " Please review the changes and commit them:"
162+ echo " git diff docs/config.toml"
163+ echo " git add docs/config.toml"
164+ echo " git commit -s -m 'chore: update version pinning in docs'"
165+ exit 0
166+ fi
84167
85168echo " "
86169if [ " $errors " -gt 0 ]; then
87170 echo " FAILED: $errors critical version mismatch(es) detected."
88171 echo " "
89- echo " To fix, update docs/config.toml:"
90- if [ " $go_version " != " $config_go " ]; then
91- echo " version_go = \" $go_version \" "
92- fi
93- if [ " $kpt_version " != " v$config_kpt " ]; then
94- echo " version_kpt = \" ${kpt_version# v} \" "
95- fi
172+ echo " To auto-fix critical mismatches, run:"
173+ echo " scripts/check-versions.sh --fix"
174+ echo " or: make check-versions-fix"
96175 exit 1
97176fi
98177
0 commit comments