diff --git a/image/cache/compare.go b/image/cache/compare.go index c13b11a06d8c4ad753be1fcb9df9d28b87abc977..7633b0e9664031e29b2b21fe2d8cc228e5d31fba 100644 --- a/image/cache/compare.go +++ b/image/cache/compare.go @@ -26,6 +26,13 @@ func comparePlatform(builderPlatform, imagePlatform ocispec.Platform) bool { builderParts := strings.Split(builderPlatform.OSVersion, ".") imageParts := strings.Split(imagePlatform.OSVersion, ".") + // Major and minor must match. + for i := 0; i < 2; i++ { + if len(builderParts) > i && len(imageParts) > i && builderParts[i] != imageParts[i] { + return false + } + } + if len(builderParts) >= 3 && len(imageParts) >= 3 { // Keep only Major & Minor. builderParts[0] = imageParts[0] diff --git a/image/cache/compare_test.go b/image/cache/compare_test.go index 8d6ce735e2a6a7c082d75e01c0a68c3b7742d065..7cffbdad1bf272bd1bde6fedeca05fff20503cd1 100644 --- a/image/cache/compare_test.go +++ b/image/cache/compare_test.go @@ -193,12 +193,6 @@ func TestPlatformCompare(t *testing.T) { }, } { tc := tc - // OSVersion comparison is only performed by containerd platform - // matcher if built on Windows. - if (tc.image.OSVersion != "" || tc.builder.OSVersion != "") && runtime.GOOS != "windows" { - continue - } - t.Run(tc.name, func(t *testing.T) { assert.Check(t, is.Equal(comparePlatform(tc.builder, tc.image), tc.expected)) })