From 5793aa8feddff2253944189c1dc60c8a0424f637 Mon Sep 17 00:00:00 2001 From: Arshdeep <110114582+Arshdeep54@users.noreply.github.com> Date: Mon, 21 Jul 2025 12:20:42 +0530 Subject: [PATCH 1/3] fix: update go-upgrade tool to check patch number (#18252) (#18402) Signed-off-by: Arshdeep54 Signed-off-by: Mohamed Hamza --- go/tools/go-upgrade/go-upgrade.go | 26 +++++--------------------- 1 file changed, 5 insertions(+), 21 deletions(-) diff --git a/go/tools/go-upgrade/go-upgrade.go b/go/tools/go-upgrade/go-upgrade.go index fed0632691b..82f89d6bff8 100644 --- a/go/tools/go-upgrade/go-upgrade.go +++ b/go/tools/go-upgrade/go-upgrade.go @@ -338,7 +338,7 @@ func getLatestStableGolangReleases() (version.Collection, error) { func chooseNewVersion(curVersion *version.Version, latestVersions version.Collection, allowMajorUpgrade bool) *version.Version { selectedVersion := curVersion for _, latestVersion := range latestVersions { - if !allowMajorUpgrade && !isSameMajorMinorVersion(latestVersion, selectedVersion) { + if !allowMajorUpgrade && !isSameVersion(latestVersion, selectedVersion) { continue } if latestVersion.GreaterThan(selectedVersion) { @@ -385,28 +385,12 @@ func replaceGoVersionInCodebase(old, new *version.Version) error { } } - dockerDigest, err := resolveGolangImageDigest(new) - if err != nil { - return err - } - - for _, fileToChange := range filesToChange { - err = replaceInFile( - []*regexp.Regexp{regexp.MustCompile(regexpReplaceGolangDockerImage)}, - []string{fmt.Sprintf("${1}%s@%s", golangDockerTag(new), dockerDigest)}, - fileToChange, - ) - if err != nil { - return err - } - } - - if !isSameMajorMinorVersion(old, new) { + if !isSameVersion(old, new) { goModFiles := []string{"./go.mod"} for _, file := range goModFiles { err = replaceInFile( []*regexp.Regexp{regexp.MustCompile(regexpReplaceGoModGoVersion)}, - []string{fmt.Sprintf("go %d.%d", new.Segments()[0], new.Segments()[1])}, + []string{fmt.Sprintf("go %d.%d.%d", new.Segments()[0], new.Segments()[1], new.Segments()[2])}, file, ) if err != nil { @@ -502,8 +486,8 @@ func updateBootstrapChangelog(new string, goVersion *version.Version) error { return nil } -func isSameMajorMinorVersion(a, b *version.Version) bool { - return a.Segments()[0] == b.Segments()[0] && a.Segments()[1] == b.Segments()[1] +func isSameVersion(a, b *version.Version) bool { + return a.Segments()[0] == b.Segments()[0] && a.Segments()[1] == b.Segments()[1] && a.Segments()[2] == b.Segments()[2] } func getListOfFilesInPaths(pathsToExplore []string) ([]string, error) { From eca53f29f39f77be9d1e676bfd0a297336e04c2e Mon Sep 17 00:00:00 2001 From: Mohamed Hamza Date: Tue, 20 Jan 2026 19:28:22 -0500 Subject: [PATCH 2/3] Update go-upgrade to update docker image digests (#19178) Signed-off-by: Mohamed Hamza --- go/tools/go-upgrade/go-upgrade.go | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/go/tools/go-upgrade/go-upgrade.go b/go/tools/go-upgrade/go-upgrade.go index 82f89d6bff8..1ca374d6d18 100644 --- a/go/tools/go-upgrade/go-upgrade.go +++ b/go/tools/go-upgrade/go-upgrade.go @@ -385,6 +385,22 @@ func replaceGoVersionInCodebase(old, new *version.Version) error { } } + dockerDigest, err := resolveGolangImageDigest(new) + if err != nil { + return err + } + + for _, fileToChange := range filesToChange { + err = replaceInFile( + []*regexp.Regexp{regexp.MustCompile(regexpReplaceGolangDockerImage)}, + []string{fmt.Sprintf("${1}%s@%s", golangDockerTag(new), dockerDigest)}, + fileToChange, + ) + if err != nil { + return err + } + } + if !isSameVersion(old, new) { goModFiles := []string{"./go.mod"} for _, file := range goModFiles { From c5361c7fc60b71ccec0c929fd1ce709e1bd77a13 Mon Sep 17 00:00:00 2001 From: Mohamed Hamza Date: Sat, 24 Jan 2026 11:18:08 -0500 Subject: [PATCH 3/3] Fix minor upgrade logic in go upgrade tool (#19176) Signed-off-by: Mohamed Hamza --- .github/workflows/update_golang_version.yml | 2 +- go/tools/go-upgrade/go-upgrade.go | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/.github/workflows/update_golang_version.yml b/.github/workflows/update_golang_version.yml index a1d2bdbcc97..f1f7bcbde8d 100644 --- a/.github/workflows/update_golang_version.yml +++ b/.github/workflows/update_golang_version.yml @@ -56,7 +56,7 @@ jobs: echo "bootstrap-version=${bootstrap_version}" >> $GITHUB_OUTPUT # Check if the PR already exists, if it does then do not create new PR. - gh pr list -S "is:open [${{ matrix.branch }}] Upgrade the Golang version to go${go_version}" > out.txt 2>&1 | true + gh pr list -S 'is:open "[${{ matrix.branch }}] Upgrade the Golang version to go${go_version}"' > out.txt 2>&1 | true if [ -s out.txt ]; then rm -f out.txt exit 0 diff --git a/go/tools/go-upgrade/go-upgrade.go b/go/tools/go-upgrade/go-upgrade.go index 1ca374d6d18..b1376e5e2be 100644 --- a/go/tools/go-upgrade/go-upgrade.go +++ b/go/tools/go-upgrade/go-upgrade.go @@ -338,7 +338,7 @@ func getLatestStableGolangReleases() (version.Collection, error) { func chooseNewVersion(curVersion *version.Version, latestVersions version.Collection, allowMajorUpgrade bool) *version.Version { selectedVersion := curVersion for _, latestVersion := range latestVersions { - if !allowMajorUpgrade && !isSameVersion(latestVersion, selectedVersion) { + if !allowMajorUpgrade && !isSameMajorMinorVersion(latestVersion, selectedVersion) { continue } if latestVersion.GreaterThan(selectedVersion) { @@ -506,6 +506,10 @@ func isSameVersion(a, b *version.Version) bool { return a.Segments()[0] == b.Segments()[0] && a.Segments()[1] == b.Segments()[1] && a.Segments()[2] == b.Segments()[2] } +func isSameMajorMinorVersion(a, b *version.Version) bool { + return a.Segments()[0] == b.Segments()[0] && a.Segments()[1] == b.Segments()[1] +} + func getListOfFilesInPaths(pathsToExplore []string) ([]string, error) { var filesToChange []string for _, pathToExplore := range pathsToExplore {