From 857b607998eec25272f8a6de06d0309ab0048ff7 Mon Sep 17 00:00:00 2001 From: Justin Anderson Date: Thu, 3 Oct 2024 14:08:35 -0700 Subject: [PATCH 1/9] Remove arch-specific tags from .NET Monitor 9 --- README.monitor.md | 4 +-- .../monitor-tags.yml | 4 +-- manifest.json | 10 ++---- .../StaticTagTests.cs | 36 +++++++++++-------- 4 files changed, 28 insertions(+), 26 deletions(-) diff --git a/README.monitor.md b/README.monitor.md index 21b3b66966..b53662a67e 100644 --- a/README.monitor.md +++ b/README.monitor.md @@ -62,7 +62,7 @@ See the [documentation](https://go.microsoft.com/fwlink/?linkid=2158052) for how Tags | Dockerfile | OS Version -----------| -------------| ------------- -9.0.0-rc.2-amd64, 9.0-amd64, 9.0.0-rc.2, 9.0, 9, latest | [Dockerfile](src/monitor/9.0/azurelinux-distroless/amd64/Dockerfile) | Azure Linux 3.0 +9.0.0-rc.2, 9.0, 9, latest | [Dockerfile](src/monitor/9.0/azurelinux-distroless/amd64/Dockerfile) | Azure Linux 3.0 8.0.4-ubuntu-chiseled-amd64, 8.0-ubuntu-chiseled-amd64, 8.0.4-ubuntu-chiseled, 8.0-ubuntu-chiseled, 8.0.4, 8.0 | [Dockerfile](src/monitor/8.0/ubuntu-chiseled/amd64/Dockerfile) | Ubuntu 22.04 8.0.4-cbl-mariner-distroless-amd64, 8.0-cbl-mariner-distroless-amd64, 8.0.4-cbl-mariner-distroless, 8.0-cbl-mariner-distroless | [Dockerfile](src/monitor/8.0/cbl-mariner-distroless/amd64/Dockerfile) | CBL-Mariner 2.0 6.3.8-alpine-amd64, 6.3-alpine-amd64, 6-alpine-amd64, 6.3.8-alpine, 6.3-alpine, 6-alpine, 6.3.8, 6.3, 6 | [Dockerfile](src/monitor/6.3/alpine/amd64/Dockerfile) | Alpine 3.20 @@ -81,7 +81,7 @@ Tags | Dockerfile | OS Version Tags | Dockerfile | OS Version -----------| -------------| ------------- -9.0.0-rc.2-arm64v8, 9.0-arm64v8, 9.0.0-rc.2, 9.0, 9, latest | [Dockerfile](src/monitor/9.0/azurelinux-distroless/arm64v8/Dockerfile) | Azure Linux 3.0 +9.0.0-rc.2, 9.0, 9, latest | [Dockerfile](src/monitor/9.0/azurelinux-distroless/arm64v8/Dockerfile) | Azure Linux 3.0 8.0.4-ubuntu-chiseled-arm64v8, 8.0-ubuntu-chiseled-arm64v8, 8.0.4-ubuntu-chiseled, 8.0-ubuntu-chiseled, 8.0.4, 8.0 | [Dockerfile](src/monitor/8.0/ubuntu-chiseled/arm64v8/Dockerfile) | Ubuntu 22.04 8.0.4-cbl-mariner-distroless-arm64v8, 8.0-cbl-mariner-distroless-arm64v8, 8.0.4-cbl-mariner-distroless, 8.0-cbl-mariner-distroless | [Dockerfile](src/monitor/8.0/cbl-mariner-distroless/arm64v8/Dockerfile) | CBL-Mariner 2.0 6.3.8-alpine-arm64v8, 6.3-alpine-arm64v8, 6-alpine-arm64v8, 6.3.8-alpine, 6.3-alpine, 6-alpine, 6.3.8, 6.3, 6 | [Dockerfile](src/monitor/6.3/alpine/arm64v8/Dockerfile) | Alpine 3.20 diff --git a/eng/mcr-tags-metadata-templates/monitor-tags.yml b/eng/mcr-tags-metadata-templates/monitor-tags.yml index efa226c246..d06516a5d0 100644 --- a/eng/mcr-tags-metadata-templates/monitor-tags.yml +++ b/eng/mcr-tags-metadata-templates/monitor-tags.yml @@ -1,6 +1,6 @@ $(McrTagsYmlRepo:monitor) -$(McrTagsYmlTagGroup:9.0-amd64) -$(McrTagsYmlTagGroup:9.0-arm64v8) +$(McrTagsYmlTagGroup:9.0) +$(McrTagsYmlTagGroup:9) $(McrTagsYmlTagGroup:8.1-preview-ubuntu-chiseled-amd64) customSubTableTitle: .NET Monitor Preview Tags $(McrTagsYmlTagGroup:8.1-preview-ubuntu-chiseled-arm64v8) diff --git a/manifest.json b/manifest.json index 663de9f1a2..8735ad5002 100644 --- a/manifest.json +++ b/manifest.json @@ -9418,10 +9418,7 @@ "dockerfileTemplate": "eng/dockerfile-templates/monitor/Dockerfile.linux.extensions", "os": "linux", "osVersion": "azurelinux3.0-distroless", - "tags": { - "$(monitor|9.0|fixed-tag)-amd64": {}, - "$(monitor|9.0|minor-tag)-amd64": {} - } + "tags": {} }, { "architecture": "arm64", @@ -9432,10 +9429,7 @@ "dockerfileTemplate": "eng/dockerfile-templates/monitor/Dockerfile.linux.extensions", "os": "linux", "osVersion": "azurelinux3.0-distroless", - "tags": { - "$(monitor|9.0|fixed-tag)-arm64v8": {}, - "$(monitor|9.0|minor-tag)-arm64v8": {} - }, + "tags": {}, "variant": "v8" } ] diff --git a/tests/Microsoft.DotNet.Docker.Tests/StaticTagTests.cs b/tests/Microsoft.DotNet.Docker.Tests/StaticTagTests.cs index d6a6afb007..2f1b425cb1 100644 --- a/tests/Microsoft.DotNet.Docker.Tests/StaticTagTests.cs +++ b/tests/Microsoft.DotNet.Docker.Tests/StaticTagTests.cs @@ -274,7 +274,7 @@ private static IEnumerable GetTagTestObjects(TestType testType) if (ApplianceRepos.Any(repo.Name.Contains)) { // Only appliance repos have major version tags - // Only appliance repos have floating distro tags () + // Only appliance repos have floating distro tags () testObjects.AddRange(new[] { GetTagTestInput( @@ -283,7 +283,7 @@ private static IEnumerable GetTagTestObjects(TestType testType) VersionType.MajorMinorPatch, checkOs: true, checkArchitecture: true, - skipDockerfileOn: IsApplianceVersionUsingNewSchema + skipDockerfileOn: info => IsApplianceVersionWithoutDistroTags(info) || IsApplianceVersionWithoutArchTags(info) ), // -- GetTagTestInput( @@ -292,7 +292,7 @@ private static IEnumerable GetTagTestObjects(TestType testType) VersionType.MajorMinorPatch, checkOs: true, checkArchitecture: false, - skipDockerfileOn: IsApplianceVersionUsingNewSchema + skipDockerfileOn: IsApplianceVersionWithoutDistroTags ), // - GetTagTestInput( @@ -301,7 +301,7 @@ private static IEnumerable GetTagTestObjects(TestType testType) VersionType.MajorMinorPatch, checkOs: false, checkArchitecture: true, - skipDockerfileOn: IsApplianceVersionUsingOldSchema + skipDockerfileOn: info => IsApplianceVersionWithDistroTags(info) || IsApplianceVersionWithoutArchTags(info) ), // - GetTagTestInput( @@ -310,7 +310,7 @@ private static IEnumerable GetTagTestObjects(TestType testType) VersionType.MajorMinor, checkOs: true, checkArchitecture: true, - skipDockerfileOn: IsApplianceVersionUsingNewSchema + skipDockerfileOn: info => IsApplianceVersionWithoutDistroTags(info) || IsApplianceVersionWithoutArchTags(info) ), // -- GetTagTestInput( @@ -319,7 +319,7 @@ private static IEnumerable GetTagTestObjects(TestType testType) VersionType.MajorMinor, checkOs: true, checkArchitecture: false, - skipDockerfileOn: IsApplianceVersionUsingNewSchema + skipDockerfileOn: IsApplianceVersionWithoutDistroTags ), // - GetTagTestInput( @@ -328,7 +328,7 @@ private static IEnumerable GetTagTestObjects(TestType testType) VersionType.MajorMinor, checkOs: false, checkArchitecture: true, - skipDockerfileOn: IsApplianceVersionUsingOldSchema + skipDockerfileOn: info => IsApplianceVersionWithDistroTags(info) || IsApplianceVersionWithoutArchTags(info) ), // - GetTagTestInput( @@ -337,7 +337,7 @@ private static IEnumerable GetTagTestObjects(TestType testType) VersionType.Major, checkOs: true, checkArchitecture: true, - skipDockerfileOn: IsApplianceVersionUsingNewSchema + skipDockerfileOn: info => IsApplianceVersionWithoutDistroTags(info) || IsApplianceVersionWithoutArchTags(info) ), // -- GetTagTestInput( @@ -346,7 +346,7 @@ private static IEnumerable GetTagTestObjects(TestType testType) VersionType.Major, checkOs: true, checkArchitecture: false, - skipDockerfileOn: IsApplianceVersionUsingNewSchema + skipDockerfileOn: IsApplianceVersionWithoutDistroTags ) // - }); @@ -359,7 +359,7 @@ private static IEnumerable GetTagTestObjects(TestType testType) VersionType.Major, checkOs: false, checkArchitecture: true, - skipDockerfileOn: IsApplianceVersionUsingOldSchema + skipDockerfileOn: IsApplianceVersionWithDistroTags )); // - } } @@ -533,16 +533,24 @@ private static object[] GetTagTestInput( private static bool IsWindows(ManifestHelper.DockerfileInfo dockerfileInfo) => dockerfileInfo.Os.Contains("windowsservercore") || dockerfileInfo.Os.Contains("nanoserver"); + // All appliance-style images do not have arch-specific tags starting with version 9 + private static bool IsApplianceVersionWithArchTags(ManifestHelper.DockerfileInfo dockerfileInfo) => + (dockerfileInfo.Repo.Contains("monitor") && GetVersion(dockerfileInfo.MajorMinor).Major <= 8) || + (dockerfileInfo.Repo.Contains("aspire") && GetVersion(dockerfileInfo.MajorMinor).Major <= 8); + + private static bool IsApplianceVersionWithoutArchTags(ManifestHelper.DockerfileInfo dockerfileInfo) => + !IsApplianceVersionWithArchTags(dockerfileInfo); + // Certain versions of appliance repos use a new tag schema. // This new schema excludes the OS from all tags. // The aspire-dashboard repo uses this schema for all versions. // The monitor and monitor-base repos use this schema for versions 9 and above. - private static bool IsApplianceVersionUsingOldSchema(ManifestHelper.DockerfileInfo dockerfileInfo) => + private static bool IsApplianceVersionWithDistroTags(ManifestHelper.DockerfileInfo dockerfileInfo) => dockerfileInfo.Repo.Contains("monitor") && GetVersion(dockerfileInfo.MajorMinor).Major <= 8; - // - private static bool IsApplianceVersionUsingNewSchema(ManifestHelper.DockerfileInfo dockerfileInfo) => - !IsApplianceVersionUsingOldSchema(dockerfileInfo); + // + private static bool IsApplianceVersionWithoutDistroTags(ManifestHelper.DockerfileInfo dockerfileInfo) => + !IsApplianceVersionWithDistroTags(dockerfileInfo); private static bool IsDotNet6(ManifestHelper.DockerfileInfo dockerfileInfo) => dockerfileInfo.MajorMinor.StartsWith("6"); From fafd58e3b4f31f98a490b5ed31698722ea713b31 Mon Sep 17 00:00:00 2001 From: Justin Anderson Date: Thu, 3 Oct 2024 14:23:48 -0700 Subject: [PATCH 2/9] Remove arch-specific tags from size baseline --- tests/performance/ImageSize.nightly.linux.json | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/tests/performance/ImageSize.nightly.linux.json b/tests/performance/ImageSize.nightly.linux.json index 9c8a65c632..a47b1cce15 100644 --- a/tests/performance/ImageSize.nightly.linux.json +++ b/tests/performance/ImageSize.nightly.linux.json @@ -379,9 +379,7 @@ "src/monitor/8.1/ubuntu-chiseled/amd64": 127821834, "src/monitor/8.1/ubuntu-chiseled/arm64v8": 134958622, "src/monitor/8.1/cbl-mariner-distroless/amd64": 141200979, - "src/monitor/8.1/cbl-mariner-distroless/arm64v8": 148117492, - "src/monitor/9.0/azurelinux-distroless/amd64": 143287803, - "src/monitor/9.0/azurelinux-distroless/arm64v8": 149490964 + "src/monitor/8.1/cbl-mariner-distroless/arm64v8": 148117492 }, "dotnet/nightly/monitor/base": { "src/monitor-base/8.0/ubuntu-chiseled/amd64": 119965752, From 2dbd12f01f673fc82de6a4bf748de4194b381499 Mon Sep 17 00:00:00 2001 From: Justin Anderson Date: Fri, 4 Oct 2024 09:15:58 -0700 Subject: [PATCH 3/9] Revert "Remove arch-specific tags from size baseline" This reverts commit fafd58e3b4f31f98a490b5ed31698722ea713b31. --- tests/performance/ImageSize.nightly.linux.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tests/performance/ImageSize.nightly.linux.json b/tests/performance/ImageSize.nightly.linux.json index a47b1cce15..9c8a65c632 100644 --- a/tests/performance/ImageSize.nightly.linux.json +++ b/tests/performance/ImageSize.nightly.linux.json @@ -379,7 +379,9 @@ "src/monitor/8.1/ubuntu-chiseled/amd64": 127821834, "src/monitor/8.1/ubuntu-chiseled/arm64v8": 134958622, "src/monitor/8.1/cbl-mariner-distroless/amd64": 141200979, - "src/monitor/8.1/cbl-mariner-distroless/arm64v8": 148117492 + "src/monitor/8.1/cbl-mariner-distroless/arm64v8": 148117492, + "src/monitor/9.0/azurelinux-distroless/amd64": 143287803, + "src/monitor/9.0/azurelinux-distroless/arm64v8": 149490964 }, "dotnet/nightly/monitor/base": { "src/monitor-base/8.0/ubuntu-chiseled/amd64": 119965752, From 4adb8b67717b38f49310e7da116e508bf19183bf Mon Sep 17 00:00:00 2001 From: Justin Anderson Date: Fri, 4 Oct 2024 09:44:17 -0700 Subject: [PATCH 4/9] Restore but undocument three-part version tags with arch --- manifest.json | 12 ++++++++++-- .../StaticTagTests.cs | 18 +++++++++--------- 2 files changed, 19 insertions(+), 11 deletions(-) diff --git a/manifest.json b/manifest.json index 8735ad5002..6001ded56a 100644 --- a/manifest.json +++ b/manifest.json @@ -9418,7 +9418,11 @@ "dockerfileTemplate": "eng/dockerfile-templates/monitor/Dockerfile.linux.extensions", "os": "linux", "osVersion": "azurelinux3.0-distroless", - "tags": {} + "tags": { + "$(monitor|9.0|fixed-tag)-amd64": { + "docType": "Undocumented" + } + } }, { "architecture": "arm64", @@ -9429,7 +9433,11 @@ "dockerfileTemplate": "eng/dockerfile-templates/monitor/Dockerfile.linux.extensions", "os": "linux", "osVersion": "azurelinux3.0-distroless", - "tags": {}, + "tags": { + "$(monitor|9.0|fixed-tag)-arm64v8": { + "docType": "Undocumented" + } + }, "variant": "v8" } ] diff --git a/tests/Microsoft.DotNet.Docker.Tests/StaticTagTests.cs b/tests/Microsoft.DotNet.Docker.Tests/StaticTagTests.cs index 2f1b425cb1..f96ab21242 100644 --- a/tests/Microsoft.DotNet.Docker.Tests/StaticTagTests.cs +++ b/tests/Microsoft.DotNet.Docker.Tests/StaticTagTests.cs @@ -283,7 +283,7 @@ private static IEnumerable GetTagTestObjects(TestType testType) VersionType.MajorMinorPatch, checkOs: true, checkArchitecture: true, - skipDockerfileOn: info => IsApplianceVersionWithoutDistroTags(info) || IsApplianceVersionWithoutArchTags(info) + skipDockerfileOn: IsApplianceVersionWithoutDistroTags ), // -- GetTagTestInput( @@ -301,7 +301,7 @@ private static IEnumerable GetTagTestObjects(TestType testType) VersionType.MajorMinorPatch, checkOs: false, checkArchitecture: true, - skipDockerfileOn: info => IsApplianceVersionWithDistroTags(info) || IsApplianceVersionWithoutArchTags(info) + skipDockerfileOn: IsApplianceVersionWithDistroTags ), // - GetTagTestInput( @@ -310,7 +310,7 @@ private static IEnumerable GetTagTestObjects(TestType testType) VersionType.MajorMinor, checkOs: true, checkArchitecture: true, - skipDockerfileOn: info => IsApplianceVersionWithoutDistroTags(info) || IsApplianceVersionWithoutArchTags(info) + skipDockerfileOn: info => IsApplianceVersionWithoutDistroTags(info) || IsApplianceVersionWithMajorMinorTagsWithoutArchTags(info) ), // -- GetTagTestInput( @@ -328,7 +328,7 @@ private static IEnumerable GetTagTestObjects(TestType testType) VersionType.MajorMinor, checkOs: false, checkArchitecture: true, - skipDockerfileOn: info => IsApplianceVersionWithDistroTags(info) || IsApplianceVersionWithoutArchTags(info) + skipDockerfileOn: info => IsApplianceVersionWithDistroTags(info) || IsApplianceVersionWithMajorMinorTagsWithoutArchTags(info) ), // - GetTagTestInput( @@ -337,7 +337,7 @@ private static IEnumerable GetTagTestObjects(TestType testType) VersionType.Major, checkOs: true, checkArchitecture: true, - skipDockerfileOn: info => IsApplianceVersionWithoutDistroTags(info) || IsApplianceVersionWithoutArchTags(info) + skipDockerfileOn: IsApplianceVersionWithoutDistroTags ), // -- GetTagTestInput( @@ -533,13 +533,13 @@ private static object[] GetTagTestInput( private static bool IsWindows(ManifestHelper.DockerfileInfo dockerfileInfo) => dockerfileInfo.Os.Contains("windowsservercore") || dockerfileInfo.Os.Contains("nanoserver"); - // All appliance-style images do not have arch-specific tags starting with version 9 - private static bool IsApplianceVersionWithArchTags(ManifestHelper.DockerfileInfo dockerfileInfo) => + // All appliance-style images do not have arch-specific tags for . tags starting with version 9 + private static bool IsApplianceVersionWithMajorMinorTagsWithArchTags(ManifestHelper.DockerfileInfo dockerfileInfo) => (dockerfileInfo.Repo.Contains("monitor") && GetVersion(dockerfileInfo.MajorMinor).Major <= 8) || (dockerfileInfo.Repo.Contains("aspire") && GetVersion(dockerfileInfo.MajorMinor).Major <= 8); - private static bool IsApplianceVersionWithoutArchTags(ManifestHelper.DockerfileInfo dockerfileInfo) => - !IsApplianceVersionWithArchTags(dockerfileInfo); + private static bool IsApplianceVersionWithMajorMinorTagsWithoutArchTags(ManifestHelper.DockerfileInfo dockerfileInfo) => + !IsApplianceVersionWithMajorMinorTagsWithArchTags(dockerfileInfo); // Certain versions of appliance repos use a new tag schema. // This new schema excludes the OS from all tags. From 487f4a3f290db15215206b0dbbaf63923e6495c9 Mon Sep 17 00:00:00 2001 From: Justin Anderson Date: Fri, 4 Oct 2024 10:09:54 -0700 Subject: [PATCH 5/9] PR Feedback --- .../StaticTagTests.cs | 20 +++++++++---------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/tests/Microsoft.DotNet.Docker.Tests/StaticTagTests.cs b/tests/Microsoft.DotNet.Docker.Tests/StaticTagTests.cs index f96ab21242..ec72dd27eb 100644 --- a/tests/Microsoft.DotNet.Docker.Tests/StaticTagTests.cs +++ b/tests/Microsoft.DotNet.Docker.Tests/StaticTagTests.cs @@ -310,7 +310,7 @@ private static IEnumerable GetTagTestObjects(TestType testType) VersionType.MajorMinor, checkOs: true, checkArchitecture: true, - skipDockerfileOn: info => IsApplianceVersionWithoutDistroTags(info) || IsApplianceVersionWithMajorMinorTagsWithoutArchTags(info) + skipDockerfileOn: info => IsApplianceVersionWithoutDistroTags(info) || !IsApplianceVersionWithMajorMinorArchTags(info) ), // -- GetTagTestInput( @@ -328,7 +328,7 @@ private static IEnumerable GetTagTestObjects(TestType testType) VersionType.MajorMinor, checkOs: false, checkArchitecture: true, - skipDockerfileOn: info => IsApplianceVersionWithDistroTags(info) || IsApplianceVersionWithMajorMinorTagsWithoutArchTags(info) + skipDockerfileOn: info => IsApplianceVersionWithDistroTags(info) || !IsApplianceVersionWithMajorMinorArchTags(info) ), // - GetTagTestInput( @@ -534,17 +534,15 @@ private static bool IsWindows(ManifestHelper.DockerfileInfo dockerfileInfo) => dockerfileInfo.Os.Contains("windowsservercore") || dockerfileInfo.Os.Contains("nanoserver"); // All appliance-style images do not have arch-specific tags for . tags starting with version 9 - private static bool IsApplianceVersionWithMajorMinorTagsWithArchTags(ManifestHelper.DockerfileInfo dockerfileInfo) => - (dockerfileInfo.Repo.Contains("monitor") && GetVersion(dockerfileInfo.MajorMinor).Major <= 8) || + private static bool IsApplianceVersionWithMajorMinorArchTags(ManifestHelper.DockerfileInfo dockerfileInfo) => + // Note that monitor-base still has arch-specific tags since it is a base image. Check that the repo ends with "monitor" + // to ensure that it is specifically checking the "dotnet/monitor" image and not "dotnet/monitor/base". + (dockerfileInfo.Repo.EndsWith("monitor") && GetVersion(dockerfileInfo.MajorMinor).Major <= 8) || (dockerfileInfo.Repo.Contains("aspire") && GetVersion(dockerfileInfo.MajorMinor).Major <= 8); - private static bool IsApplianceVersionWithMajorMinorTagsWithoutArchTags(ManifestHelper.DockerfileInfo dockerfileInfo) => - !IsApplianceVersionWithMajorMinorTagsWithArchTags(dockerfileInfo); - - // Certain versions of appliance repos use a new tag schema. - // This new schema excludes the OS from all tags. - // The aspire-dashboard repo uses this schema for all versions. - // The monitor and monitor-base repos use this schema for versions 9 and above. + // Certain versions of appliance-style images do not have distro-specific tags + // For aspire-dashboard, this starts with 8.0 + // For monitor and monitor-base, this starts with 9.0 private static bool IsApplianceVersionWithDistroTags(ManifestHelper.DockerfileInfo dockerfileInfo) => dockerfileInfo.Repo.Contains("monitor") && GetVersion(dockerfileInfo.MajorMinor).Major <= 8; From 09f5136483dc92cec5cd1e88a481905ec5acfb3e Mon Sep 17 00:00:00 2001 From: Justin Anderson Date: Fri, 4 Oct 2024 10:24:30 -0700 Subject: [PATCH 6/9] Revert "PR Feedback" This reverts commit 487f4a3f290db15215206b0dbbaf63923e6495c9. --- .../StaticTagTests.cs | 20 ++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/tests/Microsoft.DotNet.Docker.Tests/StaticTagTests.cs b/tests/Microsoft.DotNet.Docker.Tests/StaticTagTests.cs index ec72dd27eb..f96ab21242 100644 --- a/tests/Microsoft.DotNet.Docker.Tests/StaticTagTests.cs +++ b/tests/Microsoft.DotNet.Docker.Tests/StaticTagTests.cs @@ -310,7 +310,7 @@ private static IEnumerable GetTagTestObjects(TestType testType) VersionType.MajorMinor, checkOs: true, checkArchitecture: true, - skipDockerfileOn: info => IsApplianceVersionWithoutDistroTags(info) || !IsApplianceVersionWithMajorMinorArchTags(info) + skipDockerfileOn: info => IsApplianceVersionWithoutDistroTags(info) || IsApplianceVersionWithMajorMinorTagsWithoutArchTags(info) ), // -- GetTagTestInput( @@ -328,7 +328,7 @@ private static IEnumerable GetTagTestObjects(TestType testType) VersionType.MajorMinor, checkOs: false, checkArchitecture: true, - skipDockerfileOn: info => IsApplianceVersionWithDistroTags(info) || !IsApplianceVersionWithMajorMinorArchTags(info) + skipDockerfileOn: info => IsApplianceVersionWithDistroTags(info) || IsApplianceVersionWithMajorMinorTagsWithoutArchTags(info) ), // - GetTagTestInput( @@ -534,15 +534,17 @@ private static bool IsWindows(ManifestHelper.DockerfileInfo dockerfileInfo) => dockerfileInfo.Os.Contains("windowsservercore") || dockerfileInfo.Os.Contains("nanoserver"); // All appliance-style images do not have arch-specific tags for . tags starting with version 9 - private static bool IsApplianceVersionWithMajorMinorArchTags(ManifestHelper.DockerfileInfo dockerfileInfo) => - // Note that monitor-base still has arch-specific tags since it is a base image. Check that the repo ends with "monitor" - // to ensure that it is specifically checking the "dotnet/monitor" image and not "dotnet/monitor/base". - (dockerfileInfo.Repo.EndsWith("monitor") && GetVersion(dockerfileInfo.MajorMinor).Major <= 8) || + private static bool IsApplianceVersionWithMajorMinorTagsWithArchTags(ManifestHelper.DockerfileInfo dockerfileInfo) => + (dockerfileInfo.Repo.Contains("monitor") && GetVersion(dockerfileInfo.MajorMinor).Major <= 8) || (dockerfileInfo.Repo.Contains("aspire") && GetVersion(dockerfileInfo.MajorMinor).Major <= 8); - // Certain versions of appliance-style images do not have distro-specific tags - // For aspire-dashboard, this starts with 8.0 - // For monitor and monitor-base, this starts with 9.0 + private static bool IsApplianceVersionWithMajorMinorTagsWithoutArchTags(ManifestHelper.DockerfileInfo dockerfileInfo) => + !IsApplianceVersionWithMajorMinorTagsWithArchTags(dockerfileInfo); + + // Certain versions of appliance repos use a new tag schema. + // This new schema excludes the OS from all tags. + // The aspire-dashboard repo uses this schema for all versions. + // The monitor and monitor-base repos use this schema for versions 9 and above. private static bool IsApplianceVersionWithDistroTags(ManifestHelper.DockerfileInfo dockerfileInfo) => dockerfileInfo.Repo.Contains("monitor") && GetVersion(dockerfileInfo.MajorMinor).Major <= 8; From 5284eeebf787579d366f19b0924628ef77765960 Mon Sep 17 00:00:00 2001 From: Justin Anderson Date: Fri, 4 Oct 2024 10:25:01 -0700 Subject: [PATCH 7/9] Revert recent test changes --- .../StaticTagTests.cs | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/tests/Microsoft.DotNet.Docker.Tests/StaticTagTests.cs b/tests/Microsoft.DotNet.Docker.Tests/StaticTagTests.cs index f96ab21242..2f1b425cb1 100644 --- a/tests/Microsoft.DotNet.Docker.Tests/StaticTagTests.cs +++ b/tests/Microsoft.DotNet.Docker.Tests/StaticTagTests.cs @@ -283,7 +283,7 @@ private static IEnumerable GetTagTestObjects(TestType testType) VersionType.MajorMinorPatch, checkOs: true, checkArchitecture: true, - skipDockerfileOn: IsApplianceVersionWithoutDistroTags + skipDockerfileOn: info => IsApplianceVersionWithoutDistroTags(info) || IsApplianceVersionWithoutArchTags(info) ), // -- GetTagTestInput( @@ -301,7 +301,7 @@ private static IEnumerable GetTagTestObjects(TestType testType) VersionType.MajorMinorPatch, checkOs: false, checkArchitecture: true, - skipDockerfileOn: IsApplianceVersionWithDistroTags + skipDockerfileOn: info => IsApplianceVersionWithDistroTags(info) || IsApplianceVersionWithoutArchTags(info) ), // - GetTagTestInput( @@ -310,7 +310,7 @@ private static IEnumerable GetTagTestObjects(TestType testType) VersionType.MajorMinor, checkOs: true, checkArchitecture: true, - skipDockerfileOn: info => IsApplianceVersionWithoutDistroTags(info) || IsApplianceVersionWithMajorMinorTagsWithoutArchTags(info) + skipDockerfileOn: info => IsApplianceVersionWithoutDistroTags(info) || IsApplianceVersionWithoutArchTags(info) ), // -- GetTagTestInput( @@ -328,7 +328,7 @@ private static IEnumerable GetTagTestObjects(TestType testType) VersionType.MajorMinor, checkOs: false, checkArchitecture: true, - skipDockerfileOn: info => IsApplianceVersionWithDistroTags(info) || IsApplianceVersionWithMajorMinorTagsWithoutArchTags(info) + skipDockerfileOn: info => IsApplianceVersionWithDistroTags(info) || IsApplianceVersionWithoutArchTags(info) ), // - GetTagTestInput( @@ -337,7 +337,7 @@ private static IEnumerable GetTagTestObjects(TestType testType) VersionType.Major, checkOs: true, checkArchitecture: true, - skipDockerfileOn: IsApplianceVersionWithoutDistroTags + skipDockerfileOn: info => IsApplianceVersionWithoutDistroTags(info) || IsApplianceVersionWithoutArchTags(info) ), // -- GetTagTestInput( @@ -533,13 +533,13 @@ private static object[] GetTagTestInput( private static bool IsWindows(ManifestHelper.DockerfileInfo dockerfileInfo) => dockerfileInfo.Os.Contains("windowsservercore") || dockerfileInfo.Os.Contains("nanoserver"); - // All appliance-style images do not have arch-specific tags for . tags starting with version 9 - private static bool IsApplianceVersionWithMajorMinorTagsWithArchTags(ManifestHelper.DockerfileInfo dockerfileInfo) => + // All appliance-style images do not have arch-specific tags starting with version 9 + private static bool IsApplianceVersionWithArchTags(ManifestHelper.DockerfileInfo dockerfileInfo) => (dockerfileInfo.Repo.Contains("monitor") && GetVersion(dockerfileInfo.MajorMinor).Major <= 8) || (dockerfileInfo.Repo.Contains("aspire") && GetVersion(dockerfileInfo.MajorMinor).Major <= 8); - private static bool IsApplianceVersionWithMajorMinorTagsWithoutArchTags(ManifestHelper.DockerfileInfo dockerfileInfo) => - !IsApplianceVersionWithMajorMinorTagsWithArchTags(dockerfileInfo); + private static bool IsApplianceVersionWithoutArchTags(ManifestHelper.DockerfileInfo dockerfileInfo) => + !IsApplianceVersionWithArchTags(dockerfileInfo); // Certain versions of appliance repos use a new tag schema. // This new schema excludes the OS from all tags. From 8c900d3f66f6701da759c3aec7ad5863852a7541 Mon Sep 17 00:00:00 2001 From: Justin Anderson Date: Fri, 4 Oct 2024 10:26:40 -0700 Subject: [PATCH 8/9] Restore but undocument minor arch tags --- manifest.json | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/manifest.json b/manifest.json index 6001ded56a..e4d29b7df9 100644 --- a/manifest.json +++ b/manifest.json @@ -9421,6 +9421,9 @@ "tags": { "$(monitor|9.0|fixed-tag)-amd64": { "docType": "Undocumented" + }, + "$(monitor|9.0|minor-tag)-amd64": { + "docType": "Undocumented" } } }, @@ -9436,6 +9439,9 @@ "tags": { "$(monitor|9.0|fixed-tag)-arm64v8": { "docType": "Undocumented" + }, + "$(monitor|9.0|minor-tag)-arm64v8": { + "docType": "Undocumented" } }, "variant": "v8" From 161cf7372e7c3770c43cf0e2268529da5d48aa7d Mon Sep 17 00:00:00 2001 From: Justin Anderson Date: Fri, 4 Oct 2024 10:26:58 -0700 Subject: [PATCH 9/9] Revert test changes --- .../StaticTagTests.cs | 36 ++++++++----------- 1 file changed, 14 insertions(+), 22 deletions(-) diff --git a/tests/Microsoft.DotNet.Docker.Tests/StaticTagTests.cs b/tests/Microsoft.DotNet.Docker.Tests/StaticTagTests.cs index 2f1b425cb1..d6a6afb007 100644 --- a/tests/Microsoft.DotNet.Docker.Tests/StaticTagTests.cs +++ b/tests/Microsoft.DotNet.Docker.Tests/StaticTagTests.cs @@ -274,7 +274,7 @@ private static IEnumerable GetTagTestObjects(TestType testType) if (ApplianceRepos.Any(repo.Name.Contains)) { // Only appliance repos have major version tags - // Only appliance repos have floating distro tags () + // Only appliance repos have floating distro tags () testObjects.AddRange(new[] { GetTagTestInput( @@ -283,7 +283,7 @@ private static IEnumerable GetTagTestObjects(TestType testType) VersionType.MajorMinorPatch, checkOs: true, checkArchitecture: true, - skipDockerfileOn: info => IsApplianceVersionWithoutDistroTags(info) || IsApplianceVersionWithoutArchTags(info) + skipDockerfileOn: IsApplianceVersionUsingNewSchema ), // -- GetTagTestInput( @@ -292,7 +292,7 @@ private static IEnumerable GetTagTestObjects(TestType testType) VersionType.MajorMinorPatch, checkOs: true, checkArchitecture: false, - skipDockerfileOn: IsApplianceVersionWithoutDistroTags + skipDockerfileOn: IsApplianceVersionUsingNewSchema ), // - GetTagTestInput( @@ -301,7 +301,7 @@ private static IEnumerable GetTagTestObjects(TestType testType) VersionType.MajorMinorPatch, checkOs: false, checkArchitecture: true, - skipDockerfileOn: info => IsApplianceVersionWithDistroTags(info) || IsApplianceVersionWithoutArchTags(info) + skipDockerfileOn: IsApplianceVersionUsingOldSchema ), // - GetTagTestInput( @@ -310,7 +310,7 @@ private static IEnumerable GetTagTestObjects(TestType testType) VersionType.MajorMinor, checkOs: true, checkArchitecture: true, - skipDockerfileOn: info => IsApplianceVersionWithoutDistroTags(info) || IsApplianceVersionWithoutArchTags(info) + skipDockerfileOn: IsApplianceVersionUsingNewSchema ), // -- GetTagTestInput( @@ -319,7 +319,7 @@ private static IEnumerable GetTagTestObjects(TestType testType) VersionType.MajorMinor, checkOs: true, checkArchitecture: false, - skipDockerfileOn: IsApplianceVersionWithoutDistroTags + skipDockerfileOn: IsApplianceVersionUsingNewSchema ), // - GetTagTestInput( @@ -328,7 +328,7 @@ private static IEnumerable GetTagTestObjects(TestType testType) VersionType.MajorMinor, checkOs: false, checkArchitecture: true, - skipDockerfileOn: info => IsApplianceVersionWithDistroTags(info) || IsApplianceVersionWithoutArchTags(info) + skipDockerfileOn: IsApplianceVersionUsingOldSchema ), // - GetTagTestInput( @@ -337,7 +337,7 @@ private static IEnumerable GetTagTestObjects(TestType testType) VersionType.Major, checkOs: true, checkArchitecture: true, - skipDockerfileOn: info => IsApplianceVersionWithoutDistroTags(info) || IsApplianceVersionWithoutArchTags(info) + skipDockerfileOn: IsApplianceVersionUsingNewSchema ), // -- GetTagTestInput( @@ -346,7 +346,7 @@ private static IEnumerable GetTagTestObjects(TestType testType) VersionType.Major, checkOs: true, checkArchitecture: false, - skipDockerfileOn: IsApplianceVersionWithoutDistroTags + skipDockerfileOn: IsApplianceVersionUsingNewSchema ) // - }); @@ -359,7 +359,7 @@ private static IEnumerable GetTagTestObjects(TestType testType) VersionType.Major, checkOs: false, checkArchitecture: true, - skipDockerfileOn: IsApplianceVersionWithDistroTags + skipDockerfileOn: IsApplianceVersionUsingOldSchema )); // - } } @@ -533,24 +533,16 @@ private static object[] GetTagTestInput( private static bool IsWindows(ManifestHelper.DockerfileInfo dockerfileInfo) => dockerfileInfo.Os.Contains("windowsservercore") || dockerfileInfo.Os.Contains("nanoserver"); - // All appliance-style images do not have arch-specific tags starting with version 9 - private static bool IsApplianceVersionWithArchTags(ManifestHelper.DockerfileInfo dockerfileInfo) => - (dockerfileInfo.Repo.Contains("monitor") && GetVersion(dockerfileInfo.MajorMinor).Major <= 8) || - (dockerfileInfo.Repo.Contains("aspire") && GetVersion(dockerfileInfo.MajorMinor).Major <= 8); - - private static bool IsApplianceVersionWithoutArchTags(ManifestHelper.DockerfileInfo dockerfileInfo) => - !IsApplianceVersionWithArchTags(dockerfileInfo); - // Certain versions of appliance repos use a new tag schema. // This new schema excludes the OS from all tags. // The aspire-dashboard repo uses this schema for all versions. // The monitor and monitor-base repos use this schema for versions 9 and above. - private static bool IsApplianceVersionWithDistroTags(ManifestHelper.DockerfileInfo dockerfileInfo) => + private static bool IsApplianceVersionUsingOldSchema(ManifestHelper.DockerfileInfo dockerfileInfo) => dockerfileInfo.Repo.Contains("monitor") && GetVersion(dockerfileInfo.MajorMinor).Major <= 8; - // - private static bool IsApplianceVersionWithoutDistroTags(ManifestHelper.DockerfileInfo dockerfileInfo) => - !IsApplianceVersionWithDistroTags(dockerfileInfo); + // + private static bool IsApplianceVersionUsingNewSchema(ManifestHelper.DockerfileInfo dockerfileInfo) => + !IsApplianceVersionUsingOldSchema(dockerfileInfo); private static bool IsDotNet6(ManifestHelper.DockerfileInfo dockerfileInfo) => dockerfileInfo.MajorMinor.StartsWith("6");