From 9f53b6962fa4005b4c6df2a7fa410ce28756432e Mon Sep 17 00:00:00 2001 From: Logan Bussell Date: Mon, 22 Dec 2025 11:36:36 -0800 Subject: [PATCH 01/14] Add OSInfo record type with rich OS metadata Introduces OSInfo record with: - OSType enum (Linux/Windows) - OSFamily enum (Alpine, AzureLinux, Debian, Mariner, Ubuntu, NanoServer, WindowsServerCore) - Version, TagName, DisplayName, IsDistroless properties - Implicit string conversion for backward compatibility - Static instances for all existing OS constants --- tests/Microsoft.DotNet.Docker.Tests/OSInfo.cs | 158 ++++++++++++++++++ 1 file changed, 158 insertions(+) create mode 100644 tests/Microsoft.DotNet.Docker.Tests/OSInfo.cs diff --git a/tests/Microsoft.DotNet.Docker.Tests/OSInfo.cs b/tests/Microsoft.DotNet.Docker.Tests/OSInfo.cs new file mode 100644 index 0000000000..b3f35d6e29 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/OSInfo.cs @@ -0,0 +1,158 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +#nullable enable + +namespace Microsoft.DotNet.Docker.Tests; + +/// +/// Represents the type of operating system. +/// +internal enum OSType +{ + Linux, + Windows +} + +/// +/// Represents the family or distribution of an operating system. +/// +internal enum OSFamily +{ + Alpine, + AzureLinux, + Debian, + Mariner, + Ubuntu, + NanoServer, + WindowsServerCore +} + +/// +/// Rich metadata about an operating system used in .NET Docker images. +/// +internal sealed record OSInfo( + OSType Type, + OSFamily Family, + string? Version, + string TagName, + string DisplayName, + bool IsDistroless) +{ + /// + /// Gets a value indicating whether this OS is Windows-based. + /// + public bool IsWindows => Type == OSType.Windows; + + /// + /// Gets a value indicating whether this OS uses Ubuntu Chiseled images. + /// + public bool IsChiseled => TagName.Contains(OS.ChiseledSuffix); + + /// + /// Gets a value indicating whether this OS uses slim images. + /// + public bool IsSlim => TagName.Contains(OS.SlimSuffix); + + /// + /// Implicit conversion to string for backward compatibility with existing code. + /// + public static implicit operator string(OSInfo os) => os.TagName; + + public override string ToString() => TagName; + + // Alpine + public static OSInfo Alpine { get; } = new( + OSType.Linux, OSFamily.Alpine, null, OS.Alpine, "Alpine", IsDistroless: false); + + public static OSInfo Alpine321 { get; } = new( + OSType.Linux, OSFamily.Alpine, "3.21", OS.Alpine321, "Alpine 3.21", IsDistroless: false); + + public static OSInfo Alpine322 { get; } = new( + OSType.Linux, OSFamily.Alpine, "3.22", OS.Alpine322, "Alpine 3.22", IsDistroless: false); + + public static OSInfo Alpine323 { get; } = new( + OSType.Linux, OSFamily.Alpine, "3.23", OS.Alpine323, "Alpine 3.23", IsDistroless: false); + + // Azure Linux + public static OSInfo AzureLinux { get; } = new( + OSType.Linux, OSFamily.AzureLinux, null, OS.AzureLinux, "Azure Linux", IsDistroless: false); + + public static OSInfo AzureLinuxDistroless { get; } = new( + OSType.Linux, OSFamily.AzureLinux, null, OS.AzureLinuxDistroless, "Azure Linux (Distroless)", IsDistroless: true); + + public static OSInfo AzureLinux30 { get; } = new( + OSType.Linux, OSFamily.AzureLinux, "3.0", OS.AzureLinux30, "Azure Linux 3.0", IsDistroless: false); + + public static OSInfo AzureLinux30Distroless { get; } = new( + OSType.Linux, OSFamily.AzureLinux, "3.0", OS.AzureLinux30Distroless, "Azure Linux 3.0 (Distroless)", IsDistroless: true); + + // Debian + public static OSInfo Bookworm { get; } = new( + OSType.Linux, OSFamily.Debian, "12", OS.Bookworm, "Debian 12 (Bookworm)", IsDistroless: false); + + public static OSInfo BookwormSlim { get; } = new( + OSType.Linux, OSFamily.Debian, "12", OS.BookwormSlim, "Debian 12 (Bookworm Slim)", IsDistroless: false); + + // Mariner (CBL-Mariner) + public static OSInfo Mariner { get; } = new( + OSType.Linux, OSFamily.Mariner, null, OS.Mariner, "CBL-Mariner", IsDistroless: false); + + public static OSInfo MarinerDistroless { get; } = new( + OSType.Linux, OSFamily.Mariner, null, OS.MarinerDistroless, "CBL-Mariner (Distroless)", IsDistroless: true); + + public static OSInfo Mariner20 { get; } = new( + OSType.Linux, OSFamily.Mariner, "2.0", OS.Mariner20, "CBL-Mariner 2.0", IsDistroless: false); + + public static OSInfo Mariner20Distroless { get; } = new( + OSType.Linux, OSFamily.Mariner, "2.0", OS.Mariner20Distroless, "CBL-Mariner 2.0 (Distroless)", IsDistroless: true); + + // Ubuntu + public static OSInfo Jammy { get; } = new( + OSType.Linux, OSFamily.Ubuntu, "22.04", OS.Jammy, "Ubuntu 22.04 (Jammy)", IsDistroless: false); + + public static OSInfo JammyChiseled { get; } = new( + OSType.Linux, OSFamily.Ubuntu, "22.04", OS.JammyChiseled, "Ubuntu 22.04 (Jammy Chiseled)", IsDistroless: true); + + public static OSInfo Noble { get; } = new( + OSType.Linux, OSFamily.Ubuntu, "24.04", OS.Noble, "Ubuntu 24.04 (Noble)", IsDistroless: false); + + public static OSInfo NobleChiseled { get; } = new( + OSType.Linux, OSFamily.Ubuntu, "24.04", OS.NobleChiseled, "Ubuntu 24.04 (Noble Chiseled)", IsDistroless: true); + + public static OSInfo Resolute { get; } = new( + OSType.Linux, OSFamily.Ubuntu, "26.04", OS.Resolute, "Ubuntu 26.04 (Resolute)", IsDistroless: false); + + public static OSInfo ResoluteChiseled { get; } = new( + OSType.Linux, OSFamily.Ubuntu, "26.04", OS.ResoluteChiseled, "Ubuntu 26.04 (Resolute Chiseled)", IsDistroless: true); + + public static OSInfo UbuntuChiseled { get; } = new( + OSType.Linux, OSFamily.Ubuntu, null, OS.UbuntuChiseled, "Ubuntu (Chiseled)", IsDistroless: true); + + // Windows - Nano Server + public static OSInfo NanoServer { get; } = new( + OSType.Windows, OSFamily.NanoServer, null, OS.NanoServer, "Nano Server", IsDistroless: false); + + public static OSInfo NanoServer1809 { get; } = new( + OSType.Windows, OSFamily.NanoServer, "1809", OS.NanoServer1809, "Nano Server 1809", IsDistroless: false); + + public static OSInfo NanoServerLtsc2022 { get; } = new( + OSType.Windows, OSFamily.NanoServer, "LTSC 2022", OS.NanoServerLtsc2022, "Nano Server LTSC 2022", IsDistroless: false); + + public static OSInfo NanoServerLtsc2025 { get; } = new( + OSType.Windows, OSFamily.NanoServer, "LTSC 2025", OS.NanoServerLtsc2025, "Nano Server LTSC 2025", IsDistroless: false); + + // Windows - Server Core + public static OSInfo ServerCore { get; } = new( + OSType.Windows, OSFamily.WindowsServerCore, null, OS.ServerCore, "Windows Server Core", IsDistroless: false); + + public static OSInfo ServerCoreLtsc2019 { get; } = new( + OSType.Windows, OSFamily.WindowsServerCore, "LTSC 2019", OS.ServerCoreLtsc2019, "Windows Server Core LTSC 2019", IsDistroless: false); + + public static OSInfo ServerCoreLtsc2022 { get; } = new( + OSType.Windows, OSFamily.WindowsServerCore, "LTSC 2022", OS.ServerCoreLtsc2022, "Windows Server Core LTSC 2022", IsDistroless: false); + + public static OSInfo ServerCoreLtsc2025 { get; } = new( + OSType.Windows, OSFamily.WindowsServerCore, "LTSC 2025", OS.ServerCoreLtsc2025, "Windows Server Core LTSC 2025", IsDistroless: false); +} From ab104b7bd8f89e2f92a8fa2f47a7d6baefd91705 Mon Sep 17 00:00:00 2001 From: Logan Bussell Date: Mon, 22 Dec 2025 11:42:54 -0800 Subject: [PATCH 02/14] Migrate ImageData and ProductImageData to use OSInfo - Update ImageData.OS property from string to OSInfo - Update ProductImageData.SdkOS property from string to OSInfo - Add Contains() and StartsWith() methods to OSInfo for backward compatibility - Make OSType, OSFamily, and OSInfo public for use in test APIs - Update all test data arrays to use OSInfo static instances - Update pattern matching in ProductImageTests.cs to work with OSInfo - Refactor GetZLibPackage to use OSFamily enum --- .../ImageData.cs | 8 +- tests/Microsoft.DotNet.Docker.Tests/OSInfo.cs | 18 +- .../ProductImageData.cs | 10 +- .../ProductImageTests.cs | 40 +- .../Microsoft.DotNet.Docker.Tests/TestData.cs | 568 +++++++++--------- 5 files changed, 328 insertions(+), 316 deletions(-) diff --git a/tests/Microsoft.DotNet.Docker.Tests/ImageData.cs b/tests/Microsoft.DotNet.Docker.Tests/ImageData.cs index 8bc193ef8f..9dedc1e7a9 100644 --- a/tests/Microsoft.DotNet.Docker.Tests/ImageData.cs +++ b/tests/Microsoft.DotNet.Docker.Tests/ImageData.cs @@ -20,8 +20,8 @@ public abstract record ImageData public Arch Arch { get; set; } public bool IsArm => Arch == Arch.Arm || Arch == Arch.Arm64; - public string OS { get; set; } - public bool IsDistroless => OS.Contains(Tests.OS.DistrolessSuffix) || OS.Contains(Tests.OS.ChiseledSuffix); + public OSInfo OS { get; set; } + public bool IsDistroless => OS.IsDistroless; public virtual int DefaultPort => 8080; public virtual int? NonRootUID => IsWindows ? null : 1654; @@ -66,7 +66,7 @@ public string Platform _ => throw new NotImplementedException() }; - public bool IsWindows => OS.StartsWith(Tests.OS.NanoServer) || OS.StartsWith(Tests.OS.ServerCore); + public bool IsWindows => OS.IsWindows; public string Rid { @@ -87,7 +87,7 @@ public string Rid Arch.Amd64 => "x64", _ => throw new NotImplementedException() }; - string modifier = OS.StartsWith(Tests.OS.Alpine) ? "musl-" : ""; + string modifier = OS.Family == OSFamily.Alpine ? "musl-" : ""; rid = $"linux-{modifier}{arch}"; } diff --git a/tests/Microsoft.DotNet.Docker.Tests/OSInfo.cs b/tests/Microsoft.DotNet.Docker.Tests/OSInfo.cs index b3f35d6e29..51bc6c3d6c 100644 --- a/tests/Microsoft.DotNet.Docker.Tests/OSInfo.cs +++ b/tests/Microsoft.DotNet.Docker.Tests/OSInfo.cs @@ -9,7 +9,7 @@ namespace Microsoft.DotNet.Docker.Tests; /// /// Represents the type of operating system. /// -internal enum OSType +public enum OSType { Linux, Windows @@ -18,7 +18,7 @@ internal enum OSType /// /// Represents the family or distribution of an operating system. /// -internal enum OSFamily +public enum OSFamily { Alpine, AzureLinux, @@ -32,7 +32,7 @@ internal enum OSFamily /// /// Rich metadata about an operating system used in .NET Docker images. /// -internal sealed record OSInfo( +public sealed record OSInfo( OSType Type, OSFamily Family, string? Version, @@ -55,6 +55,18 @@ internal sealed record OSInfo( /// public bool IsSlim => TagName.Contains(OS.SlimSuffix); + /// + /// Checks if the TagName contains the specified value. + /// Provides backward compatibility with string-based OS checks. + /// + public bool Contains(string value) => TagName.Contains(value); + + /// + /// Checks if the TagName starts with the specified value. + /// Provides backward compatibility with string-based OS checks. + /// + public bool StartsWith(string value) => TagName.StartsWith(value); + /// /// Implicit conversion to string for backward compatibility with existing code. /// diff --git a/tests/Microsoft.DotNet.Docker.Tests/ProductImageData.cs b/tests/Microsoft.DotNet.Docker.Tests/ProductImageData.cs index 4549a4570e..bd28a99e00 100644 --- a/tests/Microsoft.DotNet.Docker.Tests/ProductImageData.cs +++ b/tests/Microsoft.DotNet.Docker.Tests/ProductImageData.cs @@ -11,17 +11,17 @@ namespace Microsoft.DotNet.Docker.Tests { public record ProductImageData : ImageData { - private string _sdkOS; + private OSInfo _sdkOS; private string _osTag; private string _osDir; private ImageVersion? _versionFamily; - public bool HasCustomSdk => _sdkOS != null; + public bool HasCustomSdk => _sdkOS is not null; public bool GlobalizationInvariantMode => !SupportsGlobalization; // PowerShell does not support Arm-based Alpine - public bool SupportsPowerShell => !(OS.Contains("alpine") && IsArm); + public bool SupportsPowerShell => !(OS.Family == OSFamily.Alpine && IsArm); /// /// Indicates whether the SDK version of the image supports `dnx` and @@ -29,7 +29,7 @@ public record ProductImageData : ImageData /// public bool SupportsDnx => VersionFamily != ImageVersion.V8_0 && VersionFamily != ImageVersion.V9_0; - public string SdkOS + public OSInfo SdkOS { get => HasCustomSdk ? _sdkOS : OS; init => _sdkOS = value; @@ -70,7 +70,7 @@ private bool SupportsGlobalization { get { - bool isSizeFocusedImage = IsDistroless || OS.Contains(Tests.OS.Alpine); + bool isSizeFocusedImage = IsDistroless || OS.Family == OSFamily.Alpine; return ImageVariant.HasFlag(DotNetImageVariant.Extra) || !isSizeFocusedImage; } } diff --git a/tests/Microsoft.DotNet.Docker.Tests/ProductImageTests.cs b/tests/Microsoft.DotNet.Docker.Tests/ProductImageTests.cs index 79c670a02e..157f69a95c 100644 --- a/tests/Microsoft.DotNet.Docker.Tests/ProductImageTests.cs +++ b/tests/Microsoft.DotNet.Docker.Tests/ProductImageTests.cs @@ -256,7 +256,7 @@ internal static IEnumerable GetExpectedPackages(ProductImageData imageDa private static IEnumerable GetDistrolessBasePackages(ProductImageData imageData) => imageData switch { - { OS: string os } when os.Contains(OS.AzureLinux) => new[] + { OS: var os } when os.Contains(OS.AzureLinux) => new[] { "SymCrypt", "SymCrypt-OpenSSL", @@ -266,7 +266,7 @@ internal static IEnumerable GetExpectedPackages(ProductImageData imageDa "prebuilt-ca-certificates", "tzdata" }, - { OS: string os } when os.Contains(OS.Mariner) => new[] + { OS: var os } when os.Contains(OS.Mariner) => new[] { "distroless-packages-minimal", "filesystem", @@ -274,7 +274,7 @@ internal static IEnumerable GetExpectedPackages(ProductImageData imageDa "prebuilt-ca-certificates", "tzdata" }, - { OS: string os } when os.Contains(OS.ChiseledSuffix) => new[] + { OS: var os } when os.Contains(OS.ChiseledSuffix) => new[] { "base-files" }, @@ -284,7 +284,7 @@ internal static IEnumerable GetExpectedPackages(ProductImageData imageDa private static IEnumerable GetRuntimeDepsPackages(ProductImageData imageData) { IEnumerable packages = imageData switch { - { OS: string os } when os.Contains(OS.Mariner) || os.Contains(OS.AzureLinux) => + { OS: var os } when os.Contains(OS.Mariner) || os.Contains(OS.AzureLinux) => [ "glibc", "libgcc", @@ -292,7 +292,7 @@ private static IEnumerable GetRuntimeDepsPackages(ProductImageData image "openssl-libs", "libstdc++" ], - { OS: string os } when os.Contains(OS.Jammy) => + { OS: var os } when os.Contains(OS.Jammy) => [ "ca-certificates", "gcc-12-base", @@ -302,7 +302,7 @@ private static IEnumerable GetRuntimeDepsPackages(ProductImageData image "openssl", "libstdc++6" ], - { OS: OS.NobleChiseled } => + { OS: var os } when os == OSInfo.NobleChiseled => [ "ca-certificates", "gcc-14-base", @@ -313,7 +313,7 @@ private static IEnumerable GetRuntimeDepsPackages(ProductImageData image "openssl", "libstdc++6" ], - { OS: OS.ResoluteChiseled, Arch: Arch.Amd64 } => + { OS: var os, Arch: Arch.Amd64 } when os == OSInfo.ResoluteChiseled => [ "ca-certificates", "gcc-14-base", @@ -328,7 +328,7 @@ private static IEnumerable GetRuntimeDepsPackages(ProductImageData image "openssl-provider-legacy", "zlib" ], - { OS: OS.ResoluteChiseled } => + { OS: var os } when os == OSInfo.ResoluteChiseled => [ "ca-certificates", "gcc-14-base", @@ -340,7 +340,7 @@ private static IEnumerable GetRuntimeDepsPackages(ProductImageData image "openssl", "zlib" ], - { OS: string os } when os.Contains(OS.Noble) => + { OS: var os } when os.Contains(OS.Noble) => [ "ca-certificates", "gcc-14-base", @@ -350,7 +350,7 @@ private static IEnumerable GetRuntimeDepsPackages(ProductImageData image "openssl", "libstdc++6" ], - { OS: string os } when os.Contains(OS.Resolute) => + { OS: var os } when os.Contains(OS.Resolute) => [ "ca-certificates", "gcc-15-base", @@ -360,14 +360,14 @@ private static IEnumerable GetRuntimeDepsPackages(ProductImageData image "openssl", "libstdc++6" ], - { OS: string os } when os.Contains(OS.Alpine) => + { OS: var os } when os.Contains(OS.Alpine) => [ "ca-certificates-bundle", "libgcc", "libssl3", "libstdc++" ], - { OS: OS.BookwormSlim } => + { OS: var os } when os == OSInfo.BookwormSlim => [ "ca-certificates", "libc6", @@ -394,37 +394,37 @@ private static IEnumerable GetRuntimeDepsPackages(ProductImageData image return packages; } - private static string GetZLibPackage(string os) + private static string GetZLibPackage(OSInfo os) { - string[] unversionedZLibOSes = [OS.Alpine, OS.AzureLinux, OS.Mariner]; - return unversionedZLibOSes.Where(os.Contains).Any() ? "zlib" : "zlib1g"; + OSFamily[] unversionedZLibOSFamilies = [OSFamily.Alpine, OSFamily.AzureLinux, OSFamily.Mariner]; + return unversionedZLibOSFamilies.Contains(os.Family) ? "zlib" : "zlib1g"; } private static IEnumerable GetExtraPackages(ProductImageData imageData) => imageData switch { - { IsDistroless: true, OS: string os } when os.Contains(OS.Mariner) || os.Contains(OS.AzureLinux) => new[] + { IsDistroless: true, OS: var os } when os.Contains(OS.Mariner) || os.Contains(OS.AzureLinux) => new[] { "icu", "tzdata" }, - { OS: OS.NobleChiseled } => new[] + { OS: var os } when os == OSInfo.NobleChiseled => new[] { "libicu74", "tzdata-legacy", "tzdata" }, - { OS: OS.ResoluteChiseled } => new[] + { OS: var os } when os == OSInfo.ResoluteChiseled => new[] { "icu", "libicu76", "tzdata" }, - { OS: OS.JammyChiseled } => new[] + { OS: var os } when os == OSInfo.JammyChiseled => new[] { "libicu70", "tzdata" }, - { OS: string os } when os.Contains(OS.Alpine) => new[] + { OS: var os } when os.Contains(OS.Alpine) => new[] { "icu-data-full", "icu-libs", diff --git a/tests/Microsoft.DotNet.Docker.Tests/TestData.cs b/tests/Microsoft.DotNet.Docker.Tests/TestData.cs index 60cb79f81d..efaa04c092 100644 --- a/tests/Microsoft.DotNet.Docker.Tests/TestData.cs +++ b/tests/Microsoft.DotNet.Docker.Tests/TestData.cs @@ -14,448 +14,448 @@ public static class TestData { private static readonly ProductImageData[] s_linuxTestData = { - new ProductImageData { Version = V8_0, OS = OS.BookwormSlim, Arch = Arch.Amd64 }, - new ProductImageData { Version = V8_0, OS = OS.Jammy, Arch = Arch.Amd64 }, - new ProductImageData { Version = V8_0, OS = OS.JammyChiseled, Arch = Arch.Amd64, SdkOS = OS.Jammy }, - new ProductImageData { Version = V8_0, OS = OS.JammyChiseled, Arch = Arch.Amd64, SdkOS = OS.Jammy }, - new ProductImageData { Version = V8_0, OS = OS.JammyChiseled, Arch = Arch.Amd64, SdkOS = OS.Jammy, + new ProductImageData { Version = V8_0, OS = OSInfo.BookwormSlim, Arch = Arch.Amd64 }, + new ProductImageData { Version = V8_0, OS = OSInfo.Jammy, Arch = Arch.Amd64 }, + new ProductImageData { Version = V8_0, OS = OSInfo.JammyChiseled, Arch = Arch.Amd64, SdkOS = OSInfo.Jammy }, + new ProductImageData { Version = V8_0, OS = OSInfo.JammyChiseled, Arch = Arch.Amd64, SdkOS = OSInfo.Jammy }, + new ProductImageData { Version = V8_0, OS = OSInfo.JammyChiseled, Arch = Arch.Amd64, SdkOS = OSInfo.Jammy, ImageVariant = DotNetImageVariant.Composite, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V8_0, OS = OS.JammyChiseled, Arch = Arch.Amd64, SdkOS = OS.Jammy, + new ProductImageData { Version = V8_0, OS = OSInfo.JammyChiseled, Arch = Arch.Amd64, SdkOS = OSInfo.Jammy, ImageVariant = DotNetImageVariant.Composite | DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V8_0, OS = OS.JammyChiseled, Arch = Arch.Amd64, SdkOS = OS.Jammy, + new ProductImageData { Version = V8_0, OS = OSInfo.JammyChiseled, Arch = Arch.Amd64, SdkOS = OSInfo.Jammy, ImageVariant = DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Runtime_Deps | DotNetImageRepo.Runtime | DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V8_0, OS = OS.Noble, Arch = Arch.Amd64 }, - new ProductImageData { Version = V8_0, OS = OS.NobleChiseled, Arch = Arch.Amd64, SdkOS = OS.Noble }, - new ProductImageData { Version = V8_0, OS = OS.NobleChiseled, Arch = Arch.Amd64, SdkOS = OS.Noble }, - new ProductImageData { Version = V8_0, OS = OS.NobleChiseled, Arch = Arch.Amd64, SdkOS = OS.Noble, + new ProductImageData { Version = V8_0, OS = OSInfo.Noble, Arch = Arch.Amd64 }, + new ProductImageData { Version = V8_0, OS = OSInfo.NobleChiseled, Arch = Arch.Amd64, SdkOS = OSInfo.Noble }, + new ProductImageData { Version = V8_0, OS = OSInfo.NobleChiseled, Arch = Arch.Amd64, SdkOS = OSInfo.Noble }, + new ProductImageData { Version = V8_0, OS = OSInfo.NobleChiseled, Arch = Arch.Amd64, SdkOS = OSInfo.Noble, ImageVariant = DotNetImageVariant.Composite, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V8_0, OS = OS.NobleChiseled, Arch = Arch.Amd64, SdkOS = OS.Noble, + new ProductImageData { Version = V8_0, OS = OSInfo.NobleChiseled, Arch = Arch.Amd64, SdkOS = OSInfo.Noble, ImageVariant = DotNetImageVariant.Composite | DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V8_0, OS = OS.NobleChiseled, Arch = Arch.Amd64, SdkOS = OS.Noble, + new ProductImageData { Version = V8_0, OS = OSInfo.NobleChiseled, Arch = Arch.Amd64, SdkOS = OSInfo.Noble, ImageVariant = DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Runtime_Deps | DotNetImageRepo.Runtime | DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V8_0, OS = OS.Alpine322, Arch = Arch.Amd64 }, - new ProductImageData { Version = V8_0, OS = OS.Alpine322, Arch = Arch.Amd64, SdkOS = OS.Alpine322, + new ProductImageData { Version = V8_0, OS = OSInfo.Alpine322, Arch = Arch.Amd64 }, + new ProductImageData { Version = V8_0, OS = OSInfo.Alpine322, Arch = Arch.Amd64, SdkOS = OSInfo.Alpine322, ImageVariant = DotNetImageVariant.Composite, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V8_0, OS = OS.Alpine322, Arch = Arch.Amd64, SdkOS = OS.Alpine322, + new ProductImageData { Version = V8_0, OS = OSInfo.Alpine322, Arch = Arch.Amd64, SdkOS = OSInfo.Alpine322, ImageVariant = DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Runtime_Deps }, - new ProductImageData { Version = V8_0, OS = OS.Alpine323, Arch = Arch.Amd64 }, - new ProductImageData { Version = V8_0, OS = OS.Alpine323, Arch = Arch.Amd64, SdkOS = OS.Alpine323, + new ProductImageData { Version = V8_0, OS = OSInfo.Alpine323, Arch = Arch.Amd64 }, + new ProductImageData { Version = V8_0, OS = OSInfo.Alpine323, Arch = Arch.Amd64, SdkOS = OSInfo.Alpine323, ImageVariant = DotNetImageVariant.Composite, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V8_0, OS = OS.Alpine323, Arch = Arch.Amd64, SdkOS = OS.Alpine323, + new ProductImageData { Version = V8_0, OS = OSInfo.Alpine323, Arch = Arch.Amd64, SdkOS = OSInfo.Alpine323, ImageVariant = DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Runtime_Deps }, - new ProductImageData { Version = V8_0, OS = OS.AzureLinux30, Arch = Arch.Amd64 }, - new ProductImageData { Version = V8_0, OS = OS.AzureLinux30Distroless, Arch = Arch.Amd64, SdkOS = OS.AzureLinux30 }, - new ProductImageData { Version = V8_0, OS = OS.AzureLinux30Distroless, Arch = Arch.Amd64, SdkOS = OS.AzureLinux30, + new ProductImageData { Version = V8_0, OS = OSInfo.AzureLinux30, Arch = Arch.Amd64 }, + new ProductImageData { Version = V8_0, OS = OSInfo.AzureLinux30Distroless, Arch = Arch.Amd64, SdkOS = OSInfo.AzureLinux30 }, + new ProductImageData { Version = V8_0, OS = OSInfo.AzureLinux30Distroless, Arch = Arch.Amd64, SdkOS = OSInfo.AzureLinux30, ImageVariant = DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Runtime_Deps | DotNetImageRepo.Runtime | DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V8_0, OS = OS.AzureLinux30Distroless, Arch = Arch.Amd64, SdkOS = OS.AzureLinux30, + new ProductImageData { Version = V8_0, OS = OSInfo.AzureLinux30Distroless, Arch = Arch.Amd64, SdkOS = OSInfo.AzureLinux30, ImageVariant = DotNetImageVariant.Composite, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V8_0, OS = OS.AzureLinux30Distroless, Arch = Arch.Amd64, SdkOS = OS.AzureLinux30, + new ProductImageData { Version = V8_0, OS = OSInfo.AzureLinux30Distroless, Arch = Arch.Amd64, SdkOS = OSInfo.AzureLinux30, ImageVariant = DotNetImageVariant.Composite | DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V8_0, OS = OS.Mariner20, Arch = Arch.Amd64 }, - new ProductImageData { Version = V8_0, OS = OS.Mariner20Distroless, Arch = Arch.Amd64, SdkOS = OS.Mariner20 }, - new ProductImageData { Version = V8_0, OS = OS.Mariner20Distroless, Arch = Arch.Amd64, SdkOS = OS.Mariner20, + new ProductImageData { Version = V8_0, OS = OSInfo.Mariner20, Arch = Arch.Amd64 }, + new ProductImageData { Version = V8_0, OS = OSInfo.Mariner20Distroless, Arch = Arch.Amd64, SdkOS = OSInfo.Mariner20 }, + new ProductImageData { Version = V8_0, OS = OSInfo.Mariner20Distroless, Arch = Arch.Amd64, SdkOS = OSInfo.Mariner20, ImageVariant = DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Runtime_Deps | DotNetImageRepo.Runtime | DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V8_0, OS = OS.Mariner20Distroless, Arch = Arch.Amd64, SdkOS = OS.Mariner20, + new ProductImageData { Version = V8_0, OS = OSInfo.Mariner20Distroless, Arch = Arch.Amd64, SdkOS = OSInfo.Mariner20, ImageVariant = DotNetImageVariant.Composite, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V8_0, OS = OS.Mariner20Distroless, Arch = Arch.Amd64, SdkOS = OS.Mariner20, + new ProductImageData { Version = V8_0, OS = OSInfo.Mariner20Distroless, Arch = Arch.Amd64, SdkOS = OSInfo.Mariner20, ImageVariant = DotNetImageVariant.Composite | DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V8_0, OS = OS.AzureLinux30, Arch = Arch.Arm64 }, - new ProductImageData { Version = V8_0, OS = OS.AzureLinux30Distroless, Arch = Arch.Arm64, SdkOS = OS.AzureLinux30 }, - new ProductImageData { Version = V8_0, OS = OS.AzureLinux30Distroless, Arch = Arch.Arm64, SdkOS = OS.AzureLinux30, + new ProductImageData { Version = V8_0, OS = OSInfo.AzureLinux30, Arch = Arch.Arm64 }, + new ProductImageData { Version = V8_0, OS = OSInfo.AzureLinux30Distroless, Arch = Arch.Arm64, SdkOS = OSInfo.AzureLinux30 }, + new ProductImageData { Version = V8_0, OS = OSInfo.AzureLinux30Distroless, Arch = Arch.Arm64, SdkOS = OSInfo.AzureLinux30, ImageVariant = DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Runtime_Deps | DotNetImageRepo.Runtime | DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V8_0, OS = OS.AzureLinux30Distroless, Arch = Arch.Arm64, SdkOS = OS.AzureLinux30, + new ProductImageData { Version = V8_0, OS = OSInfo.AzureLinux30Distroless, Arch = Arch.Arm64, SdkOS = OSInfo.AzureLinux30, ImageVariant = DotNetImageVariant.Composite, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V8_0, OS = OS.AzureLinux30Distroless, Arch = Arch.Arm64, SdkOS = OS.AzureLinux30, + new ProductImageData { Version = V8_0, OS = OSInfo.AzureLinux30Distroless, Arch = Arch.Arm64, SdkOS = OSInfo.AzureLinux30, ImageVariant = DotNetImageVariant.Composite | DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V8_0, OS = OS.Mariner20, Arch = Arch.Arm64 }, - new ProductImageData { Version = V8_0, OS = OS.Mariner20Distroless, Arch = Arch.Arm64, SdkOS = OS.Mariner20 }, - new ProductImageData { Version = V8_0, OS = OS.Mariner20Distroless, Arch = Arch.Arm64, SdkOS = OS.Mariner20, + new ProductImageData { Version = V8_0, OS = OSInfo.Mariner20, Arch = Arch.Arm64 }, + new ProductImageData { Version = V8_0, OS = OSInfo.Mariner20Distroless, Arch = Arch.Arm64, SdkOS = OSInfo.Mariner20 }, + new ProductImageData { Version = V8_0, OS = OSInfo.Mariner20Distroless, Arch = Arch.Arm64, SdkOS = OSInfo.Mariner20, ImageVariant = DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Runtime_Deps | DotNetImageRepo.Runtime | DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V8_0, OS = OS.Mariner20Distroless, Arch = Arch.Arm64, SdkOS = OS.Mariner20, + new ProductImageData { Version = V8_0, OS = OSInfo.Mariner20Distroless, Arch = Arch.Arm64, SdkOS = OSInfo.Mariner20, ImageVariant = DotNetImageVariant.Composite, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V8_0, OS = OS.Mariner20Distroless, Arch = Arch.Arm64, SdkOS = OS.Mariner20, + new ProductImageData { Version = V8_0, OS = OSInfo.Mariner20Distroless, Arch = Arch.Arm64, SdkOS = OSInfo.Mariner20, ImageVariant = DotNetImageVariant.Composite | DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V8_0, OS = OS.BookwormSlim, Arch = Arch.Arm64 }, - new ProductImageData { Version = V8_0, OS = OS.Jammy, Arch = Arch.Arm64 }, - new ProductImageData { Version = V8_0, OS = OS.JammyChiseled, Arch = Arch.Arm64, SdkOS = OS.Jammy }, - new ProductImageData { Version = V8_0, OS = OS.JammyChiseled, Arch = Arch.Arm64, SdkOS = OS.Jammy, + new ProductImageData { Version = V8_0, OS = OSInfo.BookwormSlim, Arch = Arch.Arm64 }, + new ProductImageData { Version = V8_0, OS = OSInfo.Jammy, Arch = Arch.Arm64 }, + new ProductImageData { Version = V8_0, OS = OSInfo.JammyChiseled, Arch = Arch.Arm64, SdkOS = OSInfo.Jammy }, + new ProductImageData { Version = V8_0, OS = OSInfo.JammyChiseled, Arch = Arch.Arm64, SdkOS = OSInfo.Jammy, ImageVariant = DotNetImageVariant.Composite, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V8_0, OS = OS.JammyChiseled, Arch = Arch.Arm64, SdkOS = OS.Jammy, + new ProductImageData { Version = V8_0, OS = OSInfo.JammyChiseled, Arch = Arch.Arm64, SdkOS = OSInfo.Jammy, ImageVariant = DotNetImageVariant.Composite | DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V8_0, OS = OS.JammyChiseled, Arch = Arch.Arm64, SdkOS = OS.Jammy, + new ProductImageData { Version = V8_0, OS = OSInfo.JammyChiseled, Arch = Arch.Arm64, SdkOS = OSInfo.Jammy, ImageVariant = DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Runtime_Deps | DotNetImageRepo.Runtime | DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V8_0, OS = OS.Noble, Arch = Arch.Arm64 }, - new ProductImageData { Version = V8_0, OS = OS.NobleChiseled, Arch = Arch.Arm64, SdkOS = OS.Noble }, - new ProductImageData { Version = V8_0, OS = OS.NobleChiseled, Arch = Arch.Arm64, SdkOS = OS.Noble, + new ProductImageData { Version = V8_0, OS = OSInfo.Noble, Arch = Arch.Arm64 }, + new ProductImageData { Version = V8_0, OS = OSInfo.NobleChiseled, Arch = Arch.Arm64, SdkOS = OSInfo.Noble }, + new ProductImageData { Version = V8_0, OS = OSInfo.NobleChiseled, Arch = Arch.Arm64, SdkOS = OSInfo.Noble, ImageVariant = DotNetImageVariant.Composite, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V8_0, OS = OS.NobleChiseled, Arch = Arch.Arm64, SdkOS = OS.Noble, + new ProductImageData { Version = V8_0, OS = OSInfo.NobleChiseled, Arch = Arch.Arm64, SdkOS = OSInfo.Noble, ImageVariant = DotNetImageVariant.Composite | DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V8_0, OS = OS.NobleChiseled, Arch = Arch.Arm64, SdkOS = OS.Noble, + new ProductImageData { Version = V8_0, OS = OSInfo.NobleChiseled, Arch = Arch.Arm64, SdkOS = OSInfo.Noble, ImageVariant = DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Runtime_Deps | DotNetImageRepo.Runtime | DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V8_0, OS = OS.Alpine322, Arch = Arch.Arm64 }, - new ProductImageData { Version = V8_0, OS = OS.Alpine322, Arch = Arch.Arm64, SdkOS = OS.Alpine322, + new ProductImageData { Version = V8_0, OS = OSInfo.Alpine322, Arch = Arch.Arm64 }, + new ProductImageData { Version = V8_0, OS = OSInfo.Alpine322, Arch = Arch.Arm64, SdkOS = OSInfo.Alpine322, ImageVariant = DotNetImageVariant.Composite, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V8_0, OS = OS.Alpine322, Arch = Arch.Arm64, SdkOS = OS.Alpine322, + new ProductImageData { Version = V8_0, OS = OSInfo.Alpine322, Arch = Arch.Arm64, SdkOS = OSInfo.Alpine322, ImageVariant = DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Runtime_Deps }, - new ProductImageData { Version = V8_0, OS = OS.Alpine323, Arch = Arch.Arm64 }, - new ProductImageData { Version = V8_0, OS = OS.Alpine323, Arch = Arch.Arm64, SdkOS = OS.Alpine323, + new ProductImageData { Version = V8_0, OS = OSInfo.Alpine323, Arch = Arch.Arm64 }, + new ProductImageData { Version = V8_0, OS = OSInfo.Alpine323, Arch = Arch.Arm64, SdkOS = OSInfo.Alpine323, ImageVariant = DotNetImageVariant.Composite, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V8_0, OS = OS.Alpine323, Arch = Arch.Arm64, SdkOS = OS.Alpine323, + new ProductImageData { Version = V8_0, OS = OSInfo.Alpine323, Arch = Arch.Arm64, SdkOS = OSInfo.Alpine323, ImageVariant = DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Runtime_Deps }, - new ProductImageData { Version = V8_0, OS = OS.BookwormSlim, Arch = Arch.Arm }, - new ProductImageData { Version = V8_0, OS = OS.Jammy, Arch = Arch.Arm }, - new ProductImageData { Version = V8_0, OS = OS.JammyChiseled, Arch = Arch.Arm, SdkOS = OS.Jammy }, - new ProductImageData { Version = V8_0, OS = OS.JammyChiseled, Arch = Arch.Arm, SdkOS = OS.Jammy, + new ProductImageData { Version = V8_0, OS = OSInfo.BookwormSlim, Arch = Arch.Arm }, + new ProductImageData { Version = V8_0, OS = OSInfo.Jammy, Arch = Arch.Arm }, + new ProductImageData { Version = V8_0, OS = OSInfo.JammyChiseled, Arch = Arch.Arm, SdkOS = OSInfo.Jammy }, + new ProductImageData { Version = V8_0, OS = OSInfo.JammyChiseled, Arch = Arch.Arm, SdkOS = OSInfo.Jammy, ImageVariant = DotNetImageVariant.Composite, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V8_0, OS = OS.JammyChiseled, Arch = Arch.Arm, SdkOS = OS.Jammy, + new ProductImageData { Version = V8_0, OS = OSInfo.JammyChiseled, Arch = Arch.Arm, SdkOS = OSInfo.Jammy, ImageVariant = DotNetImageVariant.Composite | DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V8_0, OS = OS.JammyChiseled, Arch = Arch.Arm, SdkOS = OS.Jammy, + new ProductImageData { Version = V8_0, OS = OSInfo.JammyChiseled, Arch = Arch.Arm, SdkOS = OSInfo.Jammy, ImageVariant = DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Runtime_Deps | DotNetImageRepo.Runtime | DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V8_0, OS = OS.Alpine322, Arch = Arch.Arm }, - new ProductImageData { Version = V8_0, OS = OS.Alpine322, Arch = Arch.Arm, SdkOS = OS.Alpine322, + new ProductImageData { Version = V8_0, OS = OSInfo.Alpine322, Arch = Arch.Arm }, + new ProductImageData { Version = V8_0, OS = OSInfo.Alpine322, Arch = Arch.Arm, SdkOS = OSInfo.Alpine322, ImageVariant = DotNetImageVariant.Composite, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V8_0, OS = OS.Alpine322, Arch = Arch.Arm, SdkOS = OS.Alpine322, + new ProductImageData { Version = V8_0, OS = OSInfo.Alpine322, Arch = Arch.Arm, SdkOS = OSInfo.Alpine322, ImageVariant = DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Runtime_Deps }, - new ProductImageData { Version = V8_0, OS = OS.Alpine323, Arch = Arch.Arm }, - new ProductImageData { Version = V8_0, OS = OS.Alpine323, Arch = Arch.Arm, SdkOS = OS.Alpine323, + new ProductImageData { Version = V8_0, OS = OSInfo.Alpine323, Arch = Arch.Arm }, + new ProductImageData { Version = V8_0, OS = OSInfo.Alpine323, Arch = Arch.Arm, SdkOS = OSInfo.Alpine323, ImageVariant = DotNetImageVariant.Composite, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V8_0, OS = OS.Alpine323, Arch = Arch.Arm, SdkOS = OS.Alpine323, + new ProductImageData { Version = V8_0, OS = OSInfo.Alpine323, Arch = Arch.Arm, SdkOS = OSInfo.Alpine323, ImageVariant = DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Runtime_Deps }, - new ProductImageData { Version = V9_0, OS = OS.BookwormSlim, Arch = Arch.Amd64 }, - new ProductImageData { Version = V9_0, OS = OS.Noble, Arch = Arch.Amd64 }, - new ProductImageData { Version = V9_0, OS = OS.NobleChiseled, Arch = Arch.Amd64, SdkOS = OS.Noble }, - new ProductImageData { Version = V9_0, OS = OS.NobleChiseled, Arch = Arch.Amd64, SdkOS = OS.Noble }, - new ProductImageData { Version = V9_0, OS = OS.NobleChiseled, Arch = Arch.Amd64, SdkOS = OS.Noble, + new ProductImageData { Version = V9_0, OS = OSInfo.BookwormSlim, Arch = Arch.Amd64 }, + new ProductImageData { Version = V9_0, OS = OSInfo.Noble, Arch = Arch.Amd64 }, + new ProductImageData { Version = V9_0, OS = OSInfo.NobleChiseled, Arch = Arch.Amd64, SdkOS = OSInfo.Noble }, + new ProductImageData { Version = V9_0, OS = OSInfo.NobleChiseled, Arch = Arch.Amd64, SdkOS = OSInfo.Noble }, + new ProductImageData { Version = V9_0, OS = OSInfo.NobleChiseled, Arch = Arch.Amd64, SdkOS = OSInfo.Noble, ImageVariant = DotNetImageVariant.Composite, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V9_0, OS = OS.NobleChiseled, Arch = Arch.Amd64, SdkOS = OS.Noble, + new ProductImageData { Version = V9_0, OS = OSInfo.NobleChiseled, Arch = Arch.Amd64, SdkOS = OSInfo.Noble, ImageVariant = DotNetImageVariant.Composite | DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V9_0, OS = OS.NobleChiseled, Arch = Arch.Amd64, SdkOS = OS.Noble, + new ProductImageData { Version = V9_0, OS = OSInfo.NobleChiseled, Arch = Arch.Amd64, SdkOS = OSInfo.Noble, ImageVariant = DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Runtime_Deps | DotNetImageRepo.Runtime | DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V9_0, OS = OS.Alpine322, Arch = Arch.Amd64 }, - new ProductImageData { Version = V9_0, OS = OS.Alpine322, Arch = Arch.Amd64, SdkOS = OS.Alpine322, + new ProductImageData { Version = V9_0, OS = OSInfo.Alpine322, Arch = Arch.Amd64 }, + new ProductImageData { Version = V9_0, OS = OSInfo.Alpine322, Arch = Arch.Amd64, SdkOS = OSInfo.Alpine322, ImageVariant = DotNetImageVariant.Composite, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V9_0, OS = OS.Alpine322, Arch = Arch.Amd64, SdkOS = OS.Alpine322, + new ProductImageData { Version = V9_0, OS = OSInfo.Alpine322, Arch = Arch.Amd64, SdkOS = OSInfo.Alpine322, ImageVariant = DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Runtime_Deps }, - new ProductImageData { Version = V9_0, OS = OS.Alpine323, Arch = Arch.Amd64 }, - new ProductImageData { Version = V9_0, OS = OS.Alpine323, Arch = Arch.Amd64, SdkOS = OS.Alpine323, + new ProductImageData { Version = V9_0, OS = OSInfo.Alpine323, Arch = Arch.Amd64 }, + new ProductImageData { Version = V9_0, OS = OSInfo.Alpine323, Arch = Arch.Amd64, SdkOS = OSInfo.Alpine323, ImageVariant = DotNetImageVariant.Composite, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V9_0, OS = OS.Alpine323, Arch = Arch.Amd64, SdkOS = OS.Alpine323, + new ProductImageData { Version = V9_0, OS = OSInfo.Alpine323, Arch = Arch.Amd64, SdkOS = OSInfo.Alpine323, ImageVariant = DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Runtime_Deps }, - new ProductImageData { Version = V9_0, OS = OS.AzureLinux30, Arch = Arch.Amd64 }, - new ProductImageData { Version = V9_0, OS = OS.AzureLinux30Distroless, Arch = Arch.Amd64, SdkOS = OS.AzureLinux30 }, - new ProductImageData { Version = V9_0, OS = OS.AzureLinux30Distroless, Arch = Arch.Amd64, SdkOS = OS.AzureLinux30, + new ProductImageData { Version = V9_0, OS = OSInfo.AzureLinux30, Arch = Arch.Amd64 }, + new ProductImageData { Version = V9_0, OS = OSInfo.AzureLinux30Distroless, Arch = Arch.Amd64, SdkOS = OSInfo.AzureLinux30 }, + new ProductImageData { Version = V9_0, OS = OSInfo.AzureLinux30Distroless, Arch = Arch.Amd64, SdkOS = OSInfo.AzureLinux30, ImageVariant = DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Runtime_Deps | DotNetImageRepo.Runtime | DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V9_0, OS = OS.AzureLinux30Distroless, Arch = Arch.Amd64, SdkOS = OS.AzureLinux30, + new ProductImageData { Version = V9_0, OS = OSInfo.AzureLinux30Distroless, Arch = Arch.Amd64, SdkOS = OSInfo.AzureLinux30, ImageVariant = DotNetImageVariant.Composite, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V9_0, OS = OS.AzureLinux30Distroless, Arch = Arch.Amd64, SdkOS = OS.AzureLinux30, + new ProductImageData { Version = V9_0, OS = OSInfo.AzureLinux30Distroless, Arch = Arch.Amd64, SdkOS = OSInfo.AzureLinux30, ImageVariant = DotNetImageVariant.Composite | DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V9_0, OS = OS.AzureLinux30, Arch = Arch.Arm64 }, - new ProductImageData { Version = V9_0, OS = OS.AzureLinux30Distroless, Arch = Arch.Arm64, SdkOS = OS.AzureLinux30 }, - new ProductImageData { Version = V9_0, OS = OS.AzureLinux30Distroless, Arch = Arch.Arm64, SdkOS = OS.AzureLinux30, + new ProductImageData { Version = V9_0, OS = OSInfo.AzureLinux30, Arch = Arch.Arm64 }, + new ProductImageData { Version = V9_0, OS = OSInfo.AzureLinux30Distroless, Arch = Arch.Arm64, SdkOS = OSInfo.AzureLinux30 }, + new ProductImageData { Version = V9_0, OS = OSInfo.AzureLinux30Distroless, Arch = Arch.Arm64, SdkOS = OSInfo.AzureLinux30, ImageVariant = DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Runtime_Deps | DotNetImageRepo.Runtime | DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V9_0, OS = OS.AzureLinux30Distroless, Arch = Arch.Arm64, SdkOS = OS.AzureLinux30, + new ProductImageData { Version = V9_0, OS = OSInfo.AzureLinux30Distroless, Arch = Arch.Arm64, SdkOS = OSInfo.AzureLinux30, ImageVariant = DotNetImageVariant.Composite, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V9_0, OS = OS.AzureLinux30Distroless, Arch = Arch.Arm64, SdkOS = OS.AzureLinux30, + new ProductImageData { Version = V9_0, OS = OSInfo.AzureLinux30Distroless, Arch = Arch.Arm64, SdkOS = OSInfo.AzureLinux30, ImageVariant = DotNetImageVariant.Composite | DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V9_0, OS = OS.BookwormSlim, Arch = Arch.Arm64 }, - new ProductImageData { Version = V9_0, OS = OS.Noble, Arch = Arch.Arm64 }, - new ProductImageData { Version = V9_0, OS = OS.NobleChiseled, Arch = Arch.Arm64, SdkOS = OS.Noble }, - new ProductImageData { Version = V9_0, OS = OS.NobleChiseled, Arch = Arch.Arm64, SdkOS = OS.Noble, + new ProductImageData { Version = V9_0, OS = OSInfo.BookwormSlim, Arch = Arch.Arm64 }, + new ProductImageData { Version = V9_0, OS = OSInfo.Noble, Arch = Arch.Arm64 }, + new ProductImageData { Version = V9_0, OS = OSInfo.NobleChiseled, Arch = Arch.Arm64, SdkOS = OSInfo.Noble }, + new ProductImageData { Version = V9_0, OS = OSInfo.NobleChiseled, Arch = Arch.Arm64, SdkOS = OSInfo.Noble, ImageVariant = DotNetImageVariant.Composite, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V9_0, OS = OS.NobleChiseled, Arch = Arch.Arm64, SdkOS = OS.Noble, + new ProductImageData { Version = V9_0, OS = OSInfo.NobleChiseled, Arch = Arch.Arm64, SdkOS = OSInfo.Noble, ImageVariant = DotNetImageVariant.Composite | DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V9_0, OS = OS.NobleChiseled, Arch = Arch.Arm64, SdkOS = OS.Noble, + new ProductImageData { Version = V9_0, OS = OSInfo.NobleChiseled, Arch = Arch.Arm64, SdkOS = OSInfo.Noble, ImageVariant = DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Runtime_Deps | DotNetImageRepo.Runtime | DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V9_0, OS = OS.Alpine322, Arch = Arch.Arm64 }, - new ProductImageData { Version = V9_0, OS = OS.Alpine322, Arch = Arch.Arm64, SdkOS = OS.Alpine322, + new ProductImageData { Version = V9_0, OS = OSInfo.Alpine322, Arch = Arch.Arm64 }, + new ProductImageData { Version = V9_0, OS = OSInfo.Alpine322, Arch = Arch.Arm64, SdkOS = OSInfo.Alpine322, ImageVariant = DotNetImageVariant.Composite, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V9_0, OS = OS.Alpine322, Arch = Arch.Arm64, SdkOS = OS.Alpine322, + new ProductImageData { Version = V9_0, OS = OSInfo.Alpine322, Arch = Arch.Arm64, SdkOS = OSInfo.Alpine322, ImageVariant = DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Runtime_Deps }, - new ProductImageData { Version = V9_0, OS = OS.Alpine323, Arch = Arch.Arm64 }, - new ProductImageData { Version = V9_0, OS = OS.Alpine323, Arch = Arch.Arm64, SdkOS = OS.Alpine323, + new ProductImageData { Version = V9_0, OS = OSInfo.Alpine323, Arch = Arch.Arm64 }, + new ProductImageData { Version = V9_0, OS = OSInfo.Alpine323, Arch = Arch.Arm64, SdkOS = OSInfo.Alpine323, ImageVariant = DotNetImageVariant.Composite, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V9_0, OS = OS.Alpine323, Arch = Arch.Arm64, SdkOS = OS.Alpine323, + new ProductImageData { Version = V9_0, OS = OSInfo.Alpine323, Arch = Arch.Arm64, SdkOS = OSInfo.Alpine323, ImageVariant = DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Runtime_Deps }, - new ProductImageData { Version = V9_0, OS = OS.BookwormSlim, Arch = Arch.Arm }, - new ProductImageData { Version = V9_0, OS = OS.Alpine322, Arch = Arch.Arm }, - new ProductImageData { Version = V9_0, OS = OS.Alpine322, Arch = Arch.Arm, SdkOS = OS.Alpine322, + new ProductImageData { Version = V9_0, OS = OSInfo.BookwormSlim, Arch = Arch.Arm }, + new ProductImageData { Version = V9_0, OS = OSInfo.Alpine322, Arch = Arch.Arm }, + new ProductImageData { Version = V9_0, OS = OSInfo.Alpine322, Arch = Arch.Arm, SdkOS = OSInfo.Alpine322, ImageVariant = DotNetImageVariant.Composite, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V9_0, OS = OS.Alpine322, Arch = Arch.Arm, SdkOS = OS.Alpine322, + new ProductImageData { Version = V9_0, OS = OSInfo.Alpine322, Arch = Arch.Arm, SdkOS = OSInfo.Alpine322, ImageVariant = DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Runtime_Deps }, - new ProductImageData { Version = V9_0, OS = OS.Alpine323, Arch = Arch.Arm }, - new ProductImageData { Version = V9_0, OS = OS.Alpine323, Arch = Arch.Arm, SdkOS = OS.Alpine323, + new ProductImageData { Version = V9_0, OS = OSInfo.Alpine323, Arch = Arch.Arm }, + new ProductImageData { Version = V9_0, OS = OSInfo.Alpine323, Arch = Arch.Arm, SdkOS = OSInfo.Alpine323, ImageVariant = DotNetImageVariant.Composite, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V9_0, OS = OS.Alpine323, Arch = Arch.Arm, SdkOS = OS.Alpine323, + new ProductImageData { Version = V9_0, OS = OSInfo.Alpine323, Arch = Arch.Arm, SdkOS = OSInfo.Alpine323, ImageVariant = DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Runtime_Deps }, - new ProductImageData { Version = V9_0, OS = OS.Noble, Arch = Arch.Arm }, - new ProductImageData { Version = V9_0, OS = OS.NobleChiseled, Arch = Arch.Arm, SdkOS = OS.Noble }, - new ProductImageData { Version = V9_0, OS = OS.NobleChiseled, Arch = Arch.Arm, SdkOS = OS.Noble, + new ProductImageData { Version = V9_0, OS = OSInfo.Noble, Arch = Arch.Arm }, + new ProductImageData { Version = V9_0, OS = OSInfo.NobleChiseled, Arch = Arch.Arm, SdkOS = OSInfo.Noble }, + new ProductImageData { Version = V9_0, OS = OSInfo.NobleChiseled, Arch = Arch.Arm, SdkOS = OSInfo.Noble, ImageVariant = DotNetImageVariant.Composite, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V9_0, OS = OS.NobleChiseled, Arch = Arch.Arm, SdkOS = OS.Noble, + new ProductImageData { Version = V9_0, OS = OSInfo.NobleChiseled, Arch = Arch.Arm, SdkOS = OSInfo.Noble, ImageVariant = DotNetImageVariant.Composite | DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V9_0, OS = OS.NobleChiseled, Arch = Arch.Arm, SdkOS = OS.Noble, + new ProductImageData { Version = V9_0, OS = OSInfo.NobleChiseled, Arch = Arch.Arm, SdkOS = OSInfo.Noble, ImageVariant = DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Runtime_Deps | DotNetImageRepo.Runtime | DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V10_0, OS = OS.Noble, Arch = Arch.Amd64 }, - new ProductImageData { Version = V10_0, OS = OS.NobleChiseled, Arch = Arch.Amd64, SdkOS = OS.Noble }, - new ProductImageData { Version = V10_0, OS = OS.NobleChiseled, Arch = Arch.Amd64, SdkOS = OS.Noble, + new ProductImageData { Version = V10_0, OS = OSInfo.Noble, Arch = Arch.Amd64 }, + new ProductImageData { Version = V10_0, OS = OSInfo.NobleChiseled, Arch = Arch.Amd64, SdkOS = OSInfo.Noble }, + new ProductImageData { Version = V10_0, OS = OSInfo.NobleChiseled, Arch = Arch.Amd64, SdkOS = OSInfo.Noble, ImageVariant = DotNetImageVariant.Composite, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V10_0, OS = OS.NobleChiseled, Arch = Arch.Amd64, SdkOS = OS.Noble, + new ProductImageData { Version = V10_0, OS = OSInfo.NobleChiseled, Arch = Arch.Amd64, SdkOS = OSInfo.Noble, ImageVariant = DotNetImageVariant.Composite | DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V10_0, OS = OS.NobleChiseled, Arch = Arch.Amd64, SdkOS = OS.Noble, + new ProductImageData { Version = V10_0, OS = OSInfo.NobleChiseled, Arch = Arch.Amd64, SdkOS = OSInfo.Noble, ImageVariant = DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Runtime_Deps | DotNetImageRepo.Runtime | DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V10_0, OS = OS.Alpine322, Arch = Arch.Amd64 }, - new ProductImageData { Version = V10_0, OS = OS.Alpine322, Arch = Arch.Amd64, SdkOS = OS.Alpine322, + new ProductImageData { Version = V10_0, OS = OSInfo.Alpine322, Arch = Arch.Amd64 }, + new ProductImageData { Version = V10_0, OS = OSInfo.Alpine322, Arch = Arch.Amd64, SdkOS = OSInfo.Alpine322, ImageVariant = DotNetImageVariant.Composite, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V10_0, OS = OS.Alpine322, Arch = Arch.Amd64, SdkOS = OS.Alpine322, + new ProductImageData { Version = V10_0, OS = OSInfo.Alpine322, Arch = Arch.Amd64, SdkOS = OSInfo.Alpine322, ImageVariant = DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Runtime_Deps }, - new ProductImageData { Version = V10_0, OS = OS.Alpine323, Arch = Arch.Amd64 }, - new ProductImageData { Version = V10_0, OS = OS.Alpine323, Arch = Arch.Amd64, SdkOS = OS.Alpine323, + new ProductImageData { Version = V10_0, OS = OSInfo.Alpine323, Arch = Arch.Amd64 }, + new ProductImageData { Version = V10_0, OS = OSInfo.Alpine323, Arch = Arch.Amd64, SdkOS = OSInfo.Alpine323, ImageVariant = DotNetImageVariant.Composite, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V10_0, OS = OS.Alpine323, Arch = Arch.Amd64, SdkOS = OS.Alpine323, + new ProductImageData { Version = V10_0, OS = OSInfo.Alpine323, Arch = Arch.Amd64, SdkOS = OSInfo.Alpine323, ImageVariant = DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Runtime_Deps }, - new ProductImageData { Version = V10_0, OS = OS.AzureLinux30, Arch = Arch.Amd64 }, - new ProductImageData { Version = V10_0, OS = OS.AzureLinux30Distroless, Arch = Arch.Amd64, SdkOS = OS.AzureLinux30 }, - new ProductImageData { Version = V10_0, OS = OS.AzureLinux30Distroless, Arch = Arch.Amd64, SdkOS = OS.AzureLinux30, + new ProductImageData { Version = V10_0, OS = OSInfo.AzureLinux30, Arch = Arch.Amd64 }, + new ProductImageData { Version = V10_0, OS = OSInfo.AzureLinux30Distroless, Arch = Arch.Amd64, SdkOS = OSInfo.AzureLinux30 }, + new ProductImageData { Version = V10_0, OS = OSInfo.AzureLinux30Distroless, Arch = Arch.Amd64, SdkOS = OSInfo.AzureLinux30, ImageVariant = DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Runtime_Deps | DotNetImageRepo.Runtime | DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V10_0, OS = OS.AzureLinux30Distroless, Arch = Arch.Amd64, SdkOS = OS.AzureLinux30, + new ProductImageData { Version = V10_0, OS = OSInfo.AzureLinux30Distroless, Arch = Arch.Amd64, SdkOS = OSInfo.AzureLinux30, ImageVariant = DotNetImageVariant.Composite, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V10_0, OS = OS.AzureLinux30Distroless, Arch = Arch.Amd64, SdkOS = OS.AzureLinux30, + new ProductImageData { Version = V10_0, OS = OSInfo.AzureLinux30Distroless, Arch = Arch.Amd64, SdkOS = OSInfo.AzureLinux30, ImageVariant = DotNetImageVariant.Composite | DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new() { Version = V10_0, Arch = Arch.Amd64, SdkImageVariant = DotNetImageVariant.AOT, SupportedImageRepos = DotNetImageRepo.Runtime_Deps, OS = OS.Alpine322 }, - new() { Version = V10_0, Arch = Arch.Amd64, SdkImageVariant = DotNetImageVariant.AOT, SupportedImageRepos = DotNetImageRepo.Runtime_Deps, OS = OS.Alpine323 }, - new() { Version = V10_0, Arch = Arch.Amd64, SdkImageVariant = DotNetImageVariant.AOT, SupportedImageRepos = DotNetImageRepo.Runtime_Deps, OS = OS.AzureLinux30Distroless, SdkOS = OS.AzureLinux30 }, - new() { Version = V10_0, Arch = Arch.Amd64, SdkImageVariant = DotNetImageVariant.AOT, SupportedImageRepos = DotNetImageRepo.Runtime_Deps, OS = OS.NobleChiseled, SdkOS = OS.Noble }, + new() { Version = V10_0, Arch = Arch.Amd64, SdkImageVariant = DotNetImageVariant.AOT, SupportedImageRepos = DotNetImageRepo.Runtime_Deps, OS = OSInfo.Alpine322 }, + new() { Version = V10_0, Arch = Arch.Amd64, SdkImageVariant = DotNetImageVariant.AOT, SupportedImageRepos = DotNetImageRepo.Runtime_Deps, OS = OSInfo.Alpine323 }, + new() { Version = V10_0, Arch = Arch.Amd64, SdkImageVariant = DotNetImageVariant.AOT, SupportedImageRepos = DotNetImageRepo.Runtime_Deps, OS = OSInfo.AzureLinux30Distroless, SdkOS = OSInfo.AzureLinux30 }, + new() { Version = V10_0, Arch = Arch.Amd64, SdkImageVariant = DotNetImageVariant.AOT, SupportedImageRepos = DotNetImageRepo.Runtime_Deps, OS = OSInfo.NobleChiseled, SdkOS = OSInfo.Noble }, - new ProductImageData { Version = V10_0, OS = OS.AzureLinux30, Arch = Arch.Arm64 }, - new ProductImageData { Version = V10_0, OS = OS.AzureLinux30Distroless, Arch = Arch.Arm64, SdkOS = OS.AzureLinux30 }, - new ProductImageData { Version = V10_0, OS = OS.AzureLinux30Distroless, Arch = Arch.Arm64, SdkOS = OS.AzureLinux30, + new ProductImageData { Version = V10_0, OS = OSInfo.AzureLinux30, Arch = Arch.Arm64 }, + new ProductImageData { Version = V10_0, OS = OSInfo.AzureLinux30Distroless, Arch = Arch.Arm64, SdkOS = OSInfo.AzureLinux30 }, + new ProductImageData { Version = V10_0, OS = OSInfo.AzureLinux30Distroless, Arch = Arch.Arm64, SdkOS = OSInfo.AzureLinux30, ImageVariant = DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Runtime_Deps | DotNetImageRepo.Runtime | DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V10_0, OS = OS.AzureLinux30Distroless, Arch = Arch.Arm64, SdkOS = OS.AzureLinux30, + new ProductImageData { Version = V10_0, OS = OSInfo.AzureLinux30Distroless, Arch = Arch.Arm64, SdkOS = OSInfo.AzureLinux30, ImageVariant = DotNetImageVariant.Composite, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V10_0, OS = OS.AzureLinux30Distroless, Arch = Arch.Arm64, SdkOS = OS.AzureLinux30, + new ProductImageData { Version = V10_0, OS = OSInfo.AzureLinux30Distroless, Arch = Arch.Arm64, SdkOS = OSInfo.AzureLinux30, ImageVariant = DotNetImageVariant.Composite | DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V10_0, OS = OS.Noble, Arch = Arch.Arm64 }, - new ProductImageData { Version = V10_0, OS = OS.NobleChiseled, Arch = Arch.Arm64, SdkOS = OS.Noble }, - new ProductImageData { Version = V10_0, OS = OS.NobleChiseled, Arch = Arch.Arm64, SdkOS = OS.Noble, + new ProductImageData { Version = V10_0, OS = OSInfo.Noble, Arch = Arch.Arm64 }, + new ProductImageData { Version = V10_0, OS = OSInfo.NobleChiseled, Arch = Arch.Arm64, SdkOS = OSInfo.Noble }, + new ProductImageData { Version = V10_0, OS = OSInfo.NobleChiseled, Arch = Arch.Arm64, SdkOS = OSInfo.Noble, ImageVariant = DotNetImageVariant.Composite, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V10_0, OS = OS.NobleChiseled, Arch = Arch.Arm64, SdkOS = OS.Noble, + new ProductImageData { Version = V10_0, OS = OSInfo.NobleChiseled, Arch = Arch.Arm64, SdkOS = OSInfo.Noble, ImageVariant = DotNetImageVariant.Composite | DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V10_0, OS = OS.NobleChiseled, Arch = Arch.Arm64, SdkOS = OS.Noble, + new ProductImageData { Version = V10_0, OS = OSInfo.NobleChiseled, Arch = Arch.Arm64, SdkOS = OSInfo.Noble, ImageVariant = DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Runtime_Deps | DotNetImageRepo.Runtime | DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V10_0, OS = OS.Alpine322, Arch = Arch.Arm64 }, - new ProductImageData { Version = V10_0, OS = OS.Alpine322, Arch = Arch.Arm64, SdkOS = OS.Alpine322, + new ProductImageData { Version = V10_0, OS = OSInfo.Alpine322, Arch = Arch.Arm64 }, + new ProductImageData { Version = V10_0, OS = OSInfo.Alpine322, Arch = Arch.Arm64, SdkOS = OSInfo.Alpine322, ImageVariant = DotNetImageVariant.Composite, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V10_0, OS = OS.Alpine322, Arch = Arch.Arm64, SdkOS = OS.Alpine322, + new ProductImageData { Version = V10_0, OS = OSInfo.Alpine322, Arch = Arch.Arm64, SdkOS = OSInfo.Alpine322, ImageVariant = DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Runtime_Deps }, - new ProductImageData { Version = V10_0, OS = OS.Alpine323, Arch = Arch.Arm64 }, - new ProductImageData { Version = V10_0, OS = OS.Alpine323, Arch = Arch.Arm64, SdkOS = OS.Alpine323, + new ProductImageData { Version = V10_0, OS = OSInfo.Alpine323, Arch = Arch.Arm64 }, + new ProductImageData { Version = V10_0, OS = OSInfo.Alpine323, Arch = Arch.Arm64, SdkOS = OSInfo.Alpine323, ImageVariant = DotNetImageVariant.Composite, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V10_0, OS = OS.Alpine323, Arch = Arch.Arm64, SdkOS = OS.Alpine323, + new ProductImageData { Version = V10_0, OS = OSInfo.Alpine323, Arch = Arch.Arm64, SdkOS = OSInfo.Alpine323, ImageVariant = DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Runtime_Deps }, - new() { Version = V10_0, Arch = Arch.Arm64, SdkImageVariant = DotNetImageVariant.AOT, SupportedImageRepos = DotNetImageRepo.Runtime_Deps, OS = OS.Alpine322 }, - new() { Version = V10_0, Arch = Arch.Arm64, SdkImageVariant = DotNetImageVariant.AOT, SupportedImageRepos = DotNetImageRepo.Runtime_Deps, OS = OS.Alpine323 }, - new() { Version = V10_0, Arch = Arch.Arm64, SdkImageVariant = DotNetImageVariant.AOT, SupportedImageRepos = DotNetImageRepo.Runtime_Deps, OS = OS.AzureLinux30Distroless, SdkOS = OS.AzureLinux30 }, - new() { Version = V10_0, Arch = Arch.Arm64, SdkImageVariant = DotNetImageVariant.AOT, SupportedImageRepos = DotNetImageRepo.Runtime_Deps, OS = OS.NobleChiseled, SdkOS = OS.Noble }, + new() { Version = V10_0, Arch = Arch.Arm64, SdkImageVariant = DotNetImageVariant.AOT, SupportedImageRepos = DotNetImageRepo.Runtime_Deps, OS = OSInfo.Alpine322 }, + new() { Version = V10_0, Arch = Arch.Arm64, SdkImageVariant = DotNetImageVariant.AOT, SupportedImageRepos = DotNetImageRepo.Runtime_Deps, OS = OSInfo.Alpine323 }, + new() { Version = V10_0, Arch = Arch.Arm64, SdkImageVariant = DotNetImageVariant.AOT, SupportedImageRepos = DotNetImageRepo.Runtime_Deps, OS = OSInfo.AzureLinux30Distroless, SdkOS = OSInfo.AzureLinux30 }, + new() { Version = V10_0, Arch = Arch.Arm64, SdkImageVariant = DotNetImageVariant.AOT, SupportedImageRepos = DotNetImageRepo.Runtime_Deps, OS = OSInfo.NobleChiseled, SdkOS = OSInfo.Noble }, - new ProductImageData { Version = V10_0, OS = OS.Alpine322, Arch = Arch.Arm }, - new ProductImageData { Version = V10_0, OS = OS.Alpine322, Arch = Arch.Arm, SdkOS = OS.Alpine322, + new ProductImageData { Version = V10_0, OS = OSInfo.Alpine322, Arch = Arch.Arm }, + new ProductImageData { Version = V10_0, OS = OSInfo.Alpine322, Arch = Arch.Arm, SdkOS = OSInfo.Alpine322, ImageVariant = DotNetImageVariant.Composite, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V10_0, OS = OS.Alpine322, Arch = Arch.Arm, SdkOS = OS.Alpine322, + new ProductImageData { Version = V10_0, OS = OSInfo.Alpine322, Arch = Arch.Arm, SdkOS = OSInfo.Alpine322, ImageVariant = DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Runtime_Deps }, - new ProductImageData { Version = V10_0, OS = OS.Alpine323, Arch = Arch.Arm }, - new ProductImageData { Version = V10_0, OS = OS.Alpine323, Arch = Arch.Arm, SdkOS = OS.Alpine323, + new ProductImageData { Version = V10_0, OS = OSInfo.Alpine323, Arch = Arch.Arm }, + new ProductImageData { Version = V10_0, OS = OSInfo.Alpine323, Arch = Arch.Arm, SdkOS = OSInfo.Alpine323, ImageVariant = DotNetImageVariant.Composite, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V10_0, OS = OS.Alpine323, Arch = Arch.Arm, SdkOS = OS.Alpine323, + new ProductImageData { Version = V10_0, OS = OSInfo.Alpine323, Arch = Arch.Arm, SdkOS = OSInfo.Alpine323, ImageVariant = DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Runtime_Deps }, - new ProductImageData { Version = V10_0, OS = OS.Noble, Arch = Arch.Arm }, - new ProductImageData { Version = V10_0, OS = OS.NobleChiseled, Arch = Arch.Arm, SdkOS = OS.Noble }, - new ProductImageData { Version = V10_0, OS = OS.NobleChiseled, Arch = Arch.Arm, SdkOS = OS.Noble, + new ProductImageData { Version = V10_0, OS = OSInfo.Noble, Arch = Arch.Arm }, + new ProductImageData { Version = V10_0, OS = OSInfo.NobleChiseled, Arch = Arch.Arm, SdkOS = OSInfo.Noble }, + new ProductImageData { Version = V10_0, OS = OSInfo.NobleChiseled, Arch = Arch.Arm, SdkOS = OSInfo.Noble, ImageVariant = DotNetImageVariant.Composite, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V10_0, OS = OS.NobleChiseled, Arch = Arch.Arm, SdkOS = OS.Noble, + new ProductImageData { Version = V10_0, OS = OSInfo.NobleChiseled, Arch = Arch.Arm, SdkOS = OSInfo.Noble, ImageVariant = DotNetImageVariant.Composite | DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V10_0, OS = OS.NobleChiseled, Arch = Arch.Arm, SdkOS = OS.Noble, + new ProductImageData { Version = V10_0, OS = OSInfo.NobleChiseled, Arch = Arch.Arm, SdkOS = OSInfo.Noble, ImageVariant = DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Runtime_Deps | DotNetImageRepo.Runtime | DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V11_0, OS = OS.Resolute, Arch = Arch.Amd64 }, - new ProductImageData { Version = V11_0, OS = OS.ResoluteChiseled, Arch = Arch.Amd64, SdkOS = OS.Resolute }, - new ProductImageData { Version = V11_0, OS = OS.ResoluteChiseled, Arch = Arch.Amd64, SdkOS = OS.Resolute, + new ProductImageData { Version = V11_0, OS = OSInfo.Resolute, Arch = Arch.Amd64 }, + new ProductImageData { Version = V11_0, OS = OSInfo.ResoluteChiseled, Arch = Arch.Amd64, SdkOS = OSInfo.Resolute }, + new ProductImageData { Version = V11_0, OS = OSInfo.ResoluteChiseled, Arch = Arch.Amd64, SdkOS = OSInfo.Resolute, ImageVariant = DotNetImageVariant.Composite, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V11_0, OS = OS.ResoluteChiseled, Arch = Arch.Amd64, SdkOS = OS.Resolute, + new ProductImageData { Version = V11_0, OS = OSInfo.ResoluteChiseled, Arch = Arch.Amd64, SdkOS = OSInfo.Resolute, ImageVariant = DotNetImageVariant.Composite | DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V11_0, OS = OS.ResoluteChiseled, Arch = Arch.Amd64, SdkOS = OS.Resolute, + new ProductImageData { Version = V11_0, OS = OSInfo.ResoluteChiseled, Arch = Arch.Amd64, SdkOS = OSInfo.Resolute, ImageVariant = DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Runtime_Deps | DotNetImageRepo.Runtime | DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V11_0, OS = OS.Alpine322, Arch = Arch.Amd64 }, - new ProductImageData { Version = V11_0, OS = OS.Alpine322, Arch = Arch.Amd64, SdkOS = OS.Alpine322, + new ProductImageData { Version = V11_0, OS = OSInfo.Alpine322, Arch = Arch.Amd64 }, + new ProductImageData { Version = V11_0, OS = OSInfo.Alpine322, Arch = Arch.Amd64, SdkOS = OSInfo.Alpine322, ImageVariant = DotNetImageVariant.Composite, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V11_0, OS = OS.Alpine322, Arch = Arch.Amd64, SdkOS = OS.Alpine322, + new ProductImageData { Version = V11_0, OS = OSInfo.Alpine322, Arch = Arch.Amd64, SdkOS = OSInfo.Alpine322, ImageVariant = DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Runtime_Deps }, - new ProductImageData { Version = V11_0, OS = OS.Alpine323, Arch = Arch.Amd64 }, - new ProductImageData { Version = V11_0, OS = OS.Alpine323, Arch = Arch.Amd64, SdkOS = OS.Alpine323, + new ProductImageData { Version = V11_0, OS = OSInfo.Alpine323, Arch = Arch.Amd64 }, + new ProductImageData { Version = V11_0, OS = OSInfo.Alpine323, Arch = Arch.Amd64, SdkOS = OSInfo.Alpine323, ImageVariant = DotNetImageVariant.Composite, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V11_0, OS = OS.Alpine323, Arch = Arch.Amd64, SdkOS = OS.Alpine323, + new ProductImageData { Version = V11_0, OS = OSInfo.Alpine323, Arch = Arch.Amd64, SdkOS = OSInfo.Alpine323, ImageVariant = DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Runtime_Deps }, - new ProductImageData { Version = V11_0, OS = OS.AzureLinux30, Arch = Arch.Amd64 }, - new ProductImageData { Version = V11_0, OS = OS.AzureLinux30Distroless, Arch = Arch.Amd64, SdkOS = OS.AzureLinux30 }, - new ProductImageData { Version = V11_0, OS = OS.AzureLinux30Distroless, Arch = Arch.Amd64, SdkOS = OS.AzureLinux30, + new ProductImageData { Version = V11_0, OS = OSInfo.AzureLinux30, Arch = Arch.Amd64 }, + new ProductImageData { Version = V11_0, OS = OSInfo.AzureLinux30Distroless, Arch = Arch.Amd64, SdkOS = OSInfo.AzureLinux30 }, + new ProductImageData { Version = V11_0, OS = OSInfo.AzureLinux30Distroless, Arch = Arch.Amd64, SdkOS = OSInfo.AzureLinux30, ImageVariant = DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Runtime_Deps | DotNetImageRepo.Runtime | DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V11_0, OS = OS.AzureLinux30Distroless, Arch = Arch.Amd64, SdkOS = OS.AzureLinux30, + new ProductImageData { Version = V11_0, OS = OSInfo.AzureLinux30Distroless, Arch = Arch.Amd64, SdkOS = OSInfo.AzureLinux30, ImageVariant = DotNetImageVariant.Composite, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V11_0, OS = OS.AzureLinux30Distroless, Arch = Arch.Amd64, SdkOS = OS.AzureLinux30, + new ProductImageData { Version = V11_0, OS = OSInfo.AzureLinux30Distroless, Arch = Arch.Amd64, SdkOS = OSInfo.AzureLinux30, ImageVariant = DotNetImageVariant.Composite | DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new() { Version = V11_0, Arch = Arch.Amd64, SdkImageVariant = DotNetImageVariant.AOT, SupportedImageRepos = DotNetImageRepo.Runtime_Deps, OS = OS.Alpine322 }, - new() { Version = V11_0, Arch = Arch.Amd64, SdkImageVariant = DotNetImageVariant.AOT, SupportedImageRepos = DotNetImageRepo.Runtime_Deps, OS = OS.Alpine323 }, - new() { Version = V11_0, Arch = Arch.Amd64, SdkImageVariant = DotNetImageVariant.AOT, SupportedImageRepos = DotNetImageRepo.Runtime_Deps, OS = OS.AzureLinux30Distroless, SdkOS = OS.AzureLinux30 }, - new() { Version = V11_0, Arch = Arch.Amd64, SdkImageVariant = DotNetImageVariant.AOT, SupportedImageRepos = DotNetImageRepo.Runtime_Deps, OS = OS.ResoluteChiseled, SdkOS = OS.Resolute }, + new() { Version = V11_0, Arch = Arch.Amd64, SdkImageVariant = DotNetImageVariant.AOT, SupportedImageRepos = DotNetImageRepo.Runtime_Deps, OS = OSInfo.Alpine322 }, + new() { Version = V11_0, Arch = Arch.Amd64, SdkImageVariant = DotNetImageVariant.AOT, SupportedImageRepos = DotNetImageRepo.Runtime_Deps, OS = OSInfo.Alpine323 }, + new() { Version = V11_0, Arch = Arch.Amd64, SdkImageVariant = DotNetImageVariant.AOT, SupportedImageRepos = DotNetImageRepo.Runtime_Deps, OS = OSInfo.AzureLinux30Distroless, SdkOS = OSInfo.AzureLinux30 }, + new() { Version = V11_0, Arch = Arch.Amd64, SdkImageVariant = DotNetImageVariant.AOT, SupportedImageRepos = DotNetImageRepo.Runtime_Deps, OS = OSInfo.ResoluteChiseled, SdkOS = OSInfo.Resolute }, - new ProductImageData { Version = V11_0, OS = OS.AzureLinux30, Arch = Arch.Arm64 }, - new ProductImageData { Version = V11_0, OS = OS.AzureLinux30Distroless, Arch = Arch.Arm64, SdkOS = OS.AzureLinux30 }, - new ProductImageData { Version = V11_0, OS = OS.AzureLinux30Distroless, Arch = Arch.Arm64, SdkOS = OS.AzureLinux30, + new ProductImageData { Version = V11_0, OS = OSInfo.AzureLinux30, Arch = Arch.Arm64 }, + new ProductImageData { Version = V11_0, OS = OSInfo.AzureLinux30Distroless, Arch = Arch.Arm64, SdkOS = OSInfo.AzureLinux30 }, + new ProductImageData { Version = V11_0, OS = OSInfo.AzureLinux30Distroless, Arch = Arch.Arm64, SdkOS = OSInfo.AzureLinux30, ImageVariant = DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Runtime_Deps | DotNetImageRepo.Runtime | DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V11_0, OS = OS.AzureLinux30Distroless, Arch = Arch.Arm64, SdkOS = OS.AzureLinux30, + new ProductImageData { Version = V11_0, OS = OSInfo.AzureLinux30Distroless, Arch = Arch.Arm64, SdkOS = OSInfo.AzureLinux30, ImageVariant = DotNetImageVariant.Composite, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V11_0, OS = OS.AzureLinux30Distroless, Arch = Arch.Arm64, SdkOS = OS.AzureLinux30, + new ProductImageData { Version = V11_0, OS = OSInfo.AzureLinux30Distroless, Arch = Arch.Arm64, SdkOS = OSInfo.AzureLinux30, ImageVariant = DotNetImageVariant.Composite | DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V11_0, OS = OS.Resolute, Arch = Arch.Arm64 }, - new ProductImageData { Version = V11_0, OS = OS.ResoluteChiseled, Arch = Arch.Arm64, SdkOS = OS.Resolute }, - new ProductImageData { Version = V11_0, OS = OS.ResoluteChiseled, Arch = Arch.Arm64, SdkOS = OS.Resolute, + new ProductImageData { Version = V11_0, OS = OSInfo.Resolute, Arch = Arch.Arm64 }, + new ProductImageData { Version = V11_0, OS = OSInfo.ResoluteChiseled, Arch = Arch.Arm64, SdkOS = OSInfo.Resolute }, + new ProductImageData { Version = V11_0, OS = OSInfo.ResoluteChiseled, Arch = Arch.Arm64, SdkOS = OSInfo.Resolute, ImageVariant = DotNetImageVariant.Composite, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V11_0, OS = OS.ResoluteChiseled, Arch = Arch.Arm64, SdkOS = OS.Resolute, + new ProductImageData { Version = V11_0, OS = OSInfo.ResoluteChiseled, Arch = Arch.Arm64, SdkOS = OSInfo.Resolute, ImageVariant = DotNetImageVariant.Composite | DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V11_0, OS = OS.ResoluteChiseled, Arch = Arch.Arm64, SdkOS = OS.Resolute, + new ProductImageData { Version = V11_0, OS = OSInfo.ResoluteChiseled, Arch = Arch.Arm64, SdkOS = OSInfo.Resolute, ImageVariant = DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Runtime_Deps | DotNetImageRepo.Runtime | DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V11_0, OS = OS.Alpine322, Arch = Arch.Arm64 }, - new ProductImageData { Version = V11_0, OS = OS.Alpine322, Arch = Arch.Arm64, SdkOS = OS.Alpine322, + new ProductImageData { Version = V11_0, OS = OSInfo.Alpine322, Arch = Arch.Arm64 }, + new ProductImageData { Version = V11_0, OS = OSInfo.Alpine322, Arch = Arch.Arm64, SdkOS = OSInfo.Alpine322, ImageVariant = DotNetImageVariant.Composite, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V11_0, OS = OS.Alpine322, Arch = Arch.Arm64, SdkOS = OS.Alpine322, + new ProductImageData { Version = V11_0, OS = OSInfo.Alpine322, Arch = Arch.Arm64, SdkOS = OSInfo.Alpine322, ImageVariant = DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Runtime_Deps }, - new ProductImageData { Version = V11_0, OS = OS.Alpine323, Arch = Arch.Arm64 }, - new ProductImageData { Version = V11_0, OS = OS.Alpine323, Arch = Arch.Arm64, SdkOS = OS.Alpine323, + new ProductImageData { Version = V11_0, OS = OSInfo.Alpine323, Arch = Arch.Arm64 }, + new ProductImageData { Version = V11_0, OS = OSInfo.Alpine323, Arch = Arch.Arm64, SdkOS = OSInfo.Alpine323, ImageVariant = DotNetImageVariant.Composite, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V11_0, OS = OS.Alpine323, Arch = Arch.Arm64, SdkOS = OS.Alpine323, + new ProductImageData { Version = V11_0, OS = OSInfo.Alpine323, Arch = Arch.Arm64, SdkOS = OSInfo.Alpine323, ImageVariant = DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Runtime_Deps }, - new() { Version = V11_0, Arch = Arch.Arm64, SdkImageVariant = DotNetImageVariant.AOT, SupportedImageRepos = DotNetImageRepo.Runtime_Deps, OS = OS.Alpine322 }, - new() { Version = V11_0, Arch = Arch.Arm64, SdkImageVariant = DotNetImageVariant.AOT, SupportedImageRepos = DotNetImageRepo.Runtime_Deps, OS = OS.Alpine323 }, - new() { Version = V11_0, Arch = Arch.Arm64, SdkImageVariant = DotNetImageVariant.AOT, SupportedImageRepos = DotNetImageRepo.Runtime_Deps, OS = OS.AzureLinux30Distroless, SdkOS = OS.AzureLinux30 }, - new() { Version = V11_0, Arch = Arch.Arm64, SdkImageVariant = DotNetImageVariant.AOT, SupportedImageRepos = DotNetImageRepo.Runtime_Deps, OS = OS.ResoluteChiseled, SdkOS = OS.Resolute }, + new() { Version = V11_0, Arch = Arch.Arm64, SdkImageVariant = DotNetImageVariant.AOT, SupportedImageRepos = DotNetImageRepo.Runtime_Deps, OS = OSInfo.Alpine322 }, + new() { Version = V11_0, Arch = Arch.Arm64, SdkImageVariant = DotNetImageVariant.AOT, SupportedImageRepos = DotNetImageRepo.Runtime_Deps, OS = OSInfo.Alpine323 }, + new() { Version = V11_0, Arch = Arch.Arm64, SdkImageVariant = DotNetImageVariant.AOT, SupportedImageRepos = DotNetImageRepo.Runtime_Deps, OS = OSInfo.AzureLinux30Distroless, SdkOS = OSInfo.AzureLinux30 }, + new() { Version = V11_0, Arch = Arch.Arm64, SdkImageVariant = DotNetImageVariant.AOT, SupportedImageRepos = DotNetImageRepo.Runtime_Deps, OS = OSInfo.ResoluteChiseled, SdkOS = OSInfo.Resolute }, - new ProductImageData { Version = V11_0, OS = OS.Alpine322, Arch = Arch.Arm }, - new ProductImageData { Version = V11_0, OS = OS.Alpine322, Arch = Arch.Arm, SdkOS = OS.Alpine322, + new ProductImageData { Version = V11_0, OS = OSInfo.Alpine322, Arch = Arch.Arm }, + new ProductImageData { Version = V11_0, OS = OSInfo.Alpine322, Arch = Arch.Arm, SdkOS = OSInfo.Alpine322, ImageVariant = DotNetImageVariant.Composite, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V11_0, OS = OS.Alpine322, Arch = Arch.Arm, SdkOS = OS.Alpine322, + new ProductImageData { Version = V11_0, OS = OSInfo.Alpine322, Arch = Arch.Arm, SdkOS = OSInfo.Alpine322, ImageVariant = DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Runtime_Deps }, - new ProductImageData { Version = V11_0, OS = OS.Alpine323, Arch = Arch.Arm }, - new ProductImageData { Version = V11_0, OS = OS.Alpine323, Arch = Arch.Arm, SdkOS = OS.Alpine323, + new ProductImageData { Version = V11_0, OS = OSInfo.Alpine323, Arch = Arch.Arm }, + new ProductImageData { Version = V11_0, OS = OSInfo.Alpine323, Arch = Arch.Arm, SdkOS = OSInfo.Alpine323, ImageVariant = DotNetImageVariant.Composite, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V11_0, OS = OS.Alpine323, Arch = Arch.Arm, SdkOS = OS.Alpine323, + new ProductImageData { Version = V11_0, OS = OSInfo.Alpine323, Arch = Arch.Arm, SdkOS = OSInfo.Alpine323, ImageVariant = DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Runtime_Deps }, - new ProductImageData { Version = V11_0, OS = OS.Resolute, Arch = Arch.Arm }, - new ProductImageData { Version = V11_0, OS = OS.ResoluteChiseled, Arch = Arch.Arm, SdkOS = OS.Resolute }, - new ProductImageData { Version = V11_0, OS = OS.ResoluteChiseled, Arch = Arch.Arm, SdkOS = OS.Resolute, + new ProductImageData { Version = V11_0, OS = OSInfo.Resolute, Arch = Arch.Arm }, + new ProductImageData { Version = V11_0, OS = OSInfo.ResoluteChiseled, Arch = Arch.Arm, SdkOS = OSInfo.Resolute }, + new ProductImageData { Version = V11_0, OS = OSInfo.ResoluteChiseled, Arch = Arch.Arm, SdkOS = OSInfo.Resolute, ImageVariant = DotNetImageVariant.Composite, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V11_0, OS = OS.ResoluteChiseled, Arch = Arch.Arm, SdkOS = OS.Resolute, + new ProductImageData { Version = V11_0, OS = OSInfo.ResoluteChiseled, Arch = Arch.Arm, SdkOS = OSInfo.Resolute, ImageVariant = DotNetImageVariant.Composite | DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V11_0, OS = OS.ResoluteChiseled, Arch = Arch.Arm, SdkOS = OS.Resolute, + new ProductImageData { Version = V11_0, OS = OSInfo.ResoluteChiseled, Arch = Arch.Arm, SdkOS = OSInfo.Resolute, ImageVariant = DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Runtime_Deps | DotNetImageRepo.Runtime | DotNetImageRepo.Aspnet }, }; private static readonly ProductImageData[] s_windowsTestData = { - new ProductImageData { Version = V8_0, OS = OS.NanoServer1809, Arch = Arch.Amd64 }, - new ProductImageData { Version = V8_0, OS = OS.NanoServerLtsc2022, Arch = Arch.Amd64 }, - new ProductImageData { Version = V8_0, OS = OS.NanoServerLtsc2025, Arch = Arch.Amd64 }, - new ProductImageData { Version = V8_0, OS = OS.ServerCoreLtsc2019, Arch = Arch.Amd64 }, - new ProductImageData { Version = V8_0, OS = OS.ServerCoreLtsc2022, Arch = Arch.Amd64 }, - new ProductImageData { Version = V8_0, OS = OS.ServerCoreLtsc2025, Arch = Arch.Amd64 }, - - new ProductImageData { Version = V9_0, OS = OS.NanoServer1809, Arch = Arch.Amd64 }, - new ProductImageData { Version = V9_0, OS = OS.NanoServerLtsc2022, Arch = Arch.Amd64 }, - new ProductImageData { Version = V9_0, OS = OS.NanoServerLtsc2025, Arch = Arch.Amd64 }, - new ProductImageData { Version = V9_0, OS = OS.ServerCoreLtsc2019, Arch = Arch.Amd64 }, - new ProductImageData { Version = V9_0, OS = OS.ServerCoreLtsc2022, Arch = Arch.Amd64 }, - new ProductImageData { Version = V9_0, OS = OS.ServerCoreLtsc2025, Arch = Arch.Amd64 }, - - new ProductImageData { Version = V10_0, OS = OS.NanoServerLtsc2022, Arch = Arch.Amd64 }, - new ProductImageData { Version = V10_0, OS = OS.NanoServerLtsc2025, Arch = Arch.Amd64 }, - new ProductImageData { Version = V10_0, OS = OS.ServerCoreLtsc2022, Arch = Arch.Amd64 }, - new ProductImageData { Version = V10_0, OS = OS.ServerCoreLtsc2025, Arch = Arch.Amd64 }, - - new ProductImageData { Version = V11_0, OS = OS.NanoServerLtsc2022, Arch = Arch.Amd64 }, - new ProductImageData { Version = V11_0, OS = OS.NanoServerLtsc2025, Arch = Arch.Amd64 }, - new ProductImageData { Version = V11_0, OS = OS.ServerCoreLtsc2022, Arch = Arch.Amd64 }, - new ProductImageData { Version = V11_0, OS = OS.ServerCoreLtsc2025, Arch = Arch.Amd64 }, + new ProductImageData { Version = V8_0, OS = OSInfo.NanoServer1809, Arch = Arch.Amd64 }, + new ProductImageData { Version = V8_0, OS = OSInfo.NanoServerLtsc2022, Arch = Arch.Amd64 }, + new ProductImageData { Version = V8_0, OS = OSInfo.NanoServerLtsc2025, Arch = Arch.Amd64 }, + new ProductImageData { Version = V8_0, OS = OSInfo.ServerCoreLtsc2019, Arch = Arch.Amd64 }, + new ProductImageData { Version = V8_0, OS = OSInfo.ServerCoreLtsc2022, Arch = Arch.Amd64 }, + new ProductImageData { Version = V8_0, OS = OSInfo.ServerCoreLtsc2025, Arch = Arch.Amd64 }, + + new ProductImageData { Version = V9_0, OS = OSInfo.NanoServer1809, Arch = Arch.Amd64 }, + new ProductImageData { Version = V9_0, OS = OSInfo.NanoServerLtsc2022, Arch = Arch.Amd64 }, + new ProductImageData { Version = V9_0, OS = OSInfo.NanoServerLtsc2025, Arch = Arch.Amd64 }, + new ProductImageData { Version = V9_0, OS = OSInfo.ServerCoreLtsc2019, Arch = Arch.Amd64 }, + new ProductImageData { Version = V9_0, OS = OSInfo.ServerCoreLtsc2022, Arch = Arch.Amd64 }, + new ProductImageData { Version = V9_0, OS = OSInfo.ServerCoreLtsc2025, Arch = Arch.Amd64 }, + + new ProductImageData { Version = V10_0, OS = OSInfo.NanoServerLtsc2022, Arch = Arch.Amd64 }, + new ProductImageData { Version = V10_0, OS = OSInfo.NanoServerLtsc2025, Arch = Arch.Amd64 }, + new ProductImageData { Version = V10_0, OS = OSInfo.ServerCoreLtsc2022, Arch = Arch.Amd64 }, + new ProductImageData { Version = V10_0, OS = OSInfo.ServerCoreLtsc2025, Arch = Arch.Amd64 }, + + new ProductImageData { Version = V11_0, OS = OSInfo.NanoServerLtsc2022, Arch = Arch.Amd64 }, + new ProductImageData { Version = V11_0, OS = OSInfo.NanoServerLtsc2025, Arch = Arch.Amd64 }, + new ProductImageData { Version = V11_0, OS = OSInfo.ServerCoreLtsc2022, Arch = Arch.Amd64 }, + new ProductImageData { Version = V11_0, OS = OSInfo.ServerCoreLtsc2025, Arch = Arch.Amd64 }, }; private static readonly SampleImageData[] s_linuxSampleTestData = { - new SampleImageData { OS = OS.Alpine, Arch = Arch.Amd64, DockerfileSuffix = "alpine", IsPublished = true }, - new SampleImageData { OS = OS.Alpine, Arch = Arch.Arm, DockerfileSuffix = "alpine", IsPublished = true }, - new SampleImageData { OS = OS.Alpine, Arch = Arch.Arm64, DockerfileSuffix = "alpine", IsPublished = true }, - new SampleImageData { OS = OS.JammyChiseled, Arch = Arch.Arm, DockerfileSuffix = "chiseled", IsPublished = true }, - new SampleImageData { OS = OS.JammyChiseled, Arch = Arch.Arm64, DockerfileSuffix = "chiseled", IsPublished = true }, - new SampleImageData { OS = OS.JammyChiseled, Arch = Arch.Amd64, DockerfileSuffix = "chiseled", IsPublished = true }, - - new SampleImageData { OS = OS.BookwormSlim, Arch = Arch.Amd64 }, - new SampleImageData { OS = OS.BookwormSlim, Arch = Arch.Arm }, - new SampleImageData { OS = OS.BookwormSlim, Arch = Arch.Arm64 }, - new SampleImageData { OS = OS.Alpine, Arch = Arch.Arm64, DockerfileSuffix = "alpine" }, - new SampleImageData { OS = OS.Alpine, Arch = Arch.Amd64, DockerfileSuffix = "alpine" }, - new SampleImageData { OS = OS.Alpine, Arch = Arch.Arm64, DockerfileSuffix = "alpine-icu" }, - new SampleImageData { OS = OS.Alpine, Arch = Arch.Amd64, DockerfileSuffix = "alpine-icu" }, - new SampleImageData { OS = OS.BookwormSlim, Arch = Arch.Arm, DockerfileSuffix = "debian" }, - new SampleImageData { OS = OS.BookwormSlim, Arch = Arch.Arm64, DockerfileSuffix = "debian" }, - new SampleImageData { OS = OS.BookwormSlim, Arch = Arch.Amd64, DockerfileSuffix = "debian" }, - new SampleImageData { OS = OS.Jammy, Arch = Arch.Arm, DockerfileSuffix = "ubuntu" }, - new SampleImageData { OS = OS.Jammy, Arch = Arch.Arm64, DockerfileSuffix = "ubuntu" }, - new SampleImageData { OS = OS.Jammy, Arch = Arch.Amd64, DockerfileSuffix = "ubuntu" }, - new SampleImageData { OS = OS.JammyChiseled, Arch = Arch.Arm, DockerfileSuffix = "chiseled" }, - new SampleImageData { OS = OS.JammyChiseled, Arch = Arch.Arm64, DockerfileSuffix = "chiseled" }, - new SampleImageData { OS = OS.JammyChiseled, Arch = Arch.Amd64, DockerfileSuffix = "chiseled" }, + new SampleImageData { OS = OSInfo.Alpine, Arch = Arch.Amd64, DockerfileSuffix = "alpine", IsPublished = true }, + new SampleImageData { OS = OSInfo.Alpine, Arch = Arch.Arm, DockerfileSuffix = "alpine", IsPublished = true }, + new SampleImageData { OS = OSInfo.Alpine, Arch = Arch.Arm64, DockerfileSuffix = "alpine", IsPublished = true }, + new SampleImageData { OS = OSInfo.JammyChiseled, Arch = Arch.Arm, DockerfileSuffix = "chiseled", IsPublished = true }, + new SampleImageData { OS = OSInfo.JammyChiseled, Arch = Arch.Arm64, DockerfileSuffix = "chiseled", IsPublished = true }, + new SampleImageData { OS = OSInfo.JammyChiseled, Arch = Arch.Amd64, DockerfileSuffix = "chiseled", IsPublished = true }, + + new SampleImageData { OS = OSInfo.BookwormSlim, Arch = Arch.Amd64 }, + new SampleImageData { OS = OSInfo.BookwormSlim, Arch = Arch.Arm }, + new SampleImageData { OS = OSInfo.BookwormSlim, Arch = Arch.Arm64 }, + new SampleImageData { OS = OSInfo.Alpine, Arch = Arch.Arm64, DockerfileSuffix = "alpine" }, + new SampleImageData { OS = OSInfo.Alpine, Arch = Arch.Amd64, DockerfileSuffix = "alpine" }, + new SampleImageData { OS = OSInfo.Alpine, Arch = Arch.Arm64, DockerfileSuffix = "alpine-icu" }, + new SampleImageData { OS = OSInfo.Alpine, Arch = Arch.Amd64, DockerfileSuffix = "alpine-icu" }, + new SampleImageData { OS = OSInfo.BookwormSlim, Arch = Arch.Arm, DockerfileSuffix = "debian" }, + new SampleImageData { OS = OSInfo.BookwormSlim, Arch = Arch.Arm64, DockerfileSuffix = "debian" }, + new SampleImageData { OS = OSInfo.BookwormSlim, Arch = Arch.Amd64, DockerfileSuffix = "debian" }, + new SampleImageData { OS = OSInfo.Jammy, Arch = Arch.Arm, DockerfileSuffix = "ubuntu" }, + new SampleImageData { OS = OSInfo.Jammy, Arch = Arch.Arm64, DockerfileSuffix = "ubuntu" }, + new SampleImageData { OS = OSInfo.Jammy, Arch = Arch.Amd64, DockerfileSuffix = "ubuntu" }, + new SampleImageData { OS = OSInfo.JammyChiseled, Arch = Arch.Arm, DockerfileSuffix = "chiseled" }, + new SampleImageData { OS = OSInfo.JammyChiseled, Arch = Arch.Arm64, DockerfileSuffix = "chiseled" }, + new SampleImageData { OS = OSInfo.JammyChiseled, Arch = Arch.Amd64, DockerfileSuffix = "chiseled" }, }; private static readonly SampleImageData[] s_windowsSampleTestData = { - new SampleImageData { OS = OS.NanoServer1809, Arch = Arch.Amd64, IsPublished = true }, - new SampleImageData { OS = OS.NanoServerLtsc2022, Arch = Arch.Amd64, IsPublished = true }, - new SampleImageData { OS = OS.NanoServerLtsc2025, Arch = Arch.Amd64, IsPublished = true }, + new SampleImageData { OS = OSInfo.NanoServer1809, Arch = Arch.Amd64, IsPublished = true }, + new SampleImageData { OS = OSInfo.NanoServerLtsc2022, Arch = Arch.Amd64, IsPublished = true }, + new SampleImageData { OS = OSInfo.NanoServerLtsc2025, Arch = Arch.Amd64, IsPublished = true }, - new SampleImageData { OS = OS.NanoServerLtsc2022, Arch = Arch.Amd64, DockerfileSuffix = "nanoserver" }, - new SampleImageData { OS = OS.NanoServerLtsc2025, Arch = Arch.Amd64, DockerfileSuffix = "nanoserver" }, + new SampleImageData { OS = OSInfo.NanoServerLtsc2022, Arch = Arch.Amd64, DockerfileSuffix = "nanoserver" }, + new SampleImageData { OS = OSInfo.NanoServerLtsc2025, Arch = Arch.Amd64, DockerfileSuffix = "nanoserver" }, // Use Nano Server as the OS even though the Dockerfiles are for Windows Server Core. This is because the OS value // needs to match the filter set by the build/test job. We only produce builds jobs based on what's in the manifest // and the manifest only defines Nano Server-based Dockerfiles. So we just need to piggyback on the Nano Server // jobs in order to test the Windows Server Core samples. - new SampleImageData { OS = OS.NanoServerLtsc2022, Arch = Arch.Amd64, DockerfileSuffix = "windowsservercore" }, - new SampleImageData { OS = OS.NanoServerLtsc2025, Arch = Arch.Amd64, DockerfileSuffix = "windowsservercore" }, - new SampleImageData { OS = OS.NanoServerLtsc2022, Arch = Arch.Amd64, DockerfileSuffix = "windowsservercore-iis" }, - new SampleImageData { OS = OS.NanoServerLtsc2025, Arch = Arch.Amd64, DockerfileSuffix = "windowsservercore-iis" }, + new SampleImageData { OS = OSInfo.NanoServerLtsc2022, Arch = Arch.Amd64, DockerfileSuffix = "windowsservercore" }, + new SampleImageData { OS = OSInfo.NanoServerLtsc2025, Arch = Arch.Amd64, DockerfileSuffix = "windowsservercore" }, + new SampleImageData { OS = OSInfo.NanoServerLtsc2022, Arch = Arch.Amd64, DockerfileSuffix = "windowsservercore-iis" }, + new SampleImageData { OS = OSInfo.NanoServerLtsc2025, Arch = Arch.Amd64, DockerfileSuffix = "windowsservercore-iis" }, }; private static readonly ProductImageData[] s_linuxMonitorTestData = [ - new ProductImageData { Version = V8_1, VersionFamily = V8_0, OS = OS.JammyChiseled, OSTag = OS.UbuntuChiseled, Arch = Arch.Amd64, SupportedImageRepos = DotNetImageRepo.Monitor | DotNetImageRepo.Monitor_Base }, - new ProductImageData { Version = V8_1, VersionFamily = V8_0, OS = OS.JammyChiseled, OSTag = OS.UbuntuChiseled, Arch = Arch.Arm64, SupportedImageRepos = DotNetImageRepo.Monitor | DotNetImageRepo.Monitor_Base }, + new ProductImageData { Version = V8_1, VersionFamily = V8_0, OS = OSInfo.JammyChiseled, OSTag = OS.UbuntuChiseled, Arch = Arch.Amd64, SupportedImageRepos = DotNetImageRepo.Monitor | DotNetImageRepo.Monitor_Base }, + new ProductImageData { Version = V8_1, VersionFamily = V8_0, OS = OSInfo.JammyChiseled, OSTag = OS.UbuntuChiseled, Arch = Arch.Arm64, SupportedImageRepos = DotNetImageRepo.Monitor | DotNetImageRepo.Monitor_Base }, // OSTag does not correspond to OS because platform tags for Azure Linux were not added to the images // Use CBL-Mariner distroless for OSTag since those platform tags exist and won't require tests to understand the difference in tagging. - new ProductImageData { Version = V8_1, VersionFamily = V8_0, OS = OS.AzureLinux30Distroless, OSDir = OS.AzureLinuxDistroless, OSTag = OS.MarinerDistroless, Arch = Arch.Amd64, SupportedImageRepos = DotNetImageRepo.Monitor | DotNetImageRepo.Monitor_Base }, - new ProductImageData { Version = V8_1, VersionFamily = V8_0, OS = OS.AzureLinux30Distroless, OSDir = OS.AzureLinuxDistroless, OSTag = OS.MarinerDistroless, Arch = Arch.Arm64, SupportedImageRepos = DotNetImageRepo.Monitor | DotNetImageRepo.Monitor_Base }, - new ProductImageData { Version = V9_0, VersionFamily = V9_0, OS = OS.AzureLinux30Distroless, OSDir = OS.AzureLinuxDistroless, OSTag = "", Arch = Arch.Amd64, SupportedImageRepos = DotNetImageRepo.Monitor | DotNetImageRepo.Monitor_Base }, - new ProductImageData { Version = V9_0, VersionFamily = V9_0, OS = OS.AzureLinux30Distroless, OSDir = OS.AzureLinuxDistroless, OSTag = "", Arch = Arch.Arm64, SupportedImageRepos = DotNetImageRepo.Monitor | DotNetImageRepo.Monitor_Base }, - new ProductImageData { Version = V10_0, VersionFamily = V10_0, OS = OS.AzureLinux30Distroless, OSDir = OS.AzureLinuxDistroless, OSTag = "", Arch = Arch.Amd64, SupportedImageRepos = DotNetImageRepo.Monitor | DotNetImageRepo.Monitor_Base }, - new ProductImageData { Version = V10_0, VersionFamily = V10_0, OS = OS.AzureLinux30Distroless, OSDir = OS.AzureLinuxDistroless, OSTag = "", Arch = Arch.Arm64, SupportedImageRepos = DotNetImageRepo.Monitor | DotNetImageRepo.Monitor_Base }, + new ProductImageData { Version = V8_1, VersionFamily = V8_0, OS = OSInfo.AzureLinux30Distroless, OSDir = OS.AzureLinuxDistroless, OSTag = OS.MarinerDistroless, Arch = Arch.Amd64, SupportedImageRepos = DotNetImageRepo.Monitor | DotNetImageRepo.Monitor_Base }, + new ProductImageData { Version = V8_1, VersionFamily = V8_0, OS = OSInfo.AzureLinux30Distroless, OSDir = OS.AzureLinuxDistroless, OSTag = OS.MarinerDistroless, Arch = Arch.Arm64, SupportedImageRepos = DotNetImageRepo.Monitor | DotNetImageRepo.Monitor_Base }, + new ProductImageData { Version = V9_0, VersionFamily = V9_0, OS = OSInfo.AzureLinux30Distroless, OSDir = OS.AzureLinuxDistroless, OSTag = "", Arch = Arch.Amd64, SupportedImageRepos = DotNetImageRepo.Monitor | DotNetImageRepo.Monitor_Base }, + new ProductImageData { Version = V9_0, VersionFamily = V9_0, OS = OSInfo.AzureLinux30Distroless, OSDir = OS.AzureLinuxDistroless, OSTag = "", Arch = Arch.Arm64, SupportedImageRepos = DotNetImageRepo.Monitor | DotNetImageRepo.Monitor_Base }, + new ProductImageData { Version = V10_0, VersionFamily = V10_0, OS = OSInfo.AzureLinux30Distroless, OSDir = OS.AzureLinuxDistroless, OSTag = "", Arch = Arch.Amd64, SupportedImageRepos = DotNetImageRepo.Monitor | DotNetImageRepo.Monitor_Base }, + new ProductImageData { Version = V10_0, VersionFamily = V10_0, OS = OSInfo.AzureLinux30Distroless, OSDir = OS.AzureLinuxDistroless, OSTag = "", Arch = Arch.Arm64, SupportedImageRepos = DotNetImageRepo.Monitor | DotNetImageRepo.Monitor_Base }, ]; private static readonly ProductImageData[] s_windowsMonitorTestData = @@ -467,7 +467,7 @@ public static class TestData new() { Version = V13_2, VersionFamily = V9_0, - OS = OS.AzureLinux30Distroless, + OS = OSInfo.AzureLinux30Distroless, OSTag = "", OSDir = OS.AzureLinuxDistroless, Arch = Arch.Amd64, @@ -476,7 +476,7 @@ public static class TestData new() { Version = V13_2, VersionFamily = V9_0, - OS = OS.AzureLinux30Distroless, + OS = OSInfo.AzureLinux30Distroless, OSTag = "", OSDir = OS.AzureLinuxDistroless, Arch = Arch.Arm64, @@ -489,7 +489,7 @@ public static class TestData new() { Version = new ImageVersion(new Version(2,3), isPreview: true), VersionFamily = V9_0, - OS = OS.AzureLinux30Distroless, + OS = OSInfo.AzureLinux30Distroless, OSTag = "", OSDir = OS.AzureLinuxDistroless, Arch = Arch.Amd64, @@ -498,7 +498,7 @@ public static class TestData new() { Version = new ImageVersion(new Version(2,3), isPreview: true), VersionFamily = V9_0, - OS = OS.AzureLinux30Distroless, + OS = OSInfo.AzureLinux30Distroless, OSTag = "", OSDir = OS.AzureLinuxDistroless, Arch = Arch.Arm64, From 417f09464cd9d327ab87bea54c801524007b86d5 Mon Sep 17 00:00:00 2001 From: Logan Bussell Date: Mon, 22 Dec 2025 12:00:28 -0800 Subject: [PATCH 03/14] Remove versionless OSInfos --- tests/Microsoft.DotNet.Docker.Tests/OSInfo.cs | 27 +++---------------- .../Microsoft.DotNet.Docker.Tests/TestData.cs | 14 +++++----- 2 files changed, 10 insertions(+), 31 deletions(-) diff --git a/tests/Microsoft.DotNet.Docker.Tests/OSInfo.cs b/tests/Microsoft.DotNet.Docker.Tests/OSInfo.cs index 51bc6c3d6c..763617d557 100644 --- a/tests/Microsoft.DotNet.Docker.Tests/OSInfo.cs +++ b/tests/Microsoft.DotNet.Docker.Tests/OSInfo.cs @@ -35,7 +35,7 @@ public enum OSFamily public sealed record OSInfo( OSType Type, OSFamily Family, - string? Version, + string Version, string TagName, string DisplayName, bool IsDistroless) @@ -75,8 +75,8 @@ public sealed record OSInfo( public override string ToString() => TagName; // Alpine - public static OSInfo Alpine { get; } = new( - OSType.Linux, OSFamily.Alpine, null, OS.Alpine, "Alpine", IsDistroless: false); + public static OSInfo AlpineFloating { get; } = new( + OSType.Linux, OSFamily.Alpine, "", OS.Alpine, "Alpine", IsDistroless: false); public static OSInfo Alpine321 { get; } = new( OSType.Linux, OSFamily.Alpine, "3.21", OS.Alpine321, "Alpine 3.21", IsDistroless: false); @@ -88,12 +88,6 @@ public sealed record OSInfo( OSType.Linux, OSFamily.Alpine, "3.23", OS.Alpine323, "Alpine 3.23", IsDistroless: false); // Azure Linux - public static OSInfo AzureLinux { get; } = new( - OSType.Linux, OSFamily.AzureLinux, null, OS.AzureLinux, "Azure Linux", IsDistroless: false); - - public static OSInfo AzureLinuxDistroless { get; } = new( - OSType.Linux, OSFamily.AzureLinux, null, OS.AzureLinuxDistroless, "Azure Linux (Distroless)", IsDistroless: true); - public static OSInfo AzureLinux30 { get; } = new( OSType.Linux, OSFamily.AzureLinux, "3.0", OS.AzureLinux30, "Azure Linux 3.0", IsDistroless: false); @@ -108,12 +102,6 @@ public sealed record OSInfo( OSType.Linux, OSFamily.Debian, "12", OS.BookwormSlim, "Debian 12 (Bookworm Slim)", IsDistroless: false); // Mariner (CBL-Mariner) - public static OSInfo Mariner { get; } = new( - OSType.Linux, OSFamily.Mariner, null, OS.Mariner, "CBL-Mariner", IsDistroless: false); - - public static OSInfo MarinerDistroless { get; } = new( - OSType.Linux, OSFamily.Mariner, null, OS.MarinerDistroless, "CBL-Mariner (Distroless)", IsDistroless: true); - public static OSInfo Mariner20 { get; } = new( OSType.Linux, OSFamily.Mariner, "2.0", OS.Mariner20, "CBL-Mariner 2.0", IsDistroless: false); @@ -139,13 +127,7 @@ public sealed record OSInfo( public static OSInfo ResoluteChiseled { get; } = new( OSType.Linux, OSFamily.Ubuntu, "26.04", OS.ResoluteChiseled, "Ubuntu 26.04 (Resolute Chiseled)", IsDistroless: true); - public static OSInfo UbuntuChiseled { get; } = new( - OSType.Linux, OSFamily.Ubuntu, null, OS.UbuntuChiseled, "Ubuntu (Chiseled)", IsDistroless: true); - // Windows - Nano Server - public static OSInfo NanoServer { get; } = new( - OSType.Windows, OSFamily.NanoServer, null, OS.NanoServer, "Nano Server", IsDistroless: false); - public static OSInfo NanoServer1809 { get; } = new( OSType.Windows, OSFamily.NanoServer, "1809", OS.NanoServer1809, "Nano Server 1809", IsDistroless: false); @@ -156,9 +138,6 @@ public sealed record OSInfo( OSType.Windows, OSFamily.NanoServer, "LTSC 2025", OS.NanoServerLtsc2025, "Nano Server LTSC 2025", IsDistroless: false); // Windows - Server Core - public static OSInfo ServerCore { get; } = new( - OSType.Windows, OSFamily.WindowsServerCore, null, OS.ServerCore, "Windows Server Core", IsDistroless: false); - public static OSInfo ServerCoreLtsc2019 { get; } = new( OSType.Windows, OSFamily.WindowsServerCore, "LTSC 2019", OS.ServerCoreLtsc2019, "Windows Server Core LTSC 2019", IsDistroless: false); diff --git a/tests/Microsoft.DotNet.Docker.Tests/TestData.cs b/tests/Microsoft.DotNet.Docker.Tests/TestData.cs index efaa04c092..569a4ee231 100644 --- a/tests/Microsoft.DotNet.Docker.Tests/TestData.cs +++ b/tests/Microsoft.DotNet.Docker.Tests/TestData.cs @@ -400,9 +400,9 @@ public static class TestData private static readonly SampleImageData[] s_linuxSampleTestData = { - new SampleImageData { OS = OSInfo.Alpine, Arch = Arch.Amd64, DockerfileSuffix = "alpine", IsPublished = true }, - new SampleImageData { OS = OSInfo.Alpine, Arch = Arch.Arm, DockerfileSuffix = "alpine", IsPublished = true }, - new SampleImageData { OS = OSInfo.Alpine, Arch = Arch.Arm64, DockerfileSuffix = "alpine", IsPublished = true }, + new SampleImageData { OS = OSInfo.AlpineFloating, Arch = Arch.Amd64, DockerfileSuffix = "alpine", IsPublished = true }, + new SampleImageData { OS = OSInfo.AlpineFloating, Arch = Arch.Arm, DockerfileSuffix = "alpine", IsPublished = true }, + new SampleImageData { OS = OSInfo.AlpineFloating, Arch = Arch.Arm64, DockerfileSuffix = "alpine", IsPublished = true }, new SampleImageData { OS = OSInfo.JammyChiseled, Arch = Arch.Arm, DockerfileSuffix = "chiseled", IsPublished = true }, new SampleImageData { OS = OSInfo.JammyChiseled, Arch = Arch.Arm64, DockerfileSuffix = "chiseled", IsPublished = true }, new SampleImageData { OS = OSInfo.JammyChiseled, Arch = Arch.Amd64, DockerfileSuffix = "chiseled", IsPublished = true }, @@ -410,10 +410,10 @@ public static class TestData new SampleImageData { OS = OSInfo.BookwormSlim, Arch = Arch.Amd64 }, new SampleImageData { OS = OSInfo.BookwormSlim, Arch = Arch.Arm }, new SampleImageData { OS = OSInfo.BookwormSlim, Arch = Arch.Arm64 }, - new SampleImageData { OS = OSInfo.Alpine, Arch = Arch.Arm64, DockerfileSuffix = "alpine" }, - new SampleImageData { OS = OSInfo.Alpine, Arch = Arch.Amd64, DockerfileSuffix = "alpine" }, - new SampleImageData { OS = OSInfo.Alpine, Arch = Arch.Arm64, DockerfileSuffix = "alpine-icu" }, - new SampleImageData { OS = OSInfo.Alpine, Arch = Arch.Amd64, DockerfileSuffix = "alpine-icu" }, + new SampleImageData { OS = OSInfo.AlpineFloating, Arch = Arch.Arm64, DockerfileSuffix = "alpine" }, + new SampleImageData { OS = OSInfo.AlpineFloating, Arch = Arch.Amd64, DockerfileSuffix = "alpine" }, + new SampleImageData { OS = OSInfo.AlpineFloating, Arch = Arch.Arm64, DockerfileSuffix = "alpine-icu" }, + new SampleImageData { OS = OSInfo.AlpineFloating, Arch = Arch.Amd64, DockerfileSuffix = "alpine-icu" }, new SampleImageData { OS = OSInfo.BookwormSlim, Arch = Arch.Arm, DockerfileSuffix = "debian" }, new SampleImageData { OS = OSInfo.BookwormSlim, Arch = Arch.Arm64, DockerfileSuffix = "debian" }, new SampleImageData { OS = OSInfo.BookwormSlim, Arch = Arch.Amd64, DockerfileSuffix = "debian" }, From 6642e6417c2626fb78e13c2a8baa16ab6c91df14 Mon Sep 17 00:00:00 2001 From: Logan Bussell Date: Mon, 22 Dec 2025 13:10:10 -0800 Subject: [PATCH 04/14] Refactor OSInfo to use required Version and with expressions - Make Version property required (non-nullable string) - Remove un-versioned OSInfo instances (except AlpineFloating for samples) - Use C# record 'with' expressions to derive related records: - Alpine versions from AlpineFloating - Distroless variants from base OS (AzureLinux, Mariner, Ubuntu) - Slim variant from Bookworm - Windows version variants from base versions --- tests/Microsoft.DotNet.Docker.Tests/OSInfo.cs | 52 +++++++++---------- 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/tests/Microsoft.DotNet.Docker.Tests/OSInfo.cs b/tests/Microsoft.DotNet.Docker.Tests/OSInfo.cs index 763617d557..1efdbc1b3a 100644 --- a/tests/Microsoft.DotNet.Docker.Tests/OSInfo.cs +++ b/tests/Microsoft.DotNet.Docker.Tests/OSInfo.cs @@ -78,72 +78,72 @@ public sealed record OSInfo( public static OSInfo AlpineFloating { get; } = new( OSType.Linux, OSFamily.Alpine, "", OS.Alpine, "Alpine", IsDistroless: false); - public static OSInfo Alpine321 { get; } = new( - OSType.Linux, OSFamily.Alpine, "3.21", OS.Alpine321, "Alpine 3.21", IsDistroless: false); + public static OSInfo Alpine321 { get; } = AlpineFloating with + { Version = "3.21", TagName = OS.Alpine321, DisplayName = "Alpine 3.21" }; - public static OSInfo Alpine322 { get; } = new( - OSType.Linux, OSFamily.Alpine, "3.22", OS.Alpine322, "Alpine 3.22", IsDistroless: false); + public static OSInfo Alpine322 { get; } = AlpineFloating with + { Version = "3.22", TagName = OS.Alpine322, DisplayName = "Alpine 3.22" }; - public static OSInfo Alpine323 { get; } = new( - OSType.Linux, OSFamily.Alpine, "3.23", OS.Alpine323, "Alpine 3.23", IsDistroless: false); + public static OSInfo Alpine323 { get; } = AlpineFloating with + { Version = "3.23", TagName = OS.Alpine323, DisplayName = "Alpine 3.23" }; // Azure Linux public static OSInfo AzureLinux30 { get; } = new( OSType.Linux, OSFamily.AzureLinux, "3.0", OS.AzureLinux30, "Azure Linux 3.0", IsDistroless: false); - public static OSInfo AzureLinux30Distroless { get; } = new( - OSType.Linux, OSFamily.AzureLinux, "3.0", OS.AzureLinux30Distroless, "Azure Linux 3.0 (Distroless)", IsDistroless: true); + public static OSInfo AzureLinux30Distroless { get; } = AzureLinux30 with + { TagName = OS.AzureLinux30Distroless, DisplayName = "Azure Linux 3.0 (Distroless)", IsDistroless = true }; // Debian public static OSInfo Bookworm { get; } = new( OSType.Linux, OSFamily.Debian, "12", OS.Bookworm, "Debian 12 (Bookworm)", IsDistroless: false); - public static OSInfo BookwormSlim { get; } = new( - OSType.Linux, OSFamily.Debian, "12", OS.BookwormSlim, "Debian 12 (Bookworm Slim)", IsDistroless: false); + public static OSInfo BookwormSlim { get; } = Bookworm with + { TagName = OS.BookwormSlim, DisplayName = "Debian 12 (Bookworm Slim)" }; // Mariner (CBL-Mariner) public static OSInfo Mariner20 { get; } = new( OSType.Linux, OSFamily.Mariner, "2.0", OS.Mariner20, "CBL-Mariner 2.0", IsDistroless: false); - public static OSInfo Mariner20Distroless { get; } = new( - OSType.Linux, OSFamily.Mariner, "2.0", OS.Mariner20Distroless, "CBL-Mariner 2.0 (Distroless)", IsDistroless: true); + public static OSInfo Mariner20Distroless { get; } = Mariner20 with + { TagName = OS.Mariner20Distroless, DisplayName = "CBL-Mariner 2.0 (Distroless)", IsDistroless = true }; // Ubuntu public static OSInfo Jammy { get; } = new( OSType.Linux, OSFamily.Ubuntu, "22.04", OS.Jammy, "Ubuntu 22.04 (Jammy)", IsDistroless: false); - public static OSInfo JammyChiseled { get; } = new( - OSType.Linux, OSFamily.Ubuntu, "22.04", OS.JammyChiseled, "Ubuntu 22.04 (Jammy Chiseled)", IsDistroless: true); + public static OSInfo JammyChiseled { get; } = Jammy with + { TagName = OS.JammyChiseled, DisplayName = "Ubuntu 22.04 (Jammy Chiseled)", IsDistroless = true }; public static OSInfo Noble { get; } = new( OSType.Linux, OSFamily.Ubuntu, "24.04", OS.Noble, "Ubuntu 24.04 (Noble)", IsDistroless: false); - public static OSInfo NobleChiseled { get; } = new( - OSType.Linux, OSFamily.Ubuntu, "24.04", OS.NobleChiseled, "Ubuntu 24.04 (Noble Chiseled)", IsDistroless: true); + public static OSInfo NobleChiseled { get; } = Noble with + { TagName = OS.NobleChiseled, DisplayName = "Ubuntu 24.04 (Noble Chiseled)", IsDistroless = true }; public static OSInfo Resolute { get; } = new( OSType.Linux, OSFamily.Ubuntu, "26.04", OS.Resolute, "Ubuntu 26.04 (Resolute)", IsDistroless: false); - public static OSInfo ResoluteChiseled { get; } = new( - OSType.Linux, OSFamily.Ubuntu, "26.04", OS.ResoluteChiseled, "Ubuntu 26.04 (Resolute Chiseled)", IsDistroless: true); + public static OSInfo ResoluteChiseled { get; } = Resolute with + { TagName = OS.ResoluteChiseled, DisplayName = "Ubuntu 26.04 (Resolute Chiseled)", IsDistroless = true }; // Windows - Nano Server public static OSInfo NanoServer1809 { get; } = new( OSType.Windows, OSFamily.NanoServer, "1809", OS.NanoServer1809, "Nano Server 1809", IsDistroless: false); - public static OSInfo NanoServerLtsc2022 { get; } = new( - OSType.Windows, OSFamily.NanoServer, "LTSC 2022", OS.NanoServerLtsc2022, "Nano Server LTSC 2022", IsDistroless: false); + public static OSInfo NanoServerLtsc2022 { get; } = NanoServer1809 with + { Version = "LTSC 2022", TagName = OS.NanoServerLtsc2022, DisplayName = "Nano Server LTSC 2022" }; - public static OSInfo NanoServerLtsc2025 { get; } = new( - OSType.Windows, OSFamily.NanoServer, "LTSC 2025", OS.NanoServerLtsc2025, "Nano Server LTSC 2025", IsDistroless: false); + public static OSInfo NanoServerLtsc2025 { get; } = NanoServer1809 with + { Version = "LTSC 2025", TagName = OS.NanoServerLtsc2025, DisplayName = "Nano Server LTSC 2025" }; // Windows - Server Core public static OSInfo ServerCoreLtsc2019 { get; } = new( OSType.Windows, OSFamily.WindowsServerCore, "LTSC 2019", OS.ServerCoreLtsc2019, "Windows Server Core LTSC 2019", IsDistroless: false); - public static OSInfo ServerCoreLtsc2022 { get; } = new( - OSType.Windows, OSFamily.WindowsServerCore, "LTSC 2022", OS.ServerCoreLtsc2022, "Windows Server Core LTSC 2022", IsDistroless: false); + public static OSInfo ServerCoreLtsc2022 { get; } = ServerCoreLtsc2019 with + { Version = "LTSC 2022", TagName = OS.ServerCoreLtsc2022, DisplayName = "Windows Server Core LTSC 2022" }; - public static OSInfo ServerCoreLtsc2025 { get; } = new( - OSType.Windows, OSFamily.WindowsServerCore, "LTSC 2025", OS.ServerCoreLtsc2025, "Windows Server Core LTSC 2025", IsDistroless: false); + public static OSInfo ServerCoreLtsc2025 { get; } = ServerCoreLtsc2019 with + { Version = "LTSC 2025", TagName = OS.ServerCoreLtsc2025, DisplayName = "Windows Server Core LTSC 2025" }; } From b324c412d9475f8a97f1f9d668f1d97d924a6d08 Mon Sep 17 00:00:00 2001 From: Logan Bussell Date: Mon, 22 Dec 2025 13:14:09 -0800 Subject: [PATCH 05/14] Make DisplayName a computed property on OSInfo - Remove DisplayName from record constructor parameters - Compute DisplayName from Family and Version using switch expression - Remove DisplayName from all with expressions and constructor calls --- tests/Microsoft.DotNet.Docker.Tests/OSInfo.cs | 68 ++++++++++++------- 1 file changed, 45 insertions(+), 23 deletions(-) diff --git a/tests/Microsoft.DotNet.Docker.Tests/OSInfo.cs b/tests/Microsoft.DotNet.Docker.Tests/OSInfo.cs index 1efdbc1b3a..5d9af21cd6 100644 --- a/tests/Microsoft.DotNet.Docker.Tests/OSInfo.cs +++ b/tests/Microsoft.DotNet.Docker.Tests/OSInfo.cs @@ -37,9 +37,31 @@ public sealed record OSInfo( OSFamily Family, string Version, string TagName, - string DisplayName, bool IsDistroless) { + /// + /// Gets the display name for this OS, combining family and version. + /// + public string DisplayName + { + get + { + string familyName = Family switch + { + OSFamily.Alpine => "Alpine", + OSFamily.AzureLinux => "Azure Linux", + OSFamily.Debian => "Debian", + OSFamily.Mariner => "CBL-Mariner", + OSFamily.Ubuntu => "Ubuntu", + OSFamily.NanoServer => "Nano Server", + OSFamily.WindowsServerCore => "Windows Server Core", + _ => Family.ToString() + }; + + return string.IsNullOrEmpty(Version) ? familyName : $"{familyName} {Version}"; + } + } + /// /// Gets a value indicating whether this OS is Windows-based. /// @@ -76,74 +98,74 @@ public sealed record OSInfo( // Alpine public static OSInfo AlpineFloating { get; } = new( - OSType.Linux, OSFamily.Alpine, "", OS.Alpine, "Alpine", IsDistroless: false); + OSType.Linux, OSFamily.Alpine, "", OS.Alpine, IsDistroless: false); public static OSInfo Alpine321 { get; } = AlpineFloating with - { Version = "3.21", TagName = OS.Alpine321, DisplayName = "Alpine 3.21" }; + { Version = "3.21", TagName = OS.Alpine321 }; public static OSInfo Alpine322 { get; } = AlpineFloating with - { Version = "3.22", TagName = OS.Alpine322, DisplayName = "Alpine 3.22" }; + { Version = "3.22", TagName = OS.Alpine322 }; public static OSInfo Alpine323 { get; } = AlpineFloating with - { Version = "3.23", TagName = OS.Alpine323, DisplayName = "Alpine 3.23" }; + { Version = "3.23", TagName = OS.Alpine323 }; // Azure Linux public static OSInfo AzureLinux30 { get; } = new( - OSType.Linux, OSFamily.AzureLinux, "3.0", OS.AzureLinux30, "Azure Linux 3.0", IsDistroless: false); + OSType.Linux, OSFamily.AzureLinux, "3.0", OS.AzureLinux30, IsDistroless: false); public static OSInfo AzureLinux30Distroless { get; } = AzureLinux30 with - { TagName = OS.AzureLinux30Distroless, DisplayName = "Azure Linux 3.0 (Distroless)", IsDistroless = true }; + { TagName = OS.AzureLinux30Distroless, IsDistroless = true }; // Debian public static OSInfo Bookworm { get; } = new( - OSType.Linux, OSFamily.Debian, "12", OS.Bookworm, "Debian 12 (Bookworm)", IsDistroless: false); + OSType.Linux, OSFamily.Debian, "12", OS.Bookworm, IsDistroless: false); public static OSInfo BookwormSlim { get; } = Bookworm with - { TagName = OS.BookwormSlim, DisplayName = "Debian 12 (Bookworm Slim)" }; + { TagName = OS.BookwormSlim }; // Mariner (CBL-Mariner) public static OSInfo Mariner20 { get; } = new( - OSType.Linux, OSFamily.Mariner, "2.0", OS.Mariner20, "CBL-Mariner 2.0", IsDistroless: false); + OSType.Linux, OSFamily.Mariner, "2.0", OS.Mariner20, IsDistroless: false); public static OSInfo Mariner20Distroless { get; } = Mariner20 with - { TagName = OS.Mariner20Distroless, DisplayName = "CBL-Mariner 2.0 (Distroless)", IsDistroless = true }; + { TagName = OS.Mariner20Distroless, IsDistroless = true }; // Ubuntu public static OSInfo Jammy { get; } = new( - OSType.Linux, OSFamily.Ubuntu, "22.04", OS.Jammy, "Ubuntu 22.04 (Jammy)", IsDistroless: false); + OSType.Linux, OSFamily.Ubuntu, "22.04", OS.Jammy, IsDistroless: false); public static OSInfo JammyChiseled { get; } = Jammy with - { TagName = OS.JammyChiseled, DisplayName = "Ubuntu 22.04 (Jammy Chiseled)", IsDistroless = true }; + { TagName = OS.JammyChiseled, IsDistroless = true }; public static OSInfo Noble { get; } = new( - OSType.Linux, OSFamily.Ubuntu, "24.04", OS.Noble, "Ubuntu 24.04 (Noble)", IsDistroless: false); + OSType.Linux, OSFamily.Ubuntu, "24.04", OS.Noble, IsDistroless: false); public static OSInfo NobleChiseled { get; } = Noble with - { TagName = OS.NobleChiseled, DisplayName = "Ubuntu 24.04 (Noble Chiseled)", IsDistroless = true }; + { TagName = OS.NobleChiseled, IsDistroless = true }; public static OSInfo Resolute { get; } = new( - OSType.Linux, OSFamily.Ubuntu, "26.04", OS.Resolute, "Ubuntu 26.04 (Resolute)", IsDistroless: false); + OSType.Linux, OSFamily.Ubuntu, "26.04", OS.Resolute, IsDistroless: false); public static OSInfo ResoluteChiseled { get; } = Resolute with - { TagName = OS.ResoluteChiseled, DisplayName = "Ubuntu 26.04 (Resolute Chiseled)", IsDistroless = true }; + { TagName = OS.ResoluteChiseled, IsDistroless = true }; // Windows - Nano Server public static OSInfo NanoServer1809 { get; } = new( - OSType.Windows, OSFamily.NanoServer, "1809", OS.NanoServer1809, "Nano Server 1809", IsDistroless: false); + OSType.Windows, OSFamily.NanoServer, "1809", OS.NanoServer1809, IsDistroless: false); public static OSInfo NanoServerLtsc2022 { get; } = NanoServer1809 with - { Version = "LTSC 2022", TagName = OS.NanoServerLtsc2022, DisplayName = "Nano Server LTSC 2022" }; + { Version = "LTSC 2022", TagName = OS.NanoServerLtsc2022 }; public static OSInfo NanoServerLtsc2025 { get; } = NanoServer1809 with - { Version = "LTSC 2025", TagName = OS.NanoServerLtsc2025, DisplayName = "Nano Server LTSC 2025" }; + { Version = "LTSC 2025", TagName = OS.NanoServerLtsc2025 }; // Windows - Server Core public static OSInfo ServerCoreLtsc2019 { get; } = new( - OSType.Windows, OSFamily.WindowsServerCore, "LTSC 2019", OS.ServerCoreLtsc2019, "Windows Server Core LTSC 2019", IsDistroless: false); + OSType.Windows, OSFamily.WindowsServerCore, "LTSC 2019", OS.ServerCoreLtsc2019, IsDistroless: false); public static OSInfo ServerCoreLtsc2022 { get; } = ServerCoreLtsc2019 with - { Version = "LTSC 2022", TagName = OS.ServerCoreLtsc2022, DisplayName = "Windows Server Core LTSC 2022" }; + { Version = "LTSC 2022", TagName = OS.ServerCoreLtsc2022 }; public static OSInfo ServerCoreLtsc2025 { get; } = ServerCoreLtsc2019 with - { Version = "LTSC 2025", TagName = OS.ServerCoreLtsc2025, DisplayName = "Windows Server Core LTSC 2025" }; + { Version = "LTSC 2025", TagName = OS.ServerCoreLtsc2025 }; } From 7b5b2409defd547986f81a2ecc6102d187e98a98 Mon Sep 17 00:00:00 2001 From: Logan Bussell Date: Mon, 22 Dec 2025 13:16:10 -0800 Subject: [PATCH 06/14] Make TagName a computed property on OSInfo - Add Codename parameter for OS base tag (e.g., 'jammy', 'bookworm', 'alpine') - Add IsChiseled and IsSlim as constructor parameters (with defaults) - Compute TagName from Family, Version, Codename, and variant flags - Remove all TagName assignments from with expressions - Simplify derived OS definitions to only specify changed properties --- tests/Microsoft.DotNet.Docker.Tests/OSInfo.cs | 102 ++++++++++-------- 1 file changed, 55 insertions(+), 47 deletions(-) diff --git a/tests/Microsoft.DotNet.Docker.Tests/OSInfo.cs b/tests/Microsoft.DotNet.Docker.Tests/OSInfo.cs index 5d9af21cd6..94517d3ec6 100644 --- a/tests/Microsoft.DotNet.Docker.Tests/OSInfo.cs +++ b/tests/Microsoft.DotNet.Docker.Tests/OSInfo.cs @@ -36,9 +36,40 @@ public sealed record OSInfo( OSType Type, OSFamily Family, string Version, - string TagName, - bool IsDistroless) + string Codename, + bool IsDistroless, + bool IsChiseled = false, + bool IsSlim = false) { + /// + /// Gets the tag name for this OS, used in Docker image tags. + /// + public string TagName + { + get + { + string baseTag = Family switch + { + OSFamily.Alpine => string.IsNullOrEmpty(Version) ? "alpine" : $"alpine{Version}", + OSFamily.AzureLinux => $"azurelinux{Version}", + OSFamily.Debian => Codename, + OSFamily.Mariner => $"cbl-mariner{Version}", + OSFamily.Ubuntu => Codename, + OSFamily.NanoServer => $"nanoserver-{Version.ToLowerInvariant().Replace(" ", "")}", + OSFamily.WindowsServerCore => $"windowsservercore-{Version.ToLowerInvariant().Replace(" ", "")}", + _ => Codename + }; + + return (IsDistroless, IsChiseled, IsSlim) switch + { + (_, true, _) => $"{baseTag}-chiseled", + (true, _, _) => $"{baseTag}-distroless", + (_, _, true) => $"{baseTag}-slim", + _ => baseTag + }; + } + } + /// /// Gets the display name for this OS, combining family and version. /// @@ -67,16 +98,6 @@ public string DisplayName /// public bool IsWindows => Type == OSType.Windows; - /// - /// Gets a value indicating whether this OS uses Ubuntu Chiseled images. - /// - public bool IsChiseled => TagName.Contains(OS.ChiseledSuffix); - - /// - /// Gets a value indicating whether this OS uses slim images. - /// - public bool IsSlim => TagName.Contains(OS.SlimSuffix); - /// /// Checks if the TagName contains the specified value. /// Provides backward compatibility with string-based OS checks. @@ -98,74 +119,61 @@ public string DisplayName // Alpine public static OSInfo AlpineFloating { get; } = new( - OSType.Linux, OSFamily.Alpine, "", OS.Alpine, IsDistroless: false); + OSType.Linux, OSFamily.Alpine, "", Codename: "alpine", IsDistroless: false); - public static OSInfo Alpine321 { get; } = AlpineFloating with - { Version = "3.21", TagName = OS.Alpine321 }; + public static OSInfo Alpine321 { get; } = AlpineFloating with { Version = "3.21" }; - public static OSInfo Alpine322 { get; } = AlpineFloating with - { Version = "3.22", TagName = OS.Alpine322 }; + public static OSInfo Alpine322 { get; } = AlpineFloating with { Version = "3.22" }; - public static OSInfo Alpine323 { get; } = AlpineFloating with - { Version = "3.23", TagName = OS.Alpine323 }; + public static OSInfo Alpine323 { get; } = AlpineFloating with { Version = "3.23" }; // Azure Linux public static OSInfo AzureLinux30 { get; } = new( - OSType.Linux, OSFamily.AzureLinux, "3.0", OS.AzureLinux30, IsDistroless: false); + OSType.Linux, OSFamily.AzureLinux, "3.0", Codename: "azurelinux", IsDistroless: false); - public static OSInfo AzureLinux30Distroless { get; } = AzureLinux30 with - { TagName = OS.AzureLinux30Distroless, IsDistroless = true }; + public static OSInfo AzureLinux30Distroless { get; } = AzureLinux30 with { IsDistroless = true }; // Debian public static OSInfo Bookworm { get; } = new( - OSType.Linux, OSFamily.Debian, "12", OS.Bookworm, IsDistroless: false); + OSType.Linux, OSFamily.Debian, "12", Codename: "bookworm", IsDistroless: false); - public static OSInfo BookwormSlim { get; } = Bookworm with - { TagName = OS.BookwormSlim }; + public static OSInfo BookwormSlim { get; } = Bookworm with { IsSlim = true }; // Mariner (CBL-Mariner) public static OSInfo Mariner20 { get; } = new( - OSType.Linux, OSFamily.Mariner, "2.0", OS.Mariner20, IsDistroless: false); + OSType.Linux, OSFamily.Mariner, "2.0", Codename: "cbl-mariner", IsDistroless: false); - public static OSInfo Mariner20Distroless { get; } = Mariner20 with - { TagName = OS.Mariner20Distroless, IsDistroless = true }; + public static OSInfo Mariner20Distroless { get; } = Mariner20 with { IsDistroless = true }; // Ubuntu public static OSInfo Jammy { get; } = new( - OSType.Linux, OSFamily.Ubuntu, "22.04", OS.Jammy, IsDistroless: false); + OSType.Linux, OSFamily.Ubuntu, "22.04", Codename: "jammy", IsDistroless: false); - public static OSInfo JammyChiseled { get; } = Jammy with - { TagName = OS.JammyChiseled, IsDistroless = true }; + public static OSInfo JammyChiseled { get; } = Jammy with { IsDistroless = true, IsChiseled = true }; public static OSInfo Noble { get; } = new( - OSType.Linux, OSFamily.Ubuntu, "24.04", OS.Noble, IsDistroless: false); + OSType.Linux, OSFamily.Ubuntu, "24.04", Codename: "noble", IsDistroless: false); - public static OSInfo NobleChiseled { get; } = Noble with - { TagName = OS.NobleChiseled, IsDistroless = true }; + public static OSInfo NobleChiseled { get; } = Noble with { IsDistroless = true, IsChiseled = true }; public static OSInfo Resolute { get; } = new( - OSType.Linux, OSFamily.Ubuntu, "26.04", OS.Resolute, IsDistroless: false); + OSType.Linux, OSFamily.Ubuntu, "26.04", Codename: "resolute", IsDistroless: false); - public static OSInfo ResoluteChiseled { get; } = Resolute with - { TagName = OS.ResoluteChiseled, IsDistroless = true }; + public static OSInfo ResoluteChiseled { get; } = Resolute with { IsDistroless = true, IsChiseled = true }; // Windows - Nano Server public static OSInfo NanoServer1809 { get; } = new( - OSType.Windows, OSFamily.NanoServer, "1809", OS.NanoServer1809, IsDistroless: false); + OSType.Windows, OSFamily.NanoServer, "1809", Codename: "nanoserver", IsDistroless: false); - public static OSInfo NanoServerLtsc2022 { get; } = NanoServer1809 with - { Version = "LTSC 2022", TagName = OS.NanoServerLtsc2022 }; + public static OSInfo NanoServerLtsc2022 { get; } = NanoServer1809 with { Version = "LTSC 2022" }; - public static OSInfo NanoServerLtsc2025 { get; } = NanoServer1809 with - { Version = "LTSC 2025", TagName = OS.NanoServerLtsc2025 }; + public static OSInfo NanoServerLtsc2025 { get; } = NanoServer1809 with { Version = "LTSC 2025" }; // Windows - Server Core public static OSInfo ServerCoreLtsc2019 { get; } = new( - OSType.Windows, OSFamily.WindowsServerCore, "LTSC 2019", OS.ServerCoreLtsc2019, IsDistroless: false); + OSType.Windows, OSFamily.WindowsServerCore, "LTSC 2019", Codename: "windowsservercore", IsDistroless: false); - public static OSInfo ServerCoreLtsc2022 { get; } = ServerCoreLtsc2019 with - { Version = "LTSC 2022", TagName = OS.ServerCoreLtsc2022 }; + public static OSInfo ServerCoreLtsc2022 { get; } = ServerCoreLtsc2019 with { Version = "LTSC 2022" }; - public static OSInfo ServerCoreLtsc2025 { get; } = ServerCoreLtsc2019 with - { Version = "LTSC 2025", TagName = OS.ServerCoreLtsc2025 }; + public static OSInfo ServerCoreLtsc2025 { get; } = ServerCoreLtsc2019 with { Version = "LTSC 2025" }; } From 2138a564f1291cd05d11396535c8b6139536472c Mon Sep 17 00:00:00 2001 From: Logan Bussell Date: Mon, 22 Dec 2025 13:17:27 -0800 Subject: [PATCH 07/14] Remove IsChiseled and IsSlim properties from OSInfo - IsChiseled is synonymous with IsDistroless for Ubuntu (chiseled suffix) - All Debian images are slim (always append -slim suffix) - Simplify TagName computation based on Family and IsDistroless - Remove Bookworm (keep only BookwormSlim since all Debian is slim) --- tests/Microsoft.DotNet.Docker.Tests/OSInfo.cs | 23 ++++++++----------- 1 file changed, 9 insertions(+), 14 deletions(-) diff --git a/tests/Microsoft.DotNet.Docker.Tests/OSInfo.cs b/tests/Microsoft.DotNet.Docker.Tests/OSInfo.cs index 94517d3ec6..2c789e070a 100644 --- a/tests/Microsoft.DotNet.Docker.Tests/OSInfo.cs +++ b/tests/Microsoft.DotNet.Docker.Tests/OSInfo.cs @@ -37,9 +37,7 @@ public sealed record OSInfo( OSFamily Family, string Version, string Codename, - bool IsDistroless, - bool IsChiseled = false, - bool IsSlim = false) + bool IsDistroless) { /// /// Gets the tag name for this OS, used in Docker image tags. @@ -52,7 +50,7 @@ public string TagName { OSFamily.Alpine => string.IsNullOrEmpty(Version) ? "alpine" : $"alpine{Version}", OSFamily.AzureLinux => $"azurelinux{Version}", - OSFamily.Debian => Codename, + OSFamily.Debian => $"{Codename}-slim", OSFamily.Mariner => $"cbl-mariner{Version}", OSFamily.Ubuntu => Codename, OSFamily.NanoServer => $"nanoserver-{Version.ToLowerInvariant().Replace(" ", "")}", @@ -60,11 +58,10 @@ public string TagName _ => Codename }; - return (IsDistroless, IsChiseled, IsSlim) switch + return (Family, IsDistroless) switch { - (_, true, _) => $"{baseTag}-chiseled", - (true, _, _) => $"{baseTag}-distroless", - (_, _, true) => $"{baseTag}-slim", + (OSFamily.Ubuntu, true) => $"{baseTag}-chiseled", + (_, true) => $"{baseTag}-distroless", _ => baseTag }; } @@ -134,11 +131,9 @@ public string DisplayName public static OSInfo AzureLinux30Distroless { get; } = AzureLinux30 with { IsDistroless = true }; // Debian - public static OSInfo Bookworm { get; } = new( + public static OSInfo BookwormSlim { get; } = new( OSType.Linux, OSFamily.Debian, "12", Codename: "bookworm", IsDistroless: false); - public static OSInfo BookwormSlim { get; } = Bookworm with { IsSlim = true }; - // Mariner (CBL-Mariner) public static OSInfo Mariner20 { get; } = new( OSType.Linux, OSFamily.Mariner, "2.0", Codename: "cbl-mariner", IsDistroless: false); @@ -149,17 +144,17 @@ public string DisplayName public static OSInfo Jammy { get; } = new( OSType.Linux, OSFamily.Ubuntu, "22.04", Codename: "jammy", IsDistroless: false); - public static OSInfo JammyChiseled { get; } = Jammy with { IsDistroless = true, IsChiseled = true }; + public static OSInfo JammyChiseled { get; } = Jammy with { IsDistroless = true }; public static OSInfo Noble { get; } = new( OSType.Linux, OSFamily.Ubuntu, "24.04", Codename: "noble", IsDistroless: false); - public static OSInfo NobleChiseled { get; } = Noble with { IsDistroless = true, IsChiseled = true }; + public static OSInfo NobleChiseled { get; } = Noble with { IsDistroless = true }; public static OSInfo Resolute { get; } = new( OSType.Linux, OSFamily.Ubuntu, "26.04", Codename: "resolute", IsDistroless: false); - public static OSInfo ResoluteChiseled { get; } = Resolute with { IsDistroless = true, IsChiseled = true }; + public static OSInfo ResoluteChiseled { get; } = Resolute with { IsDistroless = true }; // Windows - Nano Server public static OSInfo NanoServer1809 { get; } = new( From 253519b3a66fb86dd2801d436a34abdd4731b450 Mon Sep 17 00:00:00 2001 From: Logan Bussell Date: Mon, 22 Dec 2025 13:20:31 -0800 Subject: [PATCH 08/14] Remove Codename parameter, compute it in TagName - Remove Codename from constructor parameters - Add GetDebianCodename and GetUbuntuCodename helper methods - Compute codename from version for Debian/Ubuntu in TagName property - Simplify static OSInfo instance definitions --- tests/Microsoft.DotNet.Docker.Tests/OSInfo.cs | 41 +++++++++++++------ 1 file changed, 28 insertions(+), 13 deletions(-) diff --git a/tests/Microsoft.DotNet.Docker.Tests/OSInfo.cs b/tests/Microsoft.DotNet.Docker.Tests/OSInfo.cs index 2c789e070a..9ba34229d2 100644 --- a/tests/Microsoft.DotNet.Docker.Tests/OSInfo.cs +++ b/tests/Microsoft.DotNet.Docker.Tests/OSInfo.cs @@ -2,6 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +using System; + #nullable enable namespace Microsoft.DotNet.Docker.Tests; @@ -36,7 +38,6 @@ public sealed record OSInfo( OSType Type, OSFamily Family, string Version, - string Codename, bool IsDistroless) { /// @@ -50,12 +51,12 @@ public string TagName { OSFamily.Alpine => string.IsNullOrEmpty(Version) ? "alpine" : $"alpine{Version}", OSFamily.AzureLinux => $"azurelinux{Version}", - OSFamily.Debian => $"{Codename}-slim", + OSFamily.Debian => $"{GetDebianCodename(Version)}-slim", OSFamily.Mariner => $"cbl-mariner{Version}", - OSFamily.Ubuntu => Codename, + OSFamily.Ubuntu => GetUbuntuCodename(Version), OSFamily.NanoServer => $"nanoserver-{Version.ToLowerInvariant().Replace(" ", "")}", OSFamily.WindowsServerCore => $"windowsservercore-{Version.ToLowerInvariant().Replace(" ", "")}", - _ => Codename + _ => throw new InvalidOperationException($"Unknown OS family: {Family}") }; return (Family, IsDistroless) switch @@ -67,6 +68,20 @@ public string TagName } } + private static string GetDebianCodename(string version) => version switch + { + "12" => "bookworm", + _ => throw new InvalidOperationException($"Unknown Debian version: {version}") + }; + + private static string GetUbuntuCodename(string version) => version switch + { + "22.04" => "jammy", + "24.04" => "noble", + "26.04" => "resolute", + _ => throw new InvalidOperationException($"Unknown Ubuntu version: {version}") + }; + /// /// Gets the display name for this OS, combining family and version. /// @@ -116,7 +131,7 @@ public string DisplayName // Alpine public static OSInfo AlpineFloating { get; } = new( - OSType.Linux, OSFamily.Alpine, "", Codename: "alpine", IsDistroless: false); + OSType.Linux, OSFamily.Alpine, "", IsDistroless: false); public static OSInfo Alpine321 { get; } = AlpineFloating with { Version = "3.21" }; @@ -126,39 +141,39 @@ public string DisplayName // Azure Linux public static OSInfo AzureLinux30 { get; } = new( - OSType.Linux, OSFamily.AzureLinux, "3.0", Codename: "azurelinux", IsDistroless: false); + OSType.Linux, OSFamily.AzureLinux, "3.0", IsDistroless: false); public static OSInfo AzureLinux30Distroless { get; } = AzureLinux30 with { IsDistroless = true }; // Debian public static OSInfo BookwormSlim { get; } = new( - OSType.Linux, OSFamily.Debian, "12", Codename: "bookworm", IsDistroless: false); + OSType.Linux, OSFamily.Debian, "12", IsDistroless: false); // Mariner (CBL-Mariner) public static OSInfo Mariner20 { get; } = new( - OSType.Linux, OSFamily.Mariner, "2.0", Codename: "cbl-mariner", IsDistroless: false); + OSType.Linux, OSFamily.Mariner, "2.0", IsDistroless: false); public static OSInfo Mariner20Distroless { get; } = Mariner20 with { IsDistroless = true }; // Ubuntu public static OSInfo Jammy { get; } = new( - OSType.Linux, OSFamily.Ubuntu, "22.04", Codename: "jammy", IsDistroless: false); + OSType.Linux, OSFamily.Ubuntu, "22.04", IsDistroless: false); public static OSInfo JammyChiseled { get; } = Jammy with { IsDistroless = true }; public static OSInfo Noble { get; } = new( - OSType.Linux, OSFamily.Ubuntu, "24.04", Codename: "noble", IsDistroless: false); + OSType.Linux, OSFamily.Ubuntu, "24.04", IsDistroless: false); public static OSInfo NobleChiseled { get; } = Noble with { IsDistroless = true }; public static OSInfo Resolute { get; } = new( - OSType.Linux, OSFamily.Ubuntu, "26.04", Codename: "resolute", IsDistroless: false); + OSType.Linux, OSFamily.Ubuntu, "26.04", IsDistroless: false); public static OSInfo ResoluteChiseled { get; } = Resolute with { IsDistroless = true }; // Windows - Nano Server public static OSInfo NanoServer1809 { get; } = new( - OSType.Windows, OSFamily.NanoServer, "1809", Codename: "nanoserver", IsDistroless: false); + OSType.Windows, OSFamily.NanoServer, "1809", IsDistroless: false); public static OSInfo NanoServerLtsc2022 { get; } = NanoServer1809 with { Version = "LTSC 2022" }; @@ -166,7 +181,7 @@ public string DisplayName // Windows - Server Core public static OSInfo ServerCoreLtsc2019 { get; } = new( - OSType.Windows, OSFamily.WindowsServerCore, "LTSC 2019", Codename: "windowsservercore", IsDistroless: false); + OSType.Windows, OSFamily.WindowsServerCore, "LTSC 2019", IsDistroless: false); public static OSInfo ServerCoreLtsc2022 { get; } = ServerCoreLtsc2019 with { Version = "LTSC 2022" }; From 556f2556c2826f8acaf93d367ef8fec3a2aad9bd Mon Sep 17 00:00:00 2001 From: Logan Bussell Date: Mon, 22 Dec 2025 13:21:59 -0800 Subject: [PATCH 09/14] Combine codename methods into single GetCodename method - Merge GetDebianCodename and GetUbuntuCodename into GetCodename - Use tuple pattern matching on (OSFamily, version) --- tests/Microsoft.DotNet.Docker.Tests/OSInfo.cs | 21 +++++++------------ 1 file changed, 8 insertions(+), 13 deletions(-) diff --git a/tests/Microsoft.DotNet.Docker.Tests/OSInfo.cs b/tests/Microsoft.DotNet.Docker.Tests/OSInfo.cs index 9ba34229d2..b68e3ed133 100644 --- a/tests/Microsoft.DotNet.Docker.Tests/OSInfo.cs +++ b/tests/Microsoft.DotNet.Docker.Tests/OSInfo.cs @@ -51,9 +51,9 @@ public string TagName { OSFamily.Alpine => string.IsNullOrEmpty(Version) ? "alpine" : $"alpine{Version}", OSFamily.AzureLinux => $"azurelinux{Version}", - OSFamily.Debian => $"{GetDebianCodename(Version)}-slim", + OSFamily.Debian => $"{GetCodename(Family, Version)}-slim", OSFamily.Mariner => $"cbl-mariner{Version}", - OSFamily.Ubuntu => GetUbuntuCodename(Version), + OSFamily.Ubuntu => GetCodename(Family, Version), OSFamily.NanoServer => $"nanoserver-{Version.ToLowerInvariant().Replace(" ", "")}", OSFamily.WindowsServerCore => $"windowsservercore-{Version.ToLowerInvariant().Replace(" ", "")}", _ => throw new InvalidOperationException($"Unknown OS family: {Family}") @@ -68,18 +68,13 @@ public string TagName } } - private static string GetDebianCodename(string version) => version switch + private static string GetCodename(OSFamily family, string version) => (family, version) switch { - "12" => "bookworm", - _ => throw new InvalidOperationException($"Unknown Debian version: {version}") - }; - - private static string GetUbuntuCodename(string version) => version switch - { - "22.04" => "jammy", - "24.04" => "noble", - "26.04" => "resolute", - _ => throw new InvalidOperationException($"Unknown Ubuntu version: {version}") + (OSFamily.Debian, "12") => "bookworm", + (OSFamily.Ubuntu, "22.04") => "jammy", + (OSFamily.Ubuntu, "24.04") => "noble", + (OSFamily.Ubuntu, "26.04") => "resolute", + _ => throw new InvalidOperationException($"Unknown {family} version: {version}") }; /// From 2477d99bdbe0e6f51e876ef52c8e72dfd513f576 Mon Sep 17 00:00:00 2001 From: Logan Bussell Date: Mon, 22 Dec 2025 13:24:57 -0800 Subject: [PATCH 10/14] Use default value for IsDistroless parameter --- tests/Microsoft.DotNet.Docker.Tests/OSInfo.cs | 29 +++++++------------ 1 file changed, 10 insertions(+), 19 deletions(-) diff --git a/tests/Microsoft.DotNet.Docker.Tests/OSInfo.cs b/tests/Microsoft.DotNet.Docker.Tests/OSInfo.cs index b68e3ed133..5ecfce8893 100644 --- a/tests/Microsoft.DotNet.Docker.Tests/OSInfo.cs +++ b/tests/Microsoft.DotNet.Docker.Tests/OSInfo.cs @@ -38,7 +38,7 @@ public sealed record OSInfo( OSType Type, OSFamily Family, string Version, - bool IsDistroless) + bool IsDistroless = false) { /// /// Gets the tag name for this OS, used in Docker image tags. @@ -125,8 +125,7 @@ public string DisplayName public override string ToString() => TagName; // Alpine - public static OSInfo AlpineFloating { get; } = new( - OSType.Linux, OSFamily.Alpine, "", IsDistroless: false); + public static OSInfo AlpineFloating { get; } = new(OSType.Linux, OSFamily.Alpine, ""); public static OSInfo Alpine321 { get; } = AlpineFloating with { Version = "3.21" }; @@ -135,48 +134,40 @@ public string DisplayName public static OSInfo Alpine323 { get; } = AlpineFloating with { Version = "3.23" }; // Azure Linux - public static OSInfo AzureLinux30 { get; } = new( - OSType.Linux, OSFamily.AzureLinux, "3.0", IsDistroless: false); + public static OSInfo AzureLinux30 { get; } = new(OSType.Linux, OSFamily.AzureLinux, "3.0"); public static OSInfo AzureLinux30Distroless { get; } = AzureLinux30 with { IsDistroless = true }; // Debian - public static OSInfo BookwormSlim { get; } = new( - OSType.Linux, OSFamily.Debian, "12", IsDistroless: false); + public static OSInfo BookwormSlim { get; } = new(OSType.Linux, OSFamily.Debian, "12"); // Mariner (CBL-Mariner) - public static OSInfo Mariner20 { get; } = new( - OSType.Linux, OSFamily.Mariner, "2.0", IsDistroless: false); + public static OSInfo Mariner20 { get; } = new(OSType.Linux, OSFamily.Mariner, "2.0"); public static OSInfo Mariner20Distroless { get; } = Mariner20 with { IsDistroless = true }; // Ubuntu - public static OSInfo Jammy { get; } = new( - OSType.Linux, OSFamily.Ubuntu, "22.04", IsDistroless: false); + public static OSInfo Jammy { get; } = new(OSType.Linux, OSFamily.Ubuntu, "22.04"); public static OSInfo JammyChiseled { get; } = Jammy with { IsDistroless = true }; - public static OSInfo Noble { get; } = new( - OSType.Linux, OSFamily.Ubuntu, "24.04", IsDistroless: false); + public static OSInfo Noble { get; } = new(OSType.Linux, OSFamily.Ubuntu, "24.04"); public static OSInfo NobleChiseled { get; } = Noble with { IsDistroless = true }; - public static OSInfo Resolute { get; } = new( - OSType.Linux, OSFamily.Ubuntu, "26.04", IsDistroless: false); + public static OSInfo Resolute { get; } = new(OSType.Linux, OSFamily.Ubuntu, "26.04"); public static OSInfo ResoluteChiseled { get; } = Resolute with { IsDistroless = true }; // Windows - Nano Server - public static OSInfo NanoServer1809 { get; } = new( - OSType.Windows, OSFamily.NanoServer, "1809", IsDistroless: false); + public static OSInfo NanoServer1809 { get; } = new(OSType.Windows, OSFamily.NanoServer, "1809"); public static OSInfo NanoServerLtsc2022 { get; } = NanoServer1809 with { Version = "LTSC 2022" }; public static OSInfo NanoServerLtsc2025 { get; } = NanoServer1809 with { Version = "LTSC 2025" }; // Windows - Server Core - public static OSInfo ServerCoreLtsc2019 { get; } = new( - OSType.Windows, OSFamily.WindowsServerCore, "LTSC 2019", IsDistroless: false); + public static OSInfo ServerCoreLtsc2019 { get; } = new(OSType.Windows, OSFamily.WindowsServerCore, "LTSC 2019"); public static OSInfo ServerCoreLtsc2022 { get; } = ServerCoreLtsc2019 with { Version = "LTSC 2022" }; From 9fa816fc1bec7f358c323c31e147e9bee6b507ea Mon Sep 17 00:00:00 2001 From: Logan Bussell Date: Mon, 22 Dec 2025 13:30:02 -0800 Subject: [PATCH 11/14] Update doc comment and formatting --- tests/Microsoft.DotNet.Docker.Tests/OSInfo.cs | 25 +++++++------------ 1 file changed, 9 insertions(+), 16 deletions(-) diff --git a/tests/Microsoft.DotNet.Docker.Tests/OSInfo.cs b/tests/Microsoft.DotNet.Docker.Tests/OSInfo.cs index 5ecfce8893..a0c68c3916 100644 --- a/tests/Microsoft.DotNet.Docker.Tests/OSInfo.cs +++ b/tests/Microsoft.DotNet.Docker.Tests/OSInfo.cs @@ -32,8 +32,16 @@ public enum OSFamily } /// -/// Rich metadata about an operating system used in .NET Docker images. +/// Operating system used in .NET container images. /// +/// The type of operating system (Linux or Windows). +/// The family or distribution of the operating system. +/// +/// The version of the operating system. Do not use codenames here. Use the +/// version exactly as it appears in the OS's own documentation. Examples: +/// "3.23" for Alpine, "26.04" for Ubuntu, "LTSC 2025" for Windows Server Core. +/// +/// Whether the OS is distroless. public sealed record OSInfo( OSType Type, OSFamily Family, @@ -126,16 +134,11 @@ public string DisplayName // Alpine public static OSInfo AlpineFloating { get; } = new(OSType.Linux, OSFamily.Alpine, ""); - - public static OSInfo Alpine321 { get; } = AlpineFloating with { Version = "3.21" }; - public static OSInfo Alpine322 { get; } = AlpineFloating with { Version = "3.22" }; - public static OSInfo Alpine323 { get; } = AlpineFloating with { Version = "3.23" }; // Azure Linux public static OSInfo AzureLinux30 { get; } = new(OSType.Linux, OSFamily.AzureLinux, "3.0"); - public static OSInfo AzureLinux30Distroless { get; } = AzureLinux30 with { IsDistroless = true }; // Debian @@ -143,33 +146,23 @@ public string DisplayName // Mariner (CBL-Mariner) public static OSInfo Mariner20 { get; } = new(OSType.Linux, OSFamily.Mariner, "2.0"); - public static OSInfo Mariner20Distroless { get; } = Mariner20 with { IsDistroless = true }; // Ubuntu public static OSInfo Jammy { get; } = new(OSType.Linux, OSFamily.Ubuntu, "22.04"); - public static OSInfo JammyChiseled { get; } = Jammy with { IsDistroless = true }; - public static OSInfo Noble { get; } = new(OSType.Linux, OSFamily.Ubuntu, "24.04"); - public static OSInfo NobleChiseled { get; } = Noble with { IsDistroless = true }; - public static OSInfo Resolute { get; } = new(OSType.Linux, OSFamily.Ubuntu, "26.04"); - public static OSInfo ResoluteChiseled { get; } = Resolute with { IsDistroless = true }; // Windows - Nano Server public static OSInfo NanoServer1809 { get; } = new(OSType.Windows, OSFamily.NanoServer, "1809"); - public static OSInfo NanoServerLtsc2022 { get; } = NanoServer1809 with { Version = "LTSC 2022" }; - public static OSInfo NanoServerLtsc2025 { get; } = NanoServer1809 with { Version = "LTSC 2025" }; // Windows - Server Core public static OSInfo ServerCoreLtsc2019 { get; } = new(OSType.Windows, OSFamily.WindowsServerCore, "LTSC 2019"); - public static OSInfo ServerCoreLtsc2022 { get; } = ServerCoreLtsc2019 with { Version = "LTSC 2022" }; - public static OSInfo ServerCoreLtsc2025 { get; } = ServerCoreLtsc2019 with { Version = "LTSC 2025" }; } From 8d2c03243536c34cf8ba5afc3d6015e13f2fa766 Mon Sep 17 00:00:00 2001 From: Logan Bussell Date: Mon, 22 Dec 2025 13:34:09 -0800 Subject: [PATCH 12/14] Remove OS static class, replace with OSInfo --- tests/Microsoft.DotNet.Docker.Tests/OS.cs | 55 ------------------- tests/Microsoft.DotNet.Docker.Tests/OSInfo.cs | 6 ++ .../ProductImageTests.cs | 26 ++++----- .../RuntimeDepsImageTests.cs | 2 +- .../SdkImageTests.cs | 6 +- .../StaticTagTests.cs | 14 ++--- .../Microsoft.DotNet.Docker.Tests/TestData.cs | 24 ++++---- .../TestScenarios/NlsScenario.cs | 2 +- 8 files changed, 43 insertions(+), 92 deletions(-) delete mode 100644 tests/Microsoft.DotNet.Docker.Tests/OS.cs diff --git a/tests/Microsoft.DotNet.Docker.Tests/OS.cs b/tests/Microsoft.DotNet.Docker.Tests/OS.cs deleted file mode 100644 index 41eb07f3e4..0000000000 --- a/tests/Microsoft.DotNet.Docker.Tests/OS.cs +++ /dev/null @@ -1,55 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -namespace Microsoft.DotNet.Docker.Tests -{ - public static class OS - { - // Alpine - public const string Alpine = "alpine"; - public const string Alpine321 = $"{Alpine}3.21"; - public const string Alpine322 = $"{Alpine}3.22"; - public const string Alpine323 = $"{Alpine}3.23"; - - // AzureLinux - public const string AzureLinux = "azurelinux"; - public const string AzureLinuxDistroless = $"{AzureLinux}-distroless"; - public const string AzureLinux30 = $"{AzureLinux}3.0"; - public const string AzureLinux30Distroless = $"{AzureLinux30}-distroless"; - - // Debian - public const string Bookworm = "bookworm"; - public const string BookwormSlim = $"{Bookworm}{SlimSuffix}"; - - // Mariner - public const string Mariner = "cbl-mariner"; - public const string MarinerDistroless = $"{Mariner}-distroless"; - public const string Mariner20 = $"{Mariner}2.0"; - public const string Mariner20Distroless = $"{Mariner20}-distroless"; - - // Ubuntu - public const string Jammy = "jammy"; - public const string JammyChiseled = $"{Jammy}{ChiseledSuffix}"; - public const string Noble = "noble"; - public const string NobleChiseled = $"{Noble}{ChiseledSuffix}"; - public const string Resolute = "resolute"; - public const string ResoluteChiseled = $"{Resolute}{ChiseledSuffix}"; - public const string UbuntuChiseled = $"ubuntu{ChiseledSuffix}"; - - // Windows - public const string NanoServer = "nanoserver"; - public const string NanoServer1809 = $"{NanoServer}-1809"; - public const string NanoServerLtsc2022 = $"{NanoServer}-ltsc2022"; - public const string NanoServerLtsc2025 = $"{NanoServer}-ltsc2025"; - public const string ServerCore = "windowsservercore"; - public const string ServerCoreLtsc2019 = $"{ServerCore}-ltsc2019"; - public const string ServerCoreLtsc2022 = $"{ServerCore}-ltsc2022"; - public const string ServerCoreLtsc2025 = $"{ServerCore}-ltsc2025"; - - // Helpers - public const string DistrolessSuffix = "-distroless"; - public const string ChiseledSuffix = "-chiseled"; - public const string SlimSuffix = "-slim"; - } -} diff --git a/tests/Microsoft.DotNet.Docker.Tests/OSInfo.cs b/tests/Microsoft.DotNet.Docker.Tests/OSInfo.cs index a0c68c3916..b12f0a464c 100644 --- a/tests/Microsoft.DotNet.Docker.Tests/OSInfo.cs +++ b/tests/Microsoft.DotNet.Docker.Tests/OSInfo.cs @@ -132,6 +132,12 @@ public string DisplayName public override string ToString() => TagName; + // String constants for special tagging cases (appliance images) + public const string Alpine = "alpine"; + public const string AzureLinuxDistroless = "azurelinux-distroless"; + public const string MarinerDistroless = "cbl-mariner-distroless"; + public const string UbuntuChiseled = "ubuntu-chiseled"; + // Alpine public static OSInfo AlpineFloating { get; } = new(OSType.Linux, OSFamily.Alpine, ""); public static OSInfo Alpine322 { get; } = AlpineFloating with { Version = "3.22" }; diff --git a/tests/Microsoft.DotNet.Docker.Tests/ProductImageTests.cs b/tests/Microsoft.DotNet.Docker.Tests/ProductImageTests.cs index 157f69a95c..e1356e09a9 100644 --- a/tests/Microsoft.DotNet.Docker.Tests/ProductImageTests.cs +++ b/tests/Microsoft.DotNet.Docker.Tests/ProductImageTests.cs @@ -109,7 +109,7 @@ protected void VerifyCommonDefaultUser(ProductImageData imageData) string expectedUser; if (imageData.IsDistroless && ImageRepo != DotNetImageRepo.SDK) { - if (imageData.OS.StartsWith(OS.Mariner)) + if (imageData.OS.Family == OSFamily.Mariner) { expectedUser = "app"; } @@ -120,7 +120,7 @@ protected void VerifyCommonDefaultUser(ProductImageData imageData) } // For Windows, only Nano Server defines a user, which seems wrong. // I've logged https://dev.azure.com/microsoft/OS/_workitems/edit/40146885 for this. - else if (imageData.OS.StartsWith(OS.NanoServer)) + else if (imageData.OS.Family == OSFamily.NanoServer) { expectedUser = "ContainerUser"; } @@ -256,7 +256,7 @@ internal static IEnumerable GetExpectedPackages(ProductImageData imageDa private static IEnumerable GetDistrolessBasePackages(ProductImageData imageData) => imageData switch { - { OS: var os } when os.Contains(OS.AzureLinux) => new[] + { OS.Family: OSFamily.AzureLinux } => new[] { "SymCrypt", "SymCrypt-OpenSSL", @@ -266,7 +266,7 @@ internal static IEnumerable GetExpectedPackages(ProductImageData imageDa "prebuilt-ca-certificates", "tzdata" }, - { OS: var os } when os.Contains(OS.Mariner) => new[] + { OS.Family: OSFamily.Mariner } => new[] { "distroless-packages-minimal", "filesystem", @@ -274,7 +274,7 @@ internal static IEnumerable GetExpectedPackages(ProductImageData imageDa "prebuilt-ca-certificates", "tzdata" }, - { OS: var os } when os.Contains(OS.ChiseledSuffix) => new[] + { OS.Family: OSFamily.Ubuntu } => new[] { "base-files" }, @@ -284,7 +284,7 @@ internal static IEnumerable GetExpectedPackages(ProductImageData imageDa private static IEnumerable GetRuntimeDepsPackages(ProductImageData imageData) { IEnumerable packages = imageData switch { - { OS: var os } when os.Contains(OS.Mariner) || os.Contains(OS.AzureLinux) => + { OS.Family: OSFamily.Mariner or OSFamily.AzureLinux } => [ "glibc", "libgcc", @@ -292,7 +292,7 @@ private static IEnumerable GetRuntimeDepsPackages(ProductImageData image "openssl-libs", "libstdc++" ], - { OS: var os } when os.Contains(OS.Jammy) => + { OS: var os } when os == OSInfo.JammyChiseled => [ "ca-certificates", "gcc-12-base", @@ -340,7 +340,7 @@ private static IEnumerable GetRuntimeDepsPackages(ProductImageData image "openssl", "zlib" ], - { OS: var os } when os.Contains(OS.Noble) => + { OS: var os } when os == OSInfo.Noble => [ "ca-certificates", "gcc-14-base", @@ -350,7 +350,7 @@ private static IEnumerable GetRuntimeDepsPackages(ProductImageData image "openssl", "libstdc++6" ], - { OS: var os } when os.Contains(OS.Resolute) => + { OS: var os } when os == OSInfo.Resolute => [ "ca-certificates", "gcc-15-base", @@ -360,7 +360,7 @@ private static IEnumerable GetRuntimeDepsPackages(ProductImageData image "openssl", "libstdc++6" ], - { OS: var os } when os.Contains(OS.Alpine) => + { OS.Family: OSFamily.Alpine } => [ "ca-certificates-bundle", "libgcc", @@ -386,7 +386,7 @@ private static IEnumerable GetRuntimeDepsPackages(ProductImageData image // - https://packages.ubuntu.com/plucky/amd64/libssl3t64 // - https://packages.ubuntu.com/resolute/amd64/libssl3t64 // - https://github.com/canonical/chisel-releases/blob/ubuntu-26.04/slices/libssl3t64.yaml - if (imageData.Version.Major == 8 || imageData.OS.Contains(OS.Resolute)) + if (imageData.Version.Major == 8 || imageData.OS.Version == "26.04") { packages = [..packages, GetZLibPackage(imageData.OS)]; } @@ -402,7 +402,7 @@ private static string GetZLibPackage(OSInfo os) private static IEnumerable GetExtraPackages(ProductImageData imageData) => imageData switch { - { IsDistroless: true, OS: var os } when os.Contains(OS.Mariner) || os.Contains(OS.AzureLinux) => new[] + { IsDistroless: true, OS.Family: OSFamily.Mariner or OSFamily.AzureLinux } => new[] { "icu", "tzdata" @@ -424,7 +424,7 @@ private static string GetZLibPackage(OSInfo os) "libicu70", "tzdata" }, - { OS: var os } when os.Contains(OS.Alpine) => new[] + { OS.Family: OSFamily.Alpine } => new[] { "icu-data-full", "icu-libs", diff --git a/tests/Microsoft.DotNet.Docker.Tests/RuntimeDepsImageTests.cs b/tests/Microsoft.DotNet.Docker.Tests/RuntimeDepsImageTests.cs index 280e33f6a2..4903389b32 100644 --- a/tests/Microsoft.DotNet.Docker.Tests/RuntimeDepsImageTests.cs +++ b/tests/Microsoft.DotNet.Docker.Tests/RuntimeDepsImageTests.cs @@ -132,7 +132,7 @@ public void VerifyDistrolessOSReleaseInfo(ProductImageData imageData) [MemberData(nameof(GetImageData))] public void VerifyChiselManifest(ProductImageData imageData) { - if (!imageData.OS.Contains(OS.ChiseledSuffix)) + if (!(imageData.OS.Family == OSFamily.Ubuntu && imageData.IsDistroless)) { OutputHelper.WriteLine("Test is only relevant to Ubuntu Chiseled images"); return; diff --git a/tests/Microsoft.DotNet.Docker.Tests/SdkImageTests.cs b/tests/Microsoft.DotNet.Docker.Tests/SdkImageTests.cs index 02a2a68dd4..1b386433dc 100644 --- a/tests/Microsoft.DotNet.Docker.Tests/SdkImageTests.cs +++ b/tests/Microsoft.DotNet.Docker.Tests/SdkImageTests.cs @@ -70,7 +70,7 @@ public async void VerifyBlazorWasmScenario(ProductImageData imageData) } // `wasm-tools` is not supported on Alpine for .NET < 9 due to https://github.com/dotnet/sdk/issues/32327 - if (imageData.OS.StartsWith(OS.Alpine) && imageData.Version.Major == 8) + if (imageData.OS.Family == OSFamily.Alpine && imageData.Version.Major == 8) { useWasmTools = false; } @@ -122,7 +122,7 @@ public void VerifyEnvironmentVariables(ProductImageData imageData) ..GetCommonEnvironmentVariables(), ]; - if (imageData.SdkOS.StartsWith(OS.Alpine)) + if (imageData.SdkOS.Family == OSFamily.Alpine) { variables.Add(new EnvironmentVariableInfo("DOTNET_SYSTEM_GLOBALIZATION_INVARIANT", "false")); } @@ -346,7 +346,7 @@ private string GetSdkUrl(ProductImageData imageData) : GetSdkVersionFileLabel(sdkBuildVersion, imageData.VersionString); string osType = DockerHelper.IsLinuxContainerModeEnabled ? "linux" : "win"; - if (imageData.SdkOS.StartsWith(OS.Alpine)) + if (imageData.SdkOS.Family == OSFamily.Alpine) { osType += "-musl"; } diff --git a/tests/Microsoft.DotNet.Docker.Tests/StaticTagTests.cs b/tests/Microsoft.DotNet.Docker.Tests/StaticTagTests.cs index 8a0da029a8..b178c55c65 100644 --- a/tests/Microsoft.DotNet.Docker.Tests/StaticTagTests.cs +++ b/tests/Microsoft.DotNet.Docker.Tests/StaticTagTests.cs @@ -150,9 +150,9 @@ public void PlatformTag_TagExists( string os = dockerfileInfo.OsDir; if (repo.Name.EndsWith("monitor") && dockerfileInfo.VersionDir.StartsWith("8.") && - OS.AzureLinuxDistroless.Equals(os)) + OSInfo.AzureLinuxDistroless.Equals(os)) { - os = OS.MarinerDistroless; + os = OSInfo.MarinerDistroless; } Regex expectedPattern = GetTagRegex( @@ -191,7 +191,7 @@ public void FloatingAlpineTag_OnLatestVersion(Repo repo, VersionType versionType { IEnumerable>> alpineDockerfileTags = GetDockerfileTags(repo) - .Where(p => p.Key.OsDir.Contains(OS.Alpine)); + .Where(p => p.Key.OsDir.Contains(OSInfo.Alpine)); using (new AssertionScope()) { @@ -202,12 +202,12 @@ public void FloatingAlpineTag_OnLatestVersion(Repo repo, VersionType versionType if (dockerfileInfo.OsDir == alpineFloatingTagVersion) { tags.Should().ContainSingle(tag => pattern.IsMatch(tag), - because: $"image {dockerfileInfo} should have an {OS.Alpine} floating tag"); + because: $"image {dockerfileInfo} should have an {OSInfo.Alpine} floating tag"); } else { tags.Should().NotContain(tag => pattern.IsMatch(tag), - because: $"image {dockerfileInfo} should not have an {OS.Alpine} floating tag"); + because: $"image {dockerfileInfo} should not have an {OSInfo.Alpine} floating tag"); } } } @@ -219,7 +219,7 @@ Regex GetFloatingTagRegex(DockerfileInfo info) => GetTagRegex( versionType, productVersion: info.ProductVersion, - os: OS.Alpine, + os: OSInfo.Alpine, architecture: checkArchitecture ? info.ArchitectureDir : null); } @@ -651,7 +651,7 @@ private static Regex GetTagRegex(VersionType versionType, DotNetVersion? product private static Version GetAlpineVersion(DockerfileInfo dockerfileInfo) { - string parsedOs = dockerfileInfo.OsDir.Replace(OS.Alpine, string.Empty); + string parsedOs = dockerfileInfo.OsDir.Replace(OSInfo.Alpine, string.Empty); parsedOs.Should().NotBeNullOrWhiteSpace( because: $"{dockerfileInfo} should have a specific Alpine version for osVersion"); return Version.Parse(parsedOs); diff --git a/tests/Microsoft.DotNet.Docker.Tests/TestData.cs b/tests/Microsoft.DotNet.Docker.Tests/TestData.cs index 569a4ee231..7fb035d54f 100644 --- a/tests/Microsoft.DotNet.Docker.Tests/TestData.cs +++ b/tests/Microsoft.DotNet.Docker.Tests/TestData.cs @@ -446,16 +446,16 @@ public static class TestData private static readonly ProductImageData[] s_linuxMonitorTestData = [ - new ProductImageData { Version = V8_1, VersionFamily = V8_0, OS = OSInfo.JammyChiseled, OSTag = OS.UbuntuChiseled, Arch = Arch.Amd64, SupportedImageRepos = DotNetImageRepo.Monitor | DotNetImageRepo.Monitor_Base }, - new ProductImageData { Version = V8_1, VersionFamily = V8_0, OS = OSInfo.JammyChiseled, OSTag = OS.UbuntuChiseled, Arch = Arch.Arm64, SupportedImageRepos = DotNetImageRepo.Monitor | DotNetImageRepo.Monitor_Base }, + new ProductImageData { Version = V8_1, VersionFamily = V8_0, OS = OSInfo.JammyChiseled, OSTag = OSInfo.UbuntuChiseled, Arch = Arch.Amd64, SupportedImageRepos = DotNetImageRepo.Monitor | DotNetImageRepo.Monitor_Base }, + new ProductImageData { Version = V8_1, VersionFamily = V8_0, OS = OSInfo.JammyChiseled, OSTag = OSInfo.UbuntuChiseled, Arch = Arch.Arm64, SupportedImageRepos = DotNetImageRepo.Monitor | DotNetImageRepo.Monitor_Base }, // OSTag does not correspond to OS because platform tags for Azure Linux were not added to the images // Use CBL-Mariner distroless for OSTag since those platform tags exist and won't require tests to understand the difference in tagging. - new ProductImageData { Version = V8_1, VersionFamily = V8_0, OS = OSInfo.AzureLinux30Distroless, OSDir = OS.AzureLinuxDistroless, OSTag = OS.MarinerDistroless, Arch = Arch.Amd64, SupportedImageRepos = DotNetImageRepo.Monitor | DotNetImageRepo.Monitor_Base }, - new ProductImageData { Version = V8_1, VersionFamily = V8_0, OS = OSInfo.AzureLinux30Distroless, OSDir = OS.AzureLinuxDistroless, OSTag = OS.MarinerDistroless, Arch = Arch.Arm64, SupportedImageRepos = DotNetImageRepo.Monitor | DotNetImageRepo.Monitor_Base }, - new ProductImageData { Version = V9_0, VersionFamily = V9_0, OS = OSInfo.AzureLinux30Distroless, OSDir = OS.AzureLinuxDistroless, OSTag = "", Arch = Arch.Amd64, SupportedImageRepos = DotNetImageRepo.Monitor | DotNetImageRepo.Monitor_Base }, - new ProductImageData { Version = V9_0, VersionFamily = V9_0, OS = OSInfo.AzureLinux30Distroless, OSDir = OS.AzureLinuxDistroless, OSTag = "", Arch = Arch.Arm64, SupportedImageRepos = DotNetImageRepo.Monitor | DotNetImageRepo.Monitor_Base }, - new ProductImageData { Version = V10_0, VersionFamily = V10_0, OS = OSInfo.AzureLinux30Distroless, OSDir = OS.AzureLinuxDistroless, OSTag = "", Arch = Arch.Amd64, SupportedImageRepos = DotNetImageRepo.Monitor | DotNetImageRepo.Monitor_Base }, - new ProductImageData { Version = V10_0, VersionFamily = V10_0, OS = OSInfo.AzureLinux30Distroless, OSDir = OS.AzureLinuxDistroless, OSTag = "", Arch = Arch.Arm64, SupportedImageRepos = DotNetImageRepo.Monitor | DotNetImageRepo.Monitor_Base }, + new ProductImageData { Version = V8_1, VersionFamily = V8_0, OS = OSInfo.AzureLinux30Distroless, OSDir = OSInfo.AzureLinuxDistroless, OSTag = OSInfo.MarinerDistroless, Arch = Arch.Amd64, SupportedImageRepos = DotNetImageRepo.Monitor | DotNetImageRepo.Monitor_Base }, + new ProductImageData { Version = V8_1, VersionFamily = V8_0, OS = OSInfo.AzureLinux30Distroless, OSDir = OSInfo.AzureLinuxDistroless, OSTag = OSInfo.MarinerDistroless, Arch = Arch.Arm64, SupportedImageRepos = DotNetImageRepo.Monitor | DotNetImageRepo.Monitor_Base }, + new ProductImageData { Version = V9_0, VersionFamily = V9_0, OS = OSInfo.AzureLinux30Distroless, OSDir = OSInfo.AzureLinuxDistroless, OSTag = "", Arch = Arch.Amd64, SupportedImageRepos = DotNetImageRepo.Monitor | DotNetImageRepo.Monitor_Base }, + new ProductImageData { Version = V9_0, VersionFamily = V9_0, OS = OSInfo.AzureLinux30Distroless, OSDir = OSInfo.AzureLinuxDistroless, OSTag = "", Arch = Arch.Arm64, SupportedImageRepos = DotNetImageRepo.Monitor | DotNetImageRepo.Monitor_Base }, + new ProductImageData { Version = V10_0, VersionFamily = V10_0, OS = OSInfo.AzureLinux30Distroless, OSDir = OSInfo.AzureLinuxDistroless, OSTag = "", Arch = Arch.Amd64, SupportedImageRepos = DotNetImageRepo.Monitor | DotNetImageRepo.Monitor_Base }, + new ProductImageData { Version = V10_0, VersionFamily = V10_0, OS = OSInfo.AzureLinux30Distroless, OSDir = OSInfo.AzureLinuxDistroless, OSTag = "", Arch = Arch.Arm64, SupportedImageRepos = DotNetImageRepo.Monitor | DotNetImageRepo.Monitor_Base }, ]; private static readonly ProductImageData[] s_windowsMonitorTestData = @@ -469,7 +469,7 @@ public static class TestData VersionFamily = V9_0, OS = OSInfo.AzureLinux30Distroless, OSTag = "", - OSDir = OS.AzureLinuxDistroless, + OSDir = OSInfo.AzureLinuxDistroless, Arch = Arch.Amd64, SupportedImageRepos = DotNetImageRepo.Aspire_Dashboard, }, @@ -478,7 +478,7 @@ public static class TestData VersionFamily = V9_0, OS = OSInfo.AzureLinux30Distroless, OSTag = "", - OSDir = OS.AzureLinuxDistroless, + OSDir = OSInfo.AzureLinuxDistroless, Arch = Arch.Arm64, SupportedImageRepos = DotNetImageRepo.Aspire_Dashboard }, @@ -491,7 +491,7 @@ public static class TestData VersionFamily = V9_0, OS = OSInfo.AzureLinux30Distroless, OSTag = "", - OSDir = OS.AzureLinuxDistroless, + OSDir = OSInfo.AzureLinuxDistroless, Arch = Arch.Amd64, SupportedImageRepos = DotNetImageRepo.Yarp, }, @@ -500,7 +500,7 @@ public static class TestData VersionFamily = V9_0, OS = OSInfo.AzureLinux30Distroless, OSTag = "", - OSDir = OS.AzureLinuxDistroless, + OSDir = OSInfo.AzureLinuxDistroless, Arch = Arch.Arm64, SupportedImageRepos = DotNetImageRepo.Yarp }, diff --git a/tests/Microsoft.DotNet.Docker.Tests/TestScenarios/NlsScenario.cs b/tests/Microsoft.DotNet.Docker.Tests/TestScenarios/NlsScenario.cs index 853caf3371..a67f3f82a4 100644 --- a/tests/Microsoft.DotNet.Docker.Tests/TestScenarios/NlsScenario.cs +++ b/tests/Microsoft.DotNet.Docker.Tests/TestScenarios/NlsScenario.cs @@ -35,7 +35,7 @@ public NlsScenario( } // ICU is not supported on Nano Server - private bool IsIcuSupported => _imageData.OS.Contains(OS.ServerCore); + private bool IsIcuSupported => _imageData.OS.Family == OSFamily.WindowsServerCore; public Task ExecuteAsync() { From 799d19d17e923a74e269015afff17de121af4495 Mon Sep 17 00:00:00 2001 From: Logan Bussell Date: Mon, 22 Dec 2025 14:01:21 -0800 Subject: [PATCH 13/14] Move static OS instances to OS class --- tests/Microsoft.DotNet.Docker.Tests/OS.cs | 50 ++ tests/Microsoft.DotNet.Docker.Tests/OSInfo.cs | 58 +- .../ProductImageTests.cs | 20 +- .../StaticTagTests.cs | 14 +- .../Microsoft.DotNet.Docker.Tests/TestData.cs | 576 +++++++++--------- 5 files changed, 364 insertions(+), 354 deletions(-) create mode 100644 tests/Microsoft.DotNet.Docker.Tests/OS.cs diff --git a/tests/Microsoft.DotNet.Docker.Tests/OS.cs b/tests/Microsoft.DotNet.Docker.Tests/OS.cs new file mode 100644 index 0000000000..8390e66862 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/OS.cs @@ -0,0 +1,50 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +#nullable enable + +namespace Microsoft.DotNet.Docker.Tests; + +internal static class OS +{ + // String constants for special tagging cases (appliance images) + public const string Alpine = "alpine"; + public const string AzureLinuxDistroless = "azurelinux-distroless"; + public const string MarinerDistroless = "cbl-mariner-distroless"; + public const string UbuntuChiseled = "ubuntu-chiseled"; + + // Alpine + public static OSInfo AlpineFloating { get; } = new(OSType.Linux, OSFamily.Alpine, ""); + public static OSInfo Alpine322 { get; } = AlpineFloating with { Version = "3.22" }; + public static OSInfo Alpine323 { get; } = AlpineFloating with { Version = "3.23" }; + + // Azure Linux + public static OSInfo AzureLinux30 { get; } = new(OSType.Linux, OSFamily.AzureLinux, "3.0"); + public static OSInfo AzureLinux30Distroless { get; } = AzureLinux30 with { IsDistroless = true }; + + // Debian + public static OSInfo BookwormSlim { get; } = new(OSType.Linux, OSFamily.Debian, "12"); + + // Mariner (CBL-Mariner) + public static OSInfo Mariner20 { get; } = new(OSType.Linux, OSFamily.Mariner, "2.0"); + public static OSInfo Mariner20Distroless { get; } = Mariner20 with { IsDistroless = true }; + + // Ubuntu + public static OSInfo Jammy { get; } = new(OSType.Linux, OSFamily.Ubuntu, "22.04"); + public static OSInfo JammyChiseled { get; } = Jammy with { IsDistroless = true }; + public static OSInfo Noble { get; } = new(OSType.Linux, OSFamily.Ubuntu, "24.04"); + public static OSInfo NobleChiseled { get; } = Noble with { IsDistroless = true }; + public static OSInfo Resolute { get; } = new(OSType.Linux, OSFamily.Ubuntu, "26.04"); + public static OSInfo ResoluteChiseled { get; } = Resolute with { IsDistroless = true }; + + // Windows - Nano Server + public static OSInfo NanoServer1809 { get; } = new(OSType.Windows, OSFamily.NanoServer, "1809"); + public static OSInfo NanoServerLtsc2022 { get; } = NanoServer1809 with { Version = "LTSC 2022" }; + public static OSInfo NanoServerLtsc2025 { get; } = NanoServer1809 with { Version = "LTSC 2025" }; + + // Windows - Server Core + public static OSInfo ServerCoreLtsc2019 { get; } = new(OSType.Windows, OSFamily.WindowsServerCore, "LTSC 2019"); + public static OSInfo ServerCoreLtsc2022 { get; } = ServerCoreLtsc2019 with { Version = "LTSC 2022" }; + public static OSInfo ServerCoreLtsc2025 { get; } = ServerCoreLtsc2019 with { Version = "LTSC 2025" }; +} diff --git a/tests/Microsoft.DotNet.Docker.Tests/OSInfo.cs b/tests/Microsoft.DotNet.Docker.Tests/OSInfo.cs index b12f0a464c..c35e80d294 100644 --- a/tests/Microsoft.DotNet.Docker.Tests/OSInfo.cs +++ b/tests/Microsoft.DotNet.Docker.Tests/OSInfo.cs @@ -55,6 +55,15 @@ public string TagName { get { + static string GetCodename(OSFamily family, string version) => (family, version) switch + { + (OSFamily.Debian, "12") => "bookworm", + (OSFamily.Ubuntu, "22.04") => "jammy", + (OSFamily.Ubuntu, "24.04") => "noble", + (OSFamily.Ubuntu, "26.04") => "resolute", + _ => throw new InvalidOperationException($"Unknown {family} version: {version}") + }; + string baseTag = Family switch { OSFamily.Alpine => string.IsNullOrEmpty(Version) ? "alpine" : $"alpine{Version}", @@ -76,15 +85,6 @@ public string TagName } } - private static string GetCodename(OSFamily family, string version) => (family, version) switch - { - (OSFamily.Debian, "12") => "bookworm", - (OSFamily.Ubuntu, "22.04") => "jammy", - (OSFamily.Ubuntu, "24.04") => "noble", - (OSFamily.Ubuntu, "26.04") => "resolute", - _ => throw new InvalidOperationException($"Unknown {family} version: {version}") - }; - /// /// Gets the display name for this OS, combining family and version. /// @@ -131,44 +131,4 @@ public string DisplayName public static implicit operator string(OSInfo os) => os.TagName; public override string ToString() => TagName; - - // String constants for special tagging cases (appliance images) - public const string Alpine = "alpine"; - public const string AzureLinuxDistroless = "azurelinux-distroless"; - public const string MarinerDistroless = "cbl-mariner-distroless"; - public const string UbuntuChiseled = "ubuntu-chiseled"; - - // Alpine - public static OSInfo AlpineFloating { get; } = new(OSType.Linux, OSFamily.Alpine, ""); - public static OSInfo Alpine322 { get; } = AlpineFloating with { Version = "3.22" }; - public static OSInfo Alpine323 { get; } = AlpineFloating with { Version = "3.23" }; - - // Azure Linux - public static OSInfo AzureLinux30 { get; } = new(OSType.Linux, OSFamily.AzureLinux, "3.0"); - public static OSInfo AzureLinux30Distroless { get; } = AzureLinux30 with { IsDistroless = true }; - - // Debian - public static OSInfo BookwormSlim { get; } = new(OSType.Linux, OSFamily.Debian, "12"); - - // Mariner (CBL-Mariner) - public static OSInfo Mariner20 { get; } = new(OSType.Linux, OSFamily.Mariner, "2.0"); - public static OSInfo Mariner20Distroless { get; } = Mariner20 with { IsDistroless = true }; - - // Ubuntu - public static OSInfo Jammy { get; } = new(OSType.Linux, OSFamily.Ubuntu, "22.04"); - public static OSInfo JammyChiseled { get; } = Jammy with { IsDistroless = true }; - public static OSInfo Noble { get; } = new(OSType.Linux, OSFamily.Ubuntu, "24.04"); - public static OSInfo NobleChiseled { get; } = Noble with { IsDistroless = true }; - public static OSInfo Resolute { get; } = new(OSType.Linux, OSFamily.Ubuntu, "26.04"); - public static OSInfo ResoluteChiseled { get; } = Resolute with { IsDistroless = true }; - - // Windows - Nano Server - public static OSInfo NanoServer1809 { get; } = new(OSType.Windows, OSFamily.NanoServer, "1809"); - public static OSInfo NanoServerLtsc2022 { get; } = NanoServer1809 with { Version = "LTSC 2022" }; - public static OSInfo NanoServerLtsc2025 { get; } = NanoServer1809 with { Version = "LTSC 2025" }; - - // Windows - Server Core - public static OSInfo ServerCoreLtsc2019 { get; } = new(OSType.Windows, OSFamily.WindowsServerCore, "LTSC 2019"); - public static OSInfo ServerCoreLtsc2022 { get; } = ServerCoreLtsc2019 with { Version = "LTSC 2022" }; - public static OSInfo ServerCoreLtsc2025 { get; } = ServerCoreLtsc2019 with { Version = "LTSC 2025" }; } diff --git a/tests/Microsoft.DotNet.Docker.Tests/ProductImageTests.cs b/tests/Microsoft.DotNet.Docker.Tests/ProductImageTests.cs index e1356e09a9..25181422ef 100644 --- a/tests/Microsoft.DotNet.Docker.Tests/ProductImageTests.cs +++ b/tests/Microsoft.DotNet.Docker.Tests/ProductImageTests.cs @@ -292,7 +292,7 @@ private static IEnumerable GetRuntimeDepsPackages(ProductImageData image "openssl-libs", "libstdc++" ], - { OS: var os } when os == OSInfo.JammyChiseled => + { OS: var os } when os == OS.JammyChiseled => [ "ca-certificates", "gcc-12-base", @@ -302,7 +302,7 @@ private static IEnumerable GetRuntimeDepsPackages(ProductImageData image "openssl", "libstdc++6" ], - { OS: var os } when os == OSInfo.NobleChiseled => + { OS: var os } when os == OS.NobleChiseled => [ "ca-certificates", "gcc-14-base", @@ -313,7 +313,7 @@ private static IEnumerable GetRuntimeDepsPackages(ProductImageData image "openssl", "libstdc++6" ], - { OS: var os, Arch: Arch.Amd64 } when os == OSInfo.ResoluteChiseled => + { OS: var os, Arch: Arch.Amd64 } when os == OS.ResoluteChiseled => [ "ca-certificates", "gcc-14-base", @@ -328,7 +328,7 @@ private static IEnumerable GetRuntimeDepsPackages(ProductImageData image "openssl-provider-legacy", "zlib" ], - { OS: var os } when os == OSInfo.ResoluteChiseled => + { OS: var os } when os == OS.ResoluteChiseled => [ "ca-certificates", "gcc-14-base", @@ -340,7 +340,7 @@ private static IEnumerable GetRuntimeDepsPackages(ProductImageData image "openssl", "zlib" ], - { OS: var os } when os == OSInfo.Noble => + { OS: var os } when os == OS.Noble => [ "ca-certificates", "gcc-14-base", @@ -350,7 +350,7 @@ private static IEnumerable GetRuntimeDepsPackages(ProductImageData image "openssl", "libstdc++6" ], - { OS: var os } when os == OSInfo.Resolute => + { OS: var os } when os == OS.Resolute => [ "ca-certificates", "gcc-15-base", @@ -367,7 +367,7 @@ private static IEnumerable GetRuntimeDepsPackages(ProductImageData image "libssl3", "libstdc++" ], - { OS: var os } when os == OSInfo.BookwormSlim => + { OS: var os } when os == OS.BookwormSlim => [ "ca-certificates", "libc6", @@ -407,19 +407,19 @@ private static string GetZLibPackage(OSInfo os) "icu", "tzdata" }, - { OS: var os } when os == OSInfo.NobleChiseled => new[] + { OS: var os } when os == OS.NobleChiseled => new[] { "libicu74", "tzdata-legacy", "tzdata" }, - { OS: var os } when os == OSInfo.ResoluteChiseled => new[] + { OS: var os } when os == OS.ResoluteChiseled => new[] { "icu", "libicu76", "tzdata" }, - { OS: var os } when os == OSInfo.JammyChiseled => new[] + { OS: var os } when os == OS.JammyChiseled => new[] { "libicu70", "tzdata" diff --git a/tests/Microsoft.DotNet.Docker.Tests/StaticTagTests.cs b/tests/Microsoft.DotNet.Docker.Tests/StaticTagTests.cs index b178c55c65..8a0da029a8 100644 --- a/tests/Microsoft.DotNet.Docker.Tests/StaticTagTests.cs +++ b/tests/Microsoft.DotNet.Docker.Tests/StaticTagTests.cs @@ -150,9 +150,9 @@ public void PlatformTag_TagExists( string os = dockerfileInfo.OsDir; if (repo.Name.EndsWith("monitor") && dockerfileInfo.VersionDir.StartsWith("8.") && - OSInfo.AzureLinuxDistroless.Equals(os)) + OS.AzureLinuxDistroless.Equals(os)) { - os = OSInfo.MarinerDistroless; + os = OS.MarinerDistroless; } Regex expectedPattern = GetTagRegex( @@ -191,7 +191,7 @@ public void FloatingAlpineTag_OnLatestVersion(Repo repo, VersionType versionType { IEnumerable>> alpineDockerfileTags = GetDockerfileTags(repo) - .Where(p => p.Key.OsDir.Contains(OSInfo.Alpine)); + .Where(p => p.Key.OsDir.Contains(OS.Alpine)); using (new AssertionScope()) { @@ -202,12 +202,12 @@ public void FloatingAlpineTag_OnLatestVersion(Repo repo, VersionType versionType if (dockerfileInfo.OsDir == alpineFloatingTagVersion) { tags.Should().ContainSingle(tag => pattern.IsMatch(tag), - because: $"image {dockerfileInfo} should have an {OSInfo.Alpine} floating tag"); + because: $"image {dockerfileInfo} should have an {OS.Alpine} floating tag"); } else { tags.Should().NotContain(tag => pattern.IsMatch(tag), - because: $"image {dockerfileInfo} should not have an {OSInfo.Alpine} floating tag"); + because: $"image {dockerfileInfo} should not have an {OS.Alpine} floating tag"); } } } @@ -219,7 +219,7 @@ Regex GetFloatingTagRegex(DockerfileInfo info) => GetTagRegex( versionType, productVersion: info.ProductVersion, - os: OSInfo.Alpine, + os: OS.Alpine, architecture: checkArchitecture ? info.ArchitectureDir : null); } @@ -651,7 +651,7 @@ private static Regex GetTagRegex(VersionType versionType, DotNetVersion? product private static Version GetAlpineVersion(DockerfileInfo dockerfileInfo) { - string parsedOs = dockerfileInfo.OsDir.Replace(OSInfo.Alpine, string.Empty); + string parsedOs = dockerfileInfo.OsDir.Replace(OS.Alpine, string.Empty); parsedOs.Should().NotBeNullOrWhiteSpace( because: $"{dockerfileInfo} should have a specific Alpine version for osVersion"); return Version.Parse(parsedOs); diff --git a/tests/Microsoft.DotNet.Docker.Tests/TestData.cs b/tests/Microsoft.DotNet.Docker.Tests/TestData.cs index 7fb035d54f..1669ebfec8 100644 --- a/tests/Microsoft.DotNet.Docker.Tests/TestData.cs +++ b/tests/Microsoft.DotNet.Docker.Tests/TestData.cs @@ -14,448 +14,448 @@ public static class TestData { private static readonly ProductImageData[] s_linuxTestData = { - new ProductImageData { Version = V8_0, OS = OSInfo.BookwormSlim, Arch = Arch.Amd64 }, - new ProductImageData { Version = V8_0, OS = OSInfo.Jammy, Arch = Arch.Amd64 }, - new ProductImageData { Version = V8_0, OS = OSInfo.JammyChiseled, Arch = Arch.Amd64, SdkOS = OSInfo.Jammy }, - new ProductImageData { Version = V8_0, OS = OSInfo.JammyChiseled, Arch = Arch.Amd64, SdkOS = OSInfo.Jammy }, - new ProductImageData { Version = V8_0, OS = OSInfo.JammyChiseled, Arch = Arch.Amd64, SdkOS = OSInfo.Jammy, + new ProductImageData { Version = V8_0, OS = OS.BookwormSlim, Arch = Arch.Amd64 }, + new ProductImageData { Version = V8_0, OS = OS.Jammy, Arch = Arch.Amd64 }, + new ProductImageData { Version = V8_0, OS = OS.JammyChiseled, Arch = Arch.Amd64, SdkOS = OS.Jammy }, + new ProductImageData { Version = V8_0, OS = OS.JammyChiseled, Arch = Arch.Amd64, SdkOS = OS.Jammy }, + new ProductImageData { Version = V8_0, OS = OS.JammyChiseled, Arch = Arch.Amd64, SdkOS = OS.Jammy, ImageVariant = DotNetImageVariant.Composite, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V8_0, OS = OSInfo.JammyChiseled, Arch = Arch.Amd64, SdkOS = OSInfo.Jammy, + new ProductImageData { Version = V8_0, OS = OS.JammyChiseled, Arch = Arch.Amd64, SdkOS = OS.Jammy, ImageVariant = DotNetImageVariant.Composite | DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V8_0, OS = OSInfo.JammyChiseled, Arch = Arch.Amd64, SdkOS = OSInfo.Jammy, + new ProductImageData { Version = V8_0, OS = OS.JammyChiseled, Arch = Arch.Amd64, SdkOS = OS.Jammy, ImageVariant = DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Runtime_Deps | DotNetImageRepo.Runtime | DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V8_0, OS = OSInfo.Noble, Arch = Arch.Amd64 }, - new ProductImageData { Version = V8_0, OS = OSInfo.NobleChiseled, Arch = Arch.Amd64, SdkOS = OSInfo.Noble }, - new ProductImageData { Version = V8_0, OS = OSInfo.NobleChiseled, Arch = Arch.Amd64, SdkOS = OSInfo.Noble }, - new ProductImageData { Version = V8_0, OS = OSInfo.NobleChiseled, Arch = Arch.Amd64, SdkOS = OSInfo.Noble, + new ProductImageData { Version = V8_0, OS = OS.Noble, Arch = Arch.Amd64 }, + new ProductImageData { Version = V8_0, OS = OS.NobleChiseled, Arch = Arch.Amd64, SdkOS = OS.Noble }, + new ProductImageData { Version = V8_0, OS = OS.NobleChiseled, Arch = Arch.Amd64, SdkOS = OS.Noble }, + new ProductImageData { Version = V8_0, OS = OS.NobleChiseled, Arch = Arch.Amd64, SdkOS = OS.Noble, ImageVariant = DotNetImageVariant.Composite, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V8_0, OS = OSInfo.NobleChiseled, Arch = Arch.Amd64, SdkOS = OSInfo.Noble, + new ProductImageData { Version = V8_0, OS = OS.NobleChiseled, Arch = Arch.Amd64, SdkOS = OS.Noble, ImageVariant = DotNetImageVariant.Composite | DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V8_0, OS = OSInfo.NobleChiseled, Arch = Arch.Amd64, SdkOS = OSInfo.Noble, + new ProductImageData { Version = V8_0, OS = OS.NobleChiseled, Arch = Arch.Amd64, SdkOS = OS.Noble, ImageVariant = DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Runtime_Deps | DotNetImageRepo.Runtime | DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V8_0, OS = OSInfo.Alpine322, Arch = Arch.Amd64 }, - new ProductImageData { Version = V8_0, OS = OSInfo.Alpine322, Arch = Arch.Amd64, SdkOS = OSInfo.Alpine322, + new ProductImageData { Version = V8_0, OS = OS.Alpine322, Arch = Arch.Amd64 }, + new ProductImageData { Version = V8_0, OS = OS.Alpine322, Arch = Arch.Amd64, SdkOS = OS.Alpine322, ImageVariant = DotNetImageVariant.Composite, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V8_0, OS = OSInfo.Alpine322, Arch = Arch.Amd64, SdkOS = OSInfo.Alpine322, + new ProductImageData { Version = V8_0, OS = OS.Alpine322, Arch = Arch.Amd64, SdkOS = OS.Alpine322, ImageVariant = DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Runtime_Deps }, - new ProductImageData { Version = V8_0, OS = OSInfo.Alpine323, Arch = Arch.Amd64 }, - new ProductImageData { Version = V8_0, OS = OSInfo.Alpine323, Arch = Arch.Amd64, SdkOS = OSInfo.Alpine323, + new ProductImageData { Version = V8_0, OS = OS.Alpine323, Arch = Arch.Amd64 }, + new ProductImageData { Version = V8_0, OS = OS.Alpine323, Arch = Arch.Amd64, SdkOS = OS.Alpine323, ImageVariant = DotNetImageVariant.Composite, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V8_0, OS = OSInfo.Alpine323, Arch = Arch.Amd64, SdkOS = OSInfo.Alpine323, + new ProductImageData { Version = V8_0, OS = OS.Alpine323, Arch = Arch.Amd64, SdkOS = OS.Alpine323, ImageVariant = DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Runtime_Deps }, - new ProductImageData { Version = V8_0, OS = OSInfo.AzureLinux30, Arch = Arch.Amd64 }, - new ProductImageData { Version = V8_0, OS = OSInfo.AzureLinux30Distroless, Arch = Arch.Amd64, SdkOS = OSInfo.AzureLinux30 }, - new ProductImageData { Version = V8_0, OS = OSInfo.AzureLinux30Distroless, Arch = Arch.Amd64, SdkOS = OSInfo.AzureLinux30, + new ProductImageData { Version = V8_0, OS = OS.AzureLinux30, Arch = Arch.Amd64 }, + new ProductImageData { Version = V8_0, OS = OS.AzureLinux30Distroless, Arch = Arch.Amd64, SdkOS = OS.AzureLinux30 }, + new ProductImageData { Version = V8_0, OS = OS.AzureLinux30Distroless, Arch = Arch.Amd64, SdkOS = OS.AzureLinux30, ImageVariant = DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Runtime_Deps | DotNetImageRepo.Runtime | DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V8_0, OS = OSInfo.AzureLinux30Distroless, Arch = Arch.Amd64, SdkOS = OSInfo.AzureLinux30, + new ProductImageData { Version = V8_0, OS = OS.AzureLinux30Distroless, Arch = Arch.Amd64, SdkOS = OS.AzureLinux30, ImageVariant = DotNetImageVariant.Composite, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V8_0, OS = OSInfo.AzureLinux30Distroless, Arch = Arch.Amd64, SdkOS = OSInfo.AzureLinux30, + new ProductImageData { Version = V8_0, OS = OS.AzureLinux30Distroless, Arch = Arch.Amd64, SdkOS = OS.AzureLinux30, ImageVariant = DotNetImageVariant.Composite | DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V8_0, OS = OSInfo.Mariner20, Arch = Arch.Amd64 }, - new ProductImageData { Version = V8_0, OS = OSInfo.Mariner20Distroless, Arch = Arch.Amd64, SdkOS = OSInfo.Mariner20 }, - new ProductImageData { Version = V8_0, OS = OSInfo.Mariner20Distroless, Arch = Arch.Amd64, SdkOS = OSInfo.Mariner20, + new ProductImageData { Version = V8_0, OS = OS.Mariner20, Arch = Arch.Amd64 }, + new ProductImageData { Version = V8_0, OS = OS.Mariner20Distroless, Arch = Arch.Amd64, SdkOS = OS.Mariner20 }, + new ProductImageData { Version = V8_0, OS = OS.Mariner20Distroless, Arch = Arch.Amd64, SdkOS = OS.Mariner20, ImageVariant = DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Runtime_Deps | DotNetImageRepo.Runtime | DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V8_0, OS = OSInfo.Mariner20Distroless, Arch = Arch.Amd64, SdkOS = OSInfo.Mariner20, + new ProductImageData { Version = V8_0, OS = OS.Mariner20Distroless, Arch = Arch.Amd64, SdkOS = OS.Mariner20, ImageVariant = DotNetImageVariant.Composite, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V8_0, OS = OSInfo.Mariner20Distroless, Arch = Arch.Amd64, SdkOS = OSInfo.Mariner20, + new ProductImageData { Version = V8_0, OS = OS.Mariner20Distroless, Arch = Arch.Amd64, SdkOS = OS.Mariner20, ImageVariant = DotNetImageVariant.Composite | DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V8_0, OS = OSInfo.AzureLinux30, Arch = Arch.Arm64 }, - new ProductImageData { Version = V8_0, OS = OSInfo.AzureLinux30Distroless, Arch = Arch.Arm64, SdkOS = OSInfo.AzureLinux30 }, - new ProductImageData { Version = V8_0, OS = OSInfo.AzureLinux30Distroless, Arch = Arch.Arm64, SdkOS = OSInfo.AzureLinux30, + new ProductImageData { Version = V8_0, OS = OS.AzureLinux30, Arch = Arch.Arm64 }, + new ProductImageData { Version = V8_0, OS = OS.AzureLinux30Distroless, Arch = Arch.Arm64, SdkOS = OS.AzureLinux30 }, + new ProductImageData { Version = V8_0, OS = OS.AzureLinux30Distroless, Arch = Arch.Arm64, SdkOS = OS.AzureLinux30, ImageVariant = DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Runtime_Deps | DotNetImageRepo.Runtime | DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V8_0, OS = OSInfo.AzureLinux30Distroless, Arch = Arch.Arm64, SdkOS = OSInfo.AzureLinux30, + new ProductImageData { Version = V8_0, OS = OS.AzureLinux30Distroless, Arch = Arch.Arm64, SdkOS = OS.AzureLinux30, ImageVariant = DotNetImageVariant.Composite, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V8_0, OS = OSInfo.AzureLinux30Distroless, Arch = Arch.Arm64, SdkOS = OSInfo.AzureLinux30, + new ProductImageData { Version = V8_0, OS = OS.AzureLinux30Distroless, Arch = Arch.Arm64, SdkOS = OS.AzureLinux30, ImageVariant = DotNetImageVariant.Composite | DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V8_0, OS = OSInfo.Mariner20, Arch = Arch.Arm64 }, - new ProductImageData { Version = V8_0, OS = OSInfo.Mariner20Distroless, Arch = Arch.Arm64, SdkOS = OSInfo.Mariner20 }, - new ProductImageData { Version = V8_0, OS = OSInfo.Mariner20Distroless, Arch = Arch.Arm64, SdkOS = OSInfo.Mariner20, + new ProductImageData { Version = V8_0, OS = OS.Mariner20, Arch = Arch.Arm64 }, + new ProductImageData { Version = V8_0, OS = OS.Mariner20Distroless, Arch = Arch.Arm64, SdkOS = OS.Mariner20 }, + new ProductImageData { Version = V8_0, OS = OS.Mariner20Distroless, Arch = Arch.Arm64, SdkOS = OS.Mariner20, ImageVariant = DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Runtime_Deps | DotNetImageRepo.Runtime | DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V8_0, OS = OSInfo.Mariner20Distroless, Arch = Arch.Arm64, SdkOS = OSInfo.Mariner20, + new ProductImageData { Version = V8_0, OS = OS.Mariner20Distroless, Arch = Arch.Arm64, SdkOS = OS.Mariner20, ImageVariant = DotNetImageVariant.Composite, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V8_0, OS = OSInfo.Mariner20Distroless, Arch = Arch.Arm64, SdkOS = OSInfo.Mariner20, + new ProductImageData { Version = V8_0, OS = OS.Mariner20Distroless, Arch = Arch.Arm64, SdkOS = OS.Mariner20, ImageVariant = DotNetImageVariant.Composite | DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V8_0, OS = OSInfo.BookwormSlim, Arch = Arch.Arm64 }, - new ProductImageData { Version = V8_0, OS = OSInfo.Jammy, Arch = Arch.Arm64 }, - new ProductImageData { Version = V8_0, OS = OSInfo.JammyChiseled, Arch = Arch.Arm64, SdkOS = OSInfo.Jammy }, - new ProductImageData { Version = V8_0, OS = OSInfo.JammyChiseled, Arch = Arch.Arm64, SdkOS = OSInfo.Jammy, + new ProductImageData { Version = V8_0, OS = OS.BookwormSlim, Arch = Arch.Arm64 }, + new ProductImageData { Version = V8_0, OS = OS.Jammy, Arch = Arch.Arm64 }, + new ProductImageData { Version = V8_0, OS = OS.JammyChiseled, Arch = Arch.Arm64, SdkOS = OS.Jammy }, + new ProductImageData { Version = V8_0, OS = OS.JammyChiseled, Arch = Arch.Arm64, SdkOS = OS.Jammy, ImageVariant = DotNetImageVariant.Composite, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V8_0, OS = OSInfo.JammyChiseled, Arch = Arch.Arm64, SdkOS = OSInfo.Jammy, + new ProductImageData { Version = V8_0, OS = OS.JammyChiseled, Arch = Arch.Arm64, SdkOS = OS.Jammy, ImageVariant = DotNetImageVariant.Composite | DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V8_0, OS = OSInfo.JammyChiseled, Arch = Arch.Arm64, SdkOS = OSInfo.Jammy, + new ProductImageData { Version = V8_0, OS = OS.JammyChiseled, Arch = Arch.Arm64, SdkOS = OS.Jammy, ImageVariant = DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Runtime_Deps | DotNetImageRepo.Runtime | DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V8_0, OS = OSInfo.Noble, Arch = Arch.Arm64 }, - new ProductImageData { Version = V8_0, OS = OSInfo.NobleChiseled, Arch = Arch.Arm64, SdkOS = OSInfo.Noble }, - new ProductImageData { Version = V8_0, OS = OSInfo.NobleChiseled, Arch = Arch.Arm64, SdkOS = OSInfo.Noble, + new ProductImageData { Version = V8_0, OS = OS.Noble, Arch = Arch.Arm64 }, + new ProductImageData { Version = V8_0, OS = OS.NobleChiseled, Arch = Arch.Arm64, SdkOS = OS.Noble }, + new ProductImageData { Version = V8_0, OS = OS.NobleChiseled, Arch = Arch.Arm64, SdkOS = OS.Noble, ImageVariant = DotNetImageVariant.Composite, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V8_0, OS = OSInfo.NobleChiseled, Arch = Arch.Arm64, SdkOS = OSInfo.Noble, + new ProductImageData { Version = V8_0, OS = OS.NobleChiseled, Arch = Arch.Arm64, SdkOS = OS.Noble, ImageVariant = DotNetImageVariant.Composite | DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V8_0, OS = OSInfo.NobleChiseled, Arch = Arch.Arm64, SdkOS = OSInfo.Noble, + new ProductImageData { Version = V8_0, OS = OS.NobleChiseled, Arch = Arch.Arm64, SdkOS = OS.Noble, ImageVariant = DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Runtime_Deps | DotNetImageRepo.Runtime | DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V8_0, OS = OSInfo.Alpine322, Arch = Arch.Arm64 }, - new ProductImageData { Version = V8_0, OS = OSInfo.Alpine322, Arch = Arch.Arm64, SdkOS = OSInfo.Alpine322, + new ProductImageData { Version = V8_0, OS = OS.Alpine322, Arch = Arch.Arm64 }, + new ProductImageData { Version = V8_0, OS = OS.Alpine322, Arch = Arch.Arm64, SdkOS = OS.Alpine322, ImageVariant = DotNetImageVariant.Composite, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V8_0, OS = OSInfo.Alpine322, Arch = Arch.Arm64, SdkOS = OSInfo.Alpine322, + new ProductImageData { Version = V8_0, OS = OS.Alpine322, Arch = Arch.Arm64, SdkOS = OS.Alpine322, ImageVariant = DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Runtime_Deps }, - new ProductImageData { Version = V8_0, OS = OSInfo.Alpine323, Arch = Arch.Arm64 }, - new ProductImageData { Version = V8_0, OS = OSInfo.Alpine323, Arch = Arch.Arm64, SdkOS = OSInfo.Alpine323, + new ProductImageData { Version = V8_0, OS = OS.Alpine323, Arch = Arch.Arm64 }, + new ProductImageData { Version = V8_0, OS = OS.Alpine323, Arch = Arch.Arm64, SdkOS = OS.Alpine323, ImageVariant = DotNetImageVariant.Composite, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V8_0, OS = OSInfo.Alpine323, Arch = Arch.Arm64, SdkOS = OSInfo.Alpine323, + new ProductImageData { Version = V8_0, OS = OS.Alpine323, Arch = Arch.Arm64, SdkOS = OS.Alpine323, ImageVariant = DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Runtime_Deps }, - new ProductImageData { Version = V8_0, OS = OSInfo.BookwormSlim, Arch = Arch.Arm }, - new ProductImageData { Version = V8_0, OS = OSInfo.Jammy, Arch = Arch.Arm }, - new ProductImageData { Version = V8_0, OS = OSInfo.JammyChiseled, Arch = Arch.Arm, SdkOS = OSInfo.Jammy }, - new ProductImageData { Version = V8_0, OS = OSInfo.JammyChiseled, Arch = Arch.Arm, SdkOS = OSInfo.Jammy, + new ProductImageData { Version = V8_0, OS = OS.BookwormSlim, Arch = Arch.Arm }, + new ProductImageData { Version = V8_0, OS = OS.Jammy, Arch = Arch.Arm }, + new ProductImageData { Version = V8_0, OS = OS.JammyChiseled, Arch = Arch.Arm, SdkOS = OS.Jammy }, + new ProductImageData { Version = V8_0, OS = OS.JammyChiseled, Arch = Arch.Arm, SdkOS = OS.Jammy, ImageVariant = DotNetImageVariant.Composite, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V8_0, OS = OSInfo.JammyChiseled, Arch = Arch.Arm, SdkOS = OSInfo.Jammy, + new ProductImageData { Version = V8_0, OS = OS.JammyChiseled, Arch = Arch.Arm, SdkOS = OS.Jammy, ImageVariant = DotNetImageVariant.Composite | DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V8_0, OS = OSInfo.JammyChiseled, Arch = Arch.Arm, SdkOS = OSInfo.Jammy, + new ProductImageData { Version = V8_0, OS = OS.JammyChiseled, Arch = Arch.Arm, SdkOS = OS.Jammy, ImageVariant = DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Runtime_Deps | DotNetImageRepo.Runtime | DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V8_0, OS = OSInfo.Alpine322, Arch = Arch.Arm }, - new ProductImageData { Version = V8_0, OS = OSInfo.Alpine322, Arch = Arch.Arm, SdkOS = OSInfo.Alpine322, + new ProductImageData { Version = V8_0, OS = OS.Alpine322, Arch = Arch.Arm }, + new ProductImageData { Version = V8_0, OS = OS.Alpine322, Arch = Arch.Arm, SdkOS = OS.Alpine322, ImageVariant = DotNetImageVariant.Composite, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V8_0, OS = OSInfo.Alpine322, Arch = Arch.Arm, SdkOS = OSInfo.Alpine322, + new ProductImageData { Version = V8_0, OS = OS.Alpine322, Arch = Arch.Arm, SdkOS = OS.Alpine322, ImageVariant = DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Runtime_Deps }, - new ProductImageData { Version = V8_0, OS = OSInfo.Alpine323, Arch = Arch.Arm }, - new ProductImageData { Version = V8_0, OS = OSInfo.Alpine323, Arch = Arch.Arm, SdkOS = OSInfo.Alpine323, + new ProductImageData { Version = V8_0, OS = OS.Alpine323, Arch = Arch.Arm }, + new ProductImageData { Version = V8_0, OS = OS.Alpine323, Arch = Arch.Arm, SdkOS = OS.Alpine323, ImageVariant = DotNetImageVariant.Composite, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V8_0, OS = OSInfo.Alpine323, Arch = Arch.Arm, SdkOS = OSInfo.Alpine323, + new ProductImageData { Version = V8_0, OS = OS.Alpine323, Arch = Arch.Arm, SdkOS = OS.Alpine323, ImageVariant = DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Runtime_Deps }, - new ProductImageData { Version = V9_0, OS = OSInfo.BookwormSlim, Arch = Arch.Amd64 }, - new ProductImageData { Version = V9_0, OS = OSInfo.Noble, Arch = Arch.Amd64 }, - new ProductImageData { Version = V9_0, OS = OSInfo.NobleChiseled, Arch = Arch.Amd64, SdkOS = OSInfo.Noble }, - new ProductImageData { Version = V9_0, OS = OSInfo.NobleChiseled, Arch = Arch.Amd64, SdkOS = OSInfo.Noble }, - new ProductImageData { Version = V9_0, OS = OSInfo.NobleChiseled, Arch = Arch.Amd64, SdkOS = OSInfo.Noble, + new ProductImageData { Version = V9_0, OS = OS.BookwormSlim, Arch = Arch.Amd64 }, + new ProductImageData { Version = V9_0, OS = OS.Noble, Arch = Arch.Amd64 }, + new ProductImageData { Version = V9_0, OS = OS.NobleChiseled, Arch = Arch.Amd64, SdkOS = OS.Noble }, + new ProductImageData { Version = V9_0, OS = OS.NobleChiseled, Arch = Arch.Amd64, SdkOS = OS.Noble }, + new ProductImageData { Version = V9_0, OS = OS.NobleChiseled, Arch = Arch.Amd64, SdkOS = OS.Noble, ImageVariant = DotNetImageVariant.Composite, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V9_0, OS = OSInfo.NobleChiseled, Arch = Arch.Amd64, SdkOS = OSInfo.Noble, + new ProductImageData { Version = V9_0, OS = OS.NobleChiseled, Arch = Arch.Amd64, SdkOS = OS.Noble, ImageVariant = DotNetImageVariant.Composite | DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V9_0, OS = OSInfo.NobleChiseled, Arch = Arch.Amd64, SdkOS = OSInfo.Noble, + new ProductImageData { Version = V9_0, OS = OS.NobleChiseled, Arch = Arch.Amd64, SdkOS = OS.Noble, ImageVariant = DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Runtime_Deps | DotNetImageRepo.Runtime | DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V9_0, OS = OSInfo.Alpine322, Arch = Arch.Amd64 }, - new ProductImageData { Version = V9_0, OS = OSInfo.Alpine322, Arch = Arch.Amd64, SdkOS = OSInfo.Alpine322, + new ProductImageData { Version = V9_0, OS = OS.Alpine322, Arch = Arch.Amd64 }, + new ProductImageData { Version = V9_0, OS = OS.Alpine322, Arch = Arch.Amd64, SdkOS = OS.Alpine322, ImageVariant = DotNetImageVariant.Composite, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V9_0, OS = OSInfo.Alpine322, Arch = Arch.Amd64, SdkOS = OSInfo.Alpine322, + new ProductImageData { Version = V9_0, OS = OS.Alpine322, Arch = Arch.Amd64, SdkOS = OS.Alpine322, ImageVariant = DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Runtime_Deps }, - new ProductImageData { Version = V9_0, OS = OSInfo.Alpine323, Arch = Arch.Amd64 }, - new ProductImageData { Version = V9_0, OS = OSInfo.Alpine323, Arch = Arch.Amd64, SdkOS = OSInfo.Alpine323, + new ProductImageData { Version = V9_0, OS = OS.Alpine323, Arch = Arch.Amd64 }, + new ProductImageData { Version = V9_0, OS = OS.Alpine323, Arch = Arch.Amd64, SdkOS = OS.Alpine323, ImageVariant = DotNetImageVariant.Composite, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V9_0, OS = OSInfo.Alpine323, Arch = Arch.Amd64, SdkOS = OSInfo.Alpine323, + new ProductImageData { Version = V9_0, OS = OS.Alpine323, Arch = Arch.Amd64, SdkOS = OS.Alpine323, ImageVariant = DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Runtime_Deps }, - new ProductImageData { Version = V9_0, OS = OSInfo.AzureLinux30, Arch = Arch.Amd64 }, - new ProductImageData { Version = V9_0, OS = OSInfo.AzureLinux30Distroless, Arch = Arch.Amd64, SdkOS = OSInfo.AzureLinux30 }, - new ProductImageData { Version = V9_0, OS = OSInfo.AzureLinux30Distroless, Arch = Arch.Amd64, SdkOS = OSInfo.AzureLinux30, + new ProductImageData { Version = V9_0, OS = OS.AzureLinux30, Arch = Arch.Amd64 }, + new ProductImageData { Version = V9_0, OS = OS.AzureLinux30Distroless, Arch = Arch.Amd64, SdkOS = OS.AzureLinux30 }, + new ProductImageData { Version = V9_0, OS = OS.AzureLinux30Distroless, Arch = Arch.Amd64, SdkOS = OS.AzureLinux30, ImageVariant = DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Runtime_Deps | DotNetImageRepo.Runtime | DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V9_0, OS = OSInfo.AzureLinux30Distroless, Arch = Arch.Amd64, SdkOS = OSInfo.AzureLinux30, + new ProductImageData { Version = V9_0, OS = OS.AzureLinux30Distroless, Arch = Arch.Amd64, SdkOS = OS.AzureLinux30, ImageVariant = DotNetImageVariant.Composite, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V9_0, OS = OSInfo.AzureLinux30Distroless, Arch = Arch.Amd64, SdkOS = OSInfo.AzureLinux30, + new ProductImageData { Version = V9_0, OS = OS.AzureLinux30Distroless, Arch = Arch.Amd64, SdkOS = OS.AzureLinux30, ImageVariant = DotNetImageVariant.Composite | DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V9_0, OS = OSInfo.AzureLinux30, Arch = Arch.Arm64 }, - new ProductImageData { Version = V9_0, OS = OSInfo.AzureLinux30Distroless, Arch = Arch.Arm64, SdkOS = OSInfo.AzureLinux30 }, - new ProductImageData { Version = V9_0, OS = OSInfo.AzureLinux30Distroless, Arch = Arch.Arm64, SdkOS = OSInfo.AzureLinux30, + new ProductImageData { Version = V9_0, OS = OS.AzureLinux30, Arch = Arch.Arm64 }, + new ProductImageData { Version = V9_0, OS = OS.AzureLinux30Distroless, Arch = Arch.Arm64, SdkOS = OS.AzureLinux30 }, + new ProductImageData { Version = V9_0, OS = OS.AzureLinux30Distroless, Arch = Arch.Arm64, SdkOS = OS.AzureLinux30, ImageVariant = DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Runtime_Deps | DotNetImageRepo.Runtime | DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V9_0, OS = OSInfo.AzureLinux30Distroless, Arch = Arch.Arm64, SdkOS = OSInfo.AzureLinux30, + new ProductImageData { Version = V9_0, OS = OS.AzureLinux30Distroless, Arch = Arch.Arm64, SdkOS = OS.AzureLinux30, ImageVariant = DotNetImageVariant.Composite, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V9_0, OS = OSInfo.AzureLinux30Distroless, Arch = Arch.Arm64, SdkOS = OSInfo.AzureLinux30, + new ProductImageData { Version = V9_0, OS = OS.AzureLinux30Distroless, Arch = Arch.Arm64, SdkOS = OS.AzureLinux30, ImageVariant = DotNetImageVariant.Composite | DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V9_0, OS = OSInfo.BookwormSlim, Arch = Arch.Arm64 }, - new ProductImageData { Version = V9_0, OS = OSInfo.Noble, Arch = Arch.Arm64 }, - new ProductImageData { Version = V9_0, OS = OSInfo.NobleChiseled, Arch = Arch.Arm64, SdkOS = OSInfo.Noble }, - new ProductImageData { Version = V9_0, OS = OSInfo.NobleChiseled, Arch = Arch.Arm64, SdkOS = OSInfo.Noble, + new ProductImageData { Version = V9_0, OS = OS.BookwormSlim, Arch = Arch.Arm64 }, + new ProductImageData { Version = V9_0, OS = OS.Noble, Arch = Arch.Arm64 }, + new ProductImageData { Version = V9_0, OS = OS.NobleChiseled, Arch = Arch.Arm64, SdkOS = OS.Noble }, + new ProductImageData { Version = V9_0, OS = OS.NobleChiseled, Arch = Arch.Arm64, SdkOS = OS.Noble, ImageVariant = DotNetImageVariant.Composite, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V9_0, OS = OSInfo.NobleChiseled, Arch = Arch.Arm64, SdkOS = OSInfo.Noble, + new ProductImageData { Version = V9_0, OS = OS.NobleChiseled, Arch = Arch.Arm64, SdkOS = OS.Noble, ImageVariant = DotNetImageVariant.Composite | DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V9_0, OS = OSInfo.NobleChiseled, Arch = Arch.Arm64, SdkOS = OSInfo.Noble, + new ProductImageData { Version = V9_0, OS = OS.NobleChiseled, Arch = Arch.Arm64, SdkOS = OS.Noble, ImageVariant = DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Runtime_Deps | DotNetImageRepo.Runtime | DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V9_0, OS = OSInfo.Alpine322, Arch = Arch.Arm64 }, - new ProductImageData { Version = V9_0, OS = OSInfo.Alpine322, Arch = Arch.Arm64, SdkOS = OSInfo.Alpine322, + new ProductImageData { Version = V9_0, OS = OS.Alpine322, Arch = Arch.Arm64 }, + new ProductImageData { Version = V9_0, OS = OS.Alpine322, Arch = Arch.Arm64, SdkOS = OS.Alpine322, ImageVariant = DotNetImageVariant.Composite, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V9_0, OS = OSInfo.Alpine322, Arch = Arch.Arm64, SdkOS = OSInfo.Alpine322, + new ProductImageData { Version = V9_0, OS = OS.Alpine322, Arch = Arch.Arm64, SdkOS = OS.Alpine322, ImageVariant = DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Runtime_Deps }, - new ProductImageData { Version = V9_0, OS = OSInfo.Alpine323, Arch = Arch.Arm64 }, - new ProductImageData { Version = V9_0, OS = OSInfo.Alpine323, Arch = Arch.Arm64, SdkOS = OSInfo.Alpine323, + new ProductImageData { Version = V9_0, OS = OS.Alpine323, Arch = Arch.Arm64 }, + new ProductImageData { Version = V9_0, OS = OS.Alpine323, Arch = Arch.Arm64, SdkOS = OS.Alpine323, ImageVariant = DotNetImageVariant.Composite, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V9_0, OS = OSInfo.Alpine323, Arch = Arch.Arm64, SdkOS = OSInfo.Alpine323, + new ProductImageData { Version = V9_0, OS = OS.Alpine323, Arch = Arch.Arm64, SdkOS = OS.Alpine323, ImageVariant = DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Runtime_Deps }, - new ProductImageData { Version = V9_0, OS = OSInfo.BookwormSlim, Arch = Arch.Arm }, - new ProductImageData { Version = V9_0, OS = OSInfo.Alpine322, Arch = Arch.Arm }, - new ProductImageData { Version = V9_0, OS = OSInfo.Alpine322, Arch = Arch.Arm, SdkOS = OSInfo.Alpine322, + new ProductImageData { Version = V9_0, OS = OS.BookwormSlim, Arch = Arch.Arm }, + new ProductImageData { Version = V9_0, OS = OS.Alpine322, Arch = Arch.Arm }, + new ProductImageData { Version = V9_0, OS = OS.Alpine322, Arch = Arch.Arm, SdkOS = OS.Alpine322, ImageVariant = DotNetImageVariant.Composite, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V9_0, OS = OSInfo.Alpine322, Arch = Arch.Arm, SdkOS = OSInfo.Alpine322, + new ProductImageData { Version = V9_0, OS = OS.Alpine322, Arch = Arch.Arm, SdkOS = OS.Alpine322, ImageVariant = DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Runtime_Deps }, - new ProductImageData { Version = V9_0, OS = OSInfo.Alpine323, Arch = Arch.Arm }, - new ProductImageData { Version = V9_0, OS = OSInfo.Alpine323, Arch = Arch.Arm, SdkOS = OSInfo.Alpine323, + new ProductImageData { Version = V9_0, OS = OS.Alpine323, Arch = Arch.Arm }, + new ProductImageData { Version = V9_0, OS = OS.Alpine323, Arch = Arch.Arm, SdkOS = OS.Alpine323, ImageVariant = DotNetImageVariant.Composite, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V9_0, OS = OSInfo.Alpine323, Arch = Arch.Arm, SdkOS = OSInfo.Alpine323, + new ProductImageData { Version = V9_0, OS = OS.Alpine323, Arch = Arch.Arm, SdkOS = OS.Alpine323, ImageVariant = DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Runtime_Deps }, - new ProductImageData { Version = V9_0, OS = OSInfo.Noble, Arch = Arch.Arm }, - new ProductImageData { Version = V9_0, OS = OSInfo.NobleChiseled, Arch = Arch.Arm, SdkOS = OSInfo.Noble }, - new ProductImageData { Version = V9_0, OS = OSInfo.NobleChiseled, Arch = Arch.Arm, SdkOS = OSInfo.Noble, + new ProductImageData { Version = V9_0, OS = OS.Noble, Arch = Arch.Arm }, + new ProductImageData { Version = V9_0, OS = OS.NobleChiseled, Arch = Arch.Arm, SdkOS = OS.Noble }, + new ProductImageData { Version = V9_0, OS = OS.NobleChiseled, Arch = Arch.Arm, SdkOS = OS.Noble, ImageVariant = DotNetImageVariant.Composite, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V9_0, OS = OSInfo.NobleChiseled, Arch = Arch.Arm, SdkOS = OSInfo.Noble, + new ProductImageData { Version = V9_0, OS = OS.NobleChiseled, Arch = Arch.Arm, SdkOS = OS.Noble, ImageVariant = DotNetImageVariant.Composite | DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V9_0, OS = OSInfo.NobleChiseled, Arch = Arch.Arm, SdkOS = OSInfo.Noble, + new ProductImageData { Version = V9_0, OS = OS.NobleChiseled, Arch = Arch.Arm, SdkOS = OS.Noble, ImageVariant = DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Runtime_Deps | DotNetImageRepo.Runtime | DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V10_0, OS = OSInfo.Noble, Arch = Arch.Amd64 }, - new ProductImageData { Version = V10_0, OS = OSInfo.NobleChiseled, Arch = Arch.Amd64, SdkOS = OSInfo.Noble }, - new ProductImageData { Version = V10_0, OS = OSInfo.NobleChiseled, Arch = Arch.Amd64, SdkOS = OSInfo.Noble, + new ProductImageData { Version = V10_0, OS = OS.Noble, Arch = Arch.Amd64 }, + new ProductImageData { Version = V10_0, OS = OS.NobleChiseled, Arch = Arch.Amd64, SdkOS = OS.Noble }, + new ProductImageData { Version = V10_0, OS = OS.NobleChiseled, Arch = Arch.Amd64, SdkOS = OS.Noble, ImageVariant = DotNetImageVariant.Composite, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V10_0, OS = OSInfo.NobleChiseled, Arch = Arch.Amd64, SdkOS = OSInfo.Noble, + new ProductImageData { Version = V10_0, OS = OS.NobleChiseled, Arch = Arch.Amd64, SdkOS = OS.Noble, ImageVariant = DotNetImageVariant.Composite | DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V10_0, OS = OSInfo.NobleChiseled, Arch = Arch.Amd64, SdkOS = OSInfo.Noble, + new ProductImageData { Version = V10_0, OS = OS.NobleChiseled, Arch = Arch.Amd64, SdkOS = OS.Noble, ImageVariant = DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Runtime_Deps | DotNetImageRepo.Runtime | DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V10_0, OS = OSInfo.Alpine322, Arch = Arch.Amd64 }, - new ProductImageData { Version = V10_0, OS = OSInfo.Alpine322, Arch = Arch.Amd64, SdkOS = OSInfo.Alpine322, + new ProductImageData { Version = V10_0, OS = OS.Alpine322, Arch = Arch.Amd64 }, + new ProductImageData { Version = V10_0, OS = OS.Alpine322, Arch = Arch.Amd64, SdkOS = OS.Alpine322, ImageVariant = DotNetImageVariant.Composite, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V10_0, OS = OSInfo.Alpine322, Arch = Arch.Amd64, SdkOS = OSInfo.Alpine322, + new ProductImageData { Version = V10_0, OS = OS.Alpine322, Arch = Arch.Amd64, SdkOS = OS.Alpine322, ImageVariant = DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Runtime_Deps }, - new ProductImageData { Version = V10_0, OS = OSInfo.Alpine323, Arch = Arch.Amd64 }, - new ProductImageData { Version = V10_0, OS = OSInfo.Alpine323, Arch = Arch.Amd64, SdkOS = OSInfo.Alpine323, + new ProductImageData { Version = V10_0, OS = OS.Alpine323, Arch = Arch.Amd64 }, + new ProductImageData { Version = V10_0, OS = OS.Alpine323, Arch = Arch.Amd64, SdkOS = OS.Alpine323, ImageVariant = DotNetImageVariant.Composite, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V10_0, OS = OSInfo.Alpine323, Arch = Arch.Amd64, SdkOS = OSInfo.Alpine323, + new ProductImageData { Version = V10_0, OS = OS.Alpine323, Arch = Arch.Amd64, SdkOS = OS.Alpine323, ImageVariant = DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Runtime_Deps }, - new ProductImageData { Version = V10_0, OS = OSInfo.AzureLinux30, Arch = Arch.Amd64 }, - new ProductImageData { Version = V10_0, OS = OSInfo.AzureLinux30Distroless, Arch = Arch.Amd64, SdkOS = OSInfo.AzureLinux30 }, - new ProductImageData { Version = V10_0, OS = OSInfo.AzureLinux30Distroless, Arch = Arch.Amd64, SdkOS = OSInfo.AzureLinux30, + new ProductImageData { Version = V10_0, OS = OS.AzureLinux30, Arch = Arch.Amd64 }, + new ProductImageData { Version = V10_0, OS = OS.AzureLinux30Distroless, Arch = Arch.Amd64, SdkOS = OS.AzureLinux30 }, + new ProductImageData { Version = V10_0, OS = OS.AzureLinux30Distroless, Arch = Arch.Amd64, SdkOS = OS.AzureLinux30, ImageVariant = DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Runtime_Deps | DotNetImageRepo.Runtime | DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V10_0, OS = OSInfo.AzureLinux30Distroless, Arch = Arch.Amd64, SdkOS = OSInfo.AzureLinux30, + new ProductImageData { Version = V10_0, OS = OS.AzureLinux30Distroless, Arch = Arch.Amd64, SdkOS = OS.AzureLinux30, ImageVariant = DotNetImageVariant.Composite, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V10_0, OS = OSInfo.AzureLinux30Distroless, Arch = Arch.Amd64, SdkOS = OSInfo.AzureLinux30, + new ProductImageData { Version = V10_0, OS = OS.AzureLinux30Distroless, Arch = Arch.Amd64, SdkOS = OS.AzureLinux30, ImageVariant = DotNetImageVariant.Composite | DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new() { Version = V10_0, Arch = Arch.Amd64, SdkImageVariant = DotNetImageVariant.AOT, SupportedImageRepos = DotNetImageRepo.Runtime_Deps, OS = OSInfo.Alpine322 }, - new() { Version = V10_0, Arch = Arch.Amd64, SdkImageVariant = DotNetImageVariant.AOT, SupportedImageRepos = DotNetImageRepo.Runtime_Deps, OS = OSInfo.Alpine323 }, - new() { Version = V10_0, Arch = Arch.Amd64, SdkImageVariant = DotNetImageVariant.AOT, SupportedImageRepos = DotNetImageRepo.Runtime_Deps, OS = OSInfo.AzureLinux30Distroless, SdkOS = OSInfo.AzureLinux30 }, - new() { Version = V10_0, Arch = Arch.Amd64, SdkImageVariant = DotNetImageVariant.AOT, SupportedImageRepos = DotNetImageRepo.Runtime_Deps, OS = OSInfo.NobleChiseled, SdkOS = OSInfo.Noble }, + new() { Version = V10_0, Arch = Arch.Amd64, SdkImageVariant = DotNetImageVariant.AOT, SupportedImageRepos = DotNetImageRepo.Runtime_Deps, OS = OS.Alpine322 }, + new() { Version = V10_0, Arch = Arch.Amd64, SdkImageVariant = DotNetImageVariant.AOT, SupportedImageRepos = DotNetImageRepo.Runtime_Deps, OS = OS.Alpine323 }, + new() { Version = V10_0, Arch = Arch.Amd64, SdkImageVariant = DotNetImageVariant.AOT, SupportedImageRepos = DotNetImageRepo.Runtime_Deps, OS = OS.AzureLinux30Distroless, SdkOS = OS.AzureLinux30 }, + new() { Version = V10_0, Arch = Arch.Amd64, SdkImageVariant = DotNetImageVariant.AOT, SupportedImageRepos = DotNetImageRepo.Runtime_Deps, OS = OS.NobleChiseled, SdkOS = OS.Noble }, - new ProductImageData { Version = V10_0, OS = OSInfo.AzureLinux30, Arch = Arch.Arm64 }, - new ProductImageData { Version = V10_0, OS = OSInfo.AzureLinux30Distroless, Arch = Arch.Arm64, SdkOS = OSInfo.AzureLinux30 }, - new ProductImageData { Version = V10_0, OS = OSInfo.AzureLinux30Distroless, Arch = Arch.Arm64, SdkOS = OSInfo.AzureLinux30, + new ProductImageData { Version = V10_0, OS = OS.AzureLinux30, Arch = Arch.Arm64 }, + new ProductImageData { Version = V10_0, OS = OS.AzureLinux30Distroless, Arch = Arch.Arm64, SdkOS = OS.AzureLinux30 }, + new ProductImageData { Version = V10_0, OS = OS.AzureLinux30Distroless, Arch = Arch.Arm64, SdkOS = OS.AzureLinux30, ImageVariant = DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Runtime_Deps | DotNetImageRepo.Runtime | DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V10_0, OS = OSInfo.AzureLinux30Distroless, Arch = Arch.Arm64, SdkOS = OSInfo.AzureLinux30, + new ProductImageData { Version = V10_0, OS = OS.AzureLinux30Distroless, Arch = Arch.Arm64, SdkOS = OS.AzureLinux30, ImageVariant = DotNetImageVariant.Composite, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V10_0, OS = OSInfo.AzureLinux30Distroless, Arch = Arch.Arm64, SdkOS = OSInfo.AzureLinux30, + new ProductImageData { Version = V10_0, OS = OS.AzureLinux30Distroless, Arch = Arch.Arm64, SdkOS = OS.AzureLinux30, ImageVariant = DotNetImageVariant.Composite | DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V10_0, OS = OSInfo.Noble, Arch = Arch.Arm64 }, - new ProductImageData { Version = V10_0, OS = OSInfo.NobleChiseled, Arch = Arch.Arm64, SdkOS = OSInfo.Noble }, - new ProductImageData { Version = V10_0, OS = OSInfo.NobleChiseled, Arch = Arch.Arm64, SdkOS = OSInfo.Noble, + new ProductImageData { Version = V10_0, OS = OS.Noble, Arch = Arch.Arm64 }, + new ProductImageData { Version = V10_0, OS = OS.NobleChiseled, Arch = Arch.Arm64, SdkOS = OS.Noble }, + new ProductImageData { Version = V10_0, OS = OS.NobleChiseled, Arch = Arch.Arm64, SdkOS = OS.Noble, ImageVariant = DotNetImageVariant.Composite, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V10_0, OS = OSInfo.NobleChiseled, Arch = Arch.Arm64, SdkOS = OSInfo.Noble, + new ProductImageData { Version = V10_0, OS = OS.NobleChiseled, Arch = Arch.Arm64, SdkOS = OS.Noble, ImageVariant = DotNetImageVariant.Composite | DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V10_0, OS = OSInfo.NobleChiseled, Arch = Arch.Arm64, SdkOS = OSInfo.Noble, + new ProductImageData { Version = V10_0, OS = OS.NobleChiseled, Arch = Arch.Arm64, SdkOS = OS.Noble, ImageVariant = DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Runtime_Deps | DotNetImageRepo.Runtime | DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V10_0, OS = OSInfo.Alpine322, Arch = Arch.Arm64 }, - new ProductImageData { Version = V10_0, OS = OSInfo.Alpine322, Arch = Arch.Arm64, SdkOS = OSInfo.Alpine322, + new ProductImageData { Version = V10_0, OS = OS.Alpine322, Arch = Arch.Arm64 }, + new ProductImageData { Version = V10_0, OS = OS.Alpine322, Arch = Arch.Arm64, SdkOS = OS.Alpine322, ImageVariant = DotNetImageVariant.Composite, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V10_0, OS = OSInfo.Alpine322, Arch = Arch.Arm64, SdkOS = OSInfo.Alpine322, + new ProductImageData { Version = V10_0, OS = OS.Alpine322, Arch = Arch.Arm64, SdkOS = OS.Alpine322, ImageVariant = DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Runtime_Deps }, - new ProductImageData { Version = V10_0, OS = OSInfo.Alpine323, Arch = Arch.Arm64 }, - new ProductImageData { Version = V10_0, OS = OSInfo.Alpine323, Arch = Arch.Arm64, SdkOS = OSInfo.Alpine323, + new ProductImageData { Version = V10_0, OS = OS.Alpine323, Arch = Arch.Arm64 }, + new ProductImageData { Version = V10_0, OS = OS.Alpine323, Arch = Arch.Arm64, SdkOS = OS.Alpine323, ImageVariant = DotNetImageVariant.Composite, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V10_0, OS = OSInfo.Alpine323, Arch = Arch.Arm64, SdkOS = OSInfo.Alpine323, + new ProductImageData { Version = V10_0, OS = OS.Alpine323, Arch = Arch.Arm64, SdkOS = OS.Alpine323, ImageVariant = DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Runtime_Deps }, - new() { Version = V10_0, Arch = Arch.Arm64, SdkImageVariant = DotNetImageVariant.AOT, SupportedImageRepos = DotNetImageRepo.Runtime_Deps, OS = OSInfo.Alpine322 }, - new() { Version = V10_0, Arch = Arch.Arm64, SdkImageVariant = DotNetImageVariant.AOT, SupportedImageRepos = DotNetImageRepo.Runtime_Deps, OS = OSInfo.Alpine323 }, - new() { Version = V10_0, Arch = Arch.Arm64, SdkImageVariant = DotNetImageVariant.AOT, SupportedImageRepos = DotNetImageRepo.Runtime_Deps, OS = OSInfo.AzureLinux30Distroless, SdkOS = OSInfo.AzureLinux30 }, - new() { Version = V10_0, Arch = Arch.Arm64, SdkImageVariant = DotNetImageVariant.AOT, SupportedImageRepos = DotNetImageRepo.Runtime_Deps, OS = OSInfo.NobleChiseled, SdkOS = OSInfo.Noble }, + new() { Version = V10_0, Arch = Arch.Arm64, SdkImageVariant = DotNetImageVariant.AOT, SupportedImageRepos = DotNetImageRepo.Runtime_Deps, OS = OS.Alpine322 }, + new() { Version = V10_0, Arch = Arch.Arm64, SdkImageVariant = DotNetImageVariant.AOT, SupportedImageRepos = DotNetImageRepo.Runtime_Deps, OS = OS.Alpine323 }, + new() { Version = V10_0, Arch = Arch.Arm64, SdkImageVariant = DotNetImageVariant.AOT, SupportedImageRepos = DotNetImageRepo.Runtime_Deps, OS = OS.AzureLinux30Distroless, SdkOS = OS.AzureLinux30 }, + new() { Version = V10_0, Arch = Arch.Arm64, SdkImageVariant = DotNetImageVariant.AOT, SupportedImageRepos = DotNetImageRepo.Runtime_Deps, OS = OS.NobleChiseled, SdkOS = OS.Noble }, - new ProductImageData { Version = V10_0, OS = OSInfo.Alpine322, Arch = Arch.Arm }, - new ProductImageData { Version = V10_0, OS = OSInfo.Alpine322, Arch = Arch.Arm, SdkOS = OSInfo.Alpine322, + new ProductImageData { Version = V10_0, OS = OS.Alpine322, Arch = Arch.Arm }, + new ProductImageData { Version = V10_0, OS = OS.Alpine322, Arch = Arch.Arm, SdkOS = OS.Alpine322, ImageVariant = DotNetImageVariant.Composite, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V10_0, OS = OSInfo.Alpine322, Arch = Arch.Arm, SdkOS = OSInfo.Alpine322, + new ProductImageData { Version = V10_0, OS = OS.Alpine322, Arch = Arch.Arm, SdkOS = OS.Alpine322, ImageVariant = DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Runtime_Deps }, - new ProductImageData { Version = V10_0, OS = OSInfo.Alpine323, Arch = Arch.Arm }, - new ProductImageData { Version = V10_0, OS = OSInfo.Alpine323, Arch = Arch.Arm, SdkOS = OSInfo.Alpine323, + new ProductImageData { Version = V10_0, OS = OS.Alpine323, Arch = Arch.Arm }, + new ProductImageData { Version = V10_0, OS = OS.Alpine323, Arch = Arch.Arm, SdkOS = OS.Alpine323, ImageVariant = DotNetImageVariant.Composite, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V10_0, OS = OSInfo.Alpine323, Arch = Arch.Arm, SdkOS = OSInfo.Alpine323, + new ProductImageData { Version = V10_0, OS = OS.Alpine323, Arch = Arch.Arm, SdkOS = OS.Alpine323, ImageVariant = DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Runtime_Deps }, - new ProductImageData { Version = V10_0, OS = OSInfo.Noble, Arch = Arch.Arm }, - new ProductImageData { Version = V10_0, OS = OSInfo.NobleChiseled, Arch = Arch.Arm, SdkOS = OSInfo.Noble }, - new ProductImageData { Version = V10_0, OS = OSInfo.NobleChiseled, Arch = Arch.Arm, SdkOS = OSInfo.Noble, + new ProductImageData { Version = V10_0, OS = OS.Noble, Arch = Arch.Arm }, + new ProductImageData { Version = V10_0, OS = OS.NobleChiseled, Arch = Arch.Arm, SdkOS = OS.Noble }, + new ProductImageData { Version = V10_0, OS = OS.NobleChiseled, Arch = Arch.Arm, SdkOS = OS.Noble, ImageVariant = DotNetImageVariant.Composite, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V10_0, OS = OSInfo.NobleChiseled, Arch = Arch.Arm, SdkOS = OSInfo.Noble, + new ProductImageData { Version = V10_0, OS = OS.NobleChiseled, Arch = Arch.Arm, SdkOS = OS.Noble, ImageVariant = DotNetImageVariant.Composite | DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V10_0, OS = OSInfo.NobleChiseled, Arch = Arch.Arm, SdkOS = OSInfo.Noble, + new ProductImageData { Version = V10_0, OS = OS.NobleChiseled, Arch = Arch.Arm, SdkOS = OS.Noble, ImageVariant = DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Runtime_Deps | DotNetImageRepo.Runtime | DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V11_0, OS = OSInfo.Resolute, Arch = Arch.Amd64 }, - new ProductImageData { Version = V11_0, OS = OSInfo.ResoluteChiseled, Arch = Arch.Amd64, SdkOS = OSInfo.Resolute }, - new ProductImageData { Version = V11_0, OS = OSInfo.ResoluteChiseled, Arch = Arch.Amd64, SdkOS = OSInfo.Resolute, + new ProductImageData { Version = V11_0, OS = OS.Resolute, Arch = Arch.Amd64 }, + new ProductImageData { Version = V11_0, OS = OS.ResoluteChiseled, Arch = Arch.Amd64, SdkOS = OS.Resolute }, + new ProductImageData { Version = V11_0, OS = OS.ResoluteChiseled, Arch = Arch.Amd64, SdkOS = OS.Resolute, ImageVariant = DotNetImageVariant.Composite, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V11_0, OS = OSInfo.ResoluteChiseled, Arch = Arch.Amd64, SdkOS = OSInfo.Resolute, + new ProductImageData { Version = V11_0, OS = OS.ResoluteChiseled, Arch = Arch.Amd64, SdkOS = OS.Resolute, ImageVariant = DotNetImageVariant.Composite | DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V11_0, OS = OSInfo.ResoluteChiseled, Arch = Arch.Amd64, SdkOS = OSInfo.Resolute, + new ProductImageData { Version = V11_0, OS = OS.ResoluteChiseled, Arch = Arch.Amd64, SdkOS = OS.Resolute, ImageVariant = DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Runtime_Deps | DotNetImageRepo.Runtime | DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V11_0, OS = OSInfo.Alpine322, Arch = Arch.Amd64 }, - new ProductImageData { Version = V11_0, OS = OSInfo.Alpine322, Arch = Arch.Amd64, SdkOS = OSInfo.Alpine322, + new ProductImageData { Version = V11_0, OS = OS.Alpine322, Arch = Arch.Amd64 }, + new ProductImageData { Version = V11_0, OS = OS.Alpine322, Arch = Arch.Amd64, SdkOS = OS.Alpine322, ImageVariant = DotNetImageVariant.Composite, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V11_0, OS = OSInfo.Alpine322, Arch = Arch.Amd64, SdkOS = OSInfo.Alpine322, + new ProductImageData { Version = V11_0, OS = OS.Alpine322, Arch = Arch.Amd64, SdkOS = OS.Alpine322, ImageVariant = DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Runtime_Deps }, - new ProductImageData { Version = V11_0, OS = OSInfo.Alpine323, Arch = Arch.Amd64 }, - new ProductImageData { Version = V11_0, OS = OSInfo.Alpine323, Arch = Arch.Amd64, SdkOS = OSInfo.Alpine323, + new ProductImageData { Version = V11_0, OS = OS.Alpine323, Arch = Arch.Amd64 }, + new ProductImageData { Version = V11_0, OS = OS.Alpine323, Arch = Arch.Amd64, SdkOS = OS.Alpine323, ImageVariant = DotNetImageVariant.Composite, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V11_0, OS = OSInfo.Alpine323, Arch = Arch.Amd64, SdkOS = OSInfo.Alpine323, + new ProductImageData { Version = V11_0, OS = OS.Alpine323, Arch = Arch.Amd64, SdkOS = OS.Alpine323, ImageVariant = DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Runtime_Deps }, - new ProductImageData { Version = V11_0, OS = OSInfo.AzureLinux30, Arch = Arch.Amd64 }, - new ProductImageData { Version = V11_0, OS = OSInfo.AzureLinux30Distroless, Arch = Arch.Amd64, SdkOS = OSInfo.AzureLinux30 }, - new ProductImageData { Version = V11_0, OS = OSInfo.AzureLinux30Distroless, Arch = Arch.Amd64, SdkOS = OSInfo.AzureLinux30, + new ProductImageData { Version = V11_0, OS = OS.AzureLinux30, Arch = Arch.Amd64 }, + new ProductImageData { Version = V11_0, OS = OS.AzureLinux30Distroless, Arch = Arch.Amd64, SdkOS = OS.AzureLinux30 }, + new ProductImageData { Version = V11_0, OS = OS.AzureLinux30Distroless, Arch = Arch.Amd64, SdkOS = OS.AzureLinux30, ImageVariant = DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Runtime_Deps | DotNetImageRepo.Runtime | DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V11_0, OS = OSInfo.AzureLinux30Distroless, Arch = Arch.Amd64, SdkOS = OSInfo.AzureLinux30, + new ProductImageData { Version = V11_0, OS = OS.AzureLinux30Distroless, Arch = Arch.Amd64, SdkOS = OS.AzureLinux30, ImageVariant = DotNetImageVariant.Composite, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V11_0, OS = OSInfo.AzureLinux30Distroless, Arch = Arch.Amd64, SdkOS = OSInfo.AzureLinux30, + new ProductImageData { Version = V11_0, OS = OS.AzureLinux30Distroless, Arch = Arch.Amd64, SdkOS = OS.AzureLinux30, ImageVariant = DotNetImageVariant.Composite | DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new() { Version = V11_0, Arch = Arch.Amd64, SdkImageVariant = DotNetImageVariant.AOT, SupportedImageRepos = DotNetImageRepo.Runtime_Deps, OS = OSInfo.Alpine322 }, - new() { Version = V11_0, Arch = Arch.Amd64, SdkImageVariant = DotNetImageVariant.AOT, SupportedImageRepos = DotNetImageRepo.Runtime_Deps, OS = OSInfo.Alpine323 }, - new() { Version = V11_0, Arch = Arch.Amd64, SdkImageVariant = DotNetImageVariant.AOT, SupportedImageRepos = DotNetImageRepo.Runtime_Deps, OS = OSInfo.AzureLinux30Distroless, SdkOS = OSInfo.AzureLinux30 }, - new() { Version = V11_0, Arch = Arch.Amd64, SdkImageVariant = DotNetImageVariant.AOT, SupportedImageRepos = DotNetImageRepo.Runtime_Deps, OS = OSInfo.ResoluteChiseled, SdkOS = OSInfo.Resolute }, + new() { Version = V11_0, Arch = Arch.Amd64, SdkImageVariant = DotNetImageVariant.AOT, SupportedImageRepos = DotNetImageRepo.Runtime_Deps, OS = OS.Alpine322 }, + new() { Version = V11_0, Arch = Arch.Amd64, SdkImageVariant = DotNetImageVariant.AOT, SupportedImageRepos = DotNetImageRepo.Runtime_Deps, OS = OS.Alpine323 }, + new() { Version = V11_0, Arch = Arch.Amd64, SdkImageVariant = DotNetImageVariant.AOT, SupportedImageRepos = DotNetImageRepo.Runtime_Deps, OS = OS.AzureLinux30Distroless, SdkOS = OS.AzureLinux30 }, + new() { Version = V11_0, Arch = Arch.Amd64, SdkImageVariant = DotNetImageVariant.AOT, SupportedImageRepos = DotNetImageRepo.Runtime_Deps, OS = OS.ResoluteChiseled, SdkOS = OS.Resolute }, - new ProductImageData { Version = V11_0, OS = OSInfo.AzureLinux30, Arch = Arch.Arm64 }, - new ProductImageData { Version = V11_0, OS = OSInfo.AzureLinux30Distroless, Arch = Arch.Arm64, SdkOS = OSInfo.AzureLinux30 }, - new ProductImageData { Version = V11_0, OS = OSInfo.AzureLinux30Distroless, Arch = Arch.Arm64, SdkOS = OSInfo.AzureLinux30, + new ProductImageData { Version = V11_0, OS = OS.AzureLinux30, Arch = Arch.Arm64 }, + new ProductImageData { Version = V11_0, OS = OS.AzureLinux30Distroless, Arch = Arch.Arm64, SdkOS = OS.AzureLinux30 }, + new ProductImageData { Version = V11_0, OS = OS.AzureLinux30Distroless, Arch = Arch.Arm64, SdkOS = OS.AzureLinux30, ImageVariant = DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Runtime_Deps | DotNetImageRepo.Runtime | DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V11_0, OS = OSInfo.AzureLinux30Distroless, Arch = Arch.Arm64, SdkOS = OSInfo.AzureLinux30, + new ProductImageData { Version = V11_0, OS = OS.AzureLinux30Distroless, Arch = Arch.Arm64, SdkOS = OS.AzureLinux30, ImageVariant = DotNetImageVariant.Composite, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V11_0, OS = OSInfo.AzureLinux30Distroless, Arch = Arch.Arm64, SdkOS = OSInfo.AzureLinux30, + new ProductImageData { Version = V11_0, OS = OS.AzureLinux30Distroless, Arch = Arch.Arm64, SdkOS = OS.AzureLinux30, ImageVariant = DotNetImageVariant.Composite | DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V11_0, OS = OSInfo.Resolute, Arch = Arch.Arm64 }, - new ProductImageData { Version = V11_0, OS = OSInfo.ResoluteChiseled, Arch = Arch.Arm64, SdkOS = OSInfo.Resolute }, - new ProductImageData { Version = V11_0, OS = OSInfo.ResoluteChiseled, Arch = Arch.Arm64, SdkOS = OSInfo.Resolute, + new ProductImageData { Version = V11_0, OS = OS.Resolute, Arch = Arch.Arm64 }, + new ProductImageData { Version = V11_0, OS = OS.ResoluteChiseled, Arch = Arch.Arm64, SdkOS = OS.Resolute }, + new ProductImageData { Version = V11_0, OS = OS.ResoluteChiseled, Arch = Arch.Arm64, SdkOS = OS.Resolute, ImageVariant = DotNetImageVariant.Composite, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V11_0, OS = OSInfo.ResoluteChiseled, Arch = Arch.Arm64, SdkOS = OSInfo.Resolute, + new ProductImageData { Version = V11_0, OS = OS.ResoluteChiseled, Arch = Arch.Arm64, SdkOS = OS.Resolute, ImageVariant = DotNetImageVariant.Composite | DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V11_0, OS = OSInfo.ResoluteChiseled, Arch = Arch.Arm64, SdkOS = OSInfo.Resolute, + new ProductImageData { Version = V11_0, OS = OS.ResoluteChiseled, Arch = Arch.Arm64, SdkOS = OS.Resolute, ImageVariant = DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Runtime_Deps | DotNetImageRepo.Runtime | DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V11_0, OS = OSInfo.Alpine322, Arch = Arch.Arm64 }, - new ProductImageData { Version = V11_0, OS = OSInfo.Alpine322, Arch = Arch.Arm64, SdkOS = OSInfo.Alpine322, + new ProductImageData { Version = V11_0, OS = OS.Alpine322, Arch = Arch.Arm64 }, + new ProductImageData { Version = V11_0, OS = OS.Alpine322, Arch = Arch.Arm64, SdkOS = OS.Alpine322, ImageVariant = DotNetImageVariant.Composite, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V11_0, OS = OSInfo.Alpine322, Arch = Arch.Arm64, SdkOS = OSInfo.Alpine322, + new ProductImageData { Version = V11_0, OS = OS.Alpine322, Arch = Arch.Arm64, SdkOS = OS.Alpine322, ImageVariant = DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Runtime_Deps }, - new ProductImageData { Version = V11_0, OS = OSInfo.Alpine323, Arch = Arch.Arm64 }, - new ProductImageData { Version = V11_0, OS = OSInfo.Alpine323, Arch = Arch.Arm64, SdkOS = OSInfo.Alpine323, + new ProductImageData { Version = V11_0, OS = OS.Alpine323, Arch = Arch.Arm64 }, + new ProductImageData { Version = V11_0, OS = OS.Alpine323, Arch = Arch.Arm64, SdkOS = OS.Alpine323, ImageVariant = DotNetImageVariant.Composite, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V11_0, OS = OSInfo.Alpine323, Arch = Arch.Arm64, SdkOS = OSInfo.Alpine323, + new ProductImageData { Version = V11_0, OS = OS.Alpine323, Arch = Arch.Arm64, SdkOS = OS.Alpine323, ImageVariant = DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Runtime_Deps }, - new() { Version = V11_0, Arch = Arch.Arm64, SdkImageVariant = DotNetImageVariant.AOT, SupportedImageRepos = DotNetImageRepo.Runtime_Deps, OS = OSInfo.Alpine322 }, - new() { Version = V11_0, Arch = Arch.Arm64, SdkImageVariant = DotNetImageVariant.AOT, SupportedImageRepos = DotNetImageRepo.Runtime_Deps, OS = OSInfo.Alpine323 }, - new() { Version = V11_0, Arch = Arch.Arm64, SdkImageVariant = DotNetImageVariant.AOT, SupportedImageRepos = DotNetImageRepo.Runtime_Deps, OS = OSInfo.AzureLinux30Distroless, SdkOS = OSInfo.AzureLinux30 }, - new() { Version = V11_0, Arch = Arch.Arm64, SdkImageVariant = DotNetImageVariant.AOT, SupportedImageRepos = DotNetImageRepo.Runtime_Deps, OS = OSInfo.ResoluteChiseled, SdkOS = OSInfo.Resolute }, + new() { Version = V11_0, Arch = Arch.Arm64, SdkImageVariant = DotNetImageVariant.AOT, SupportedImageRepos = DotNetImageRepo.Runtime_Deps, OS = OS.Alpine322 }, + new() { Version = V11_0, Arch = Arch.Arm64, SdkImageVariant = DotNetImageVariant.AOT, SupportedImageRepos = DotNetImageRepo.Runtime_Deps, OS = OS.Alpine323 }, + new() { Version = V11_0, Arch = Arch.Arm64, SdkImageVariant = DotNetImageVariant.AOT, SupportedImageRepos = DotNetImageRepo.Runtime_Deps, OS = OS.AzureLinux30Distroless, SdkOS = OS.AzureLinux30 }, + new() { Version = V11_0, Arch = Arch.Arm64, SdkImageVariant = DotNetImageVariant.AOT, SupportedImageRepos = DotNetImageRepo.Runtime_Deps, OS = OS.ResoluteChiseled, SdkOS = OS.Resolute }, - new ProductImageData { Version = V11_0, OS = OSInfo.Alpine322, Arch = Arch.Arm }, - new ProductImageData { Version = V11_0, OS = OSInfo.Alpine322, Arch = Arch.Arm, SdkOS = OSInfo.Alpine322, + new ProductImageData { Version = V11_0, OS = OS.Alpine322, Arch = Arch.Arm }, + new ProductImageData { Version = V11_0, OS = OS.Alpine322, Arch = Arch.Arm, SdkOS = OS.Alpine322, ImageVariant = DotNetImageVariant.Composite, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V11_0, OS = OSInfo.Alpine322, Arch = Arch.Arm, SdkOS = OSInfo.Alpine322, + new ProductImageData { Version = V11_0, OS = OS.Alpine322, Arch = Arch.Arm, SdkOS = OS.Alpine322, ImageVariant = DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Runtime_Deps }, - new ProductImageData { Version = V11_0, OS = OSInfo.Alpine323, Arch = Arch.Arm }, - new ProductImageData { Version = V11_0, OS = OSInfo.Alpine323, Arch = Arch.Arm, SdkOS = OSInfo.Alpine323, + new ProductImageData { Version = V11_0, OS = OS.Alpine323, Arch = Arch.Arm }, + new ProductImageData { Version = V11_0, OS = OS.Alpine323, Arch = Arch.Arm, SdkOS = OS.Alpine323, ImageVariant = DotNetImageVariant.Composite, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V11_0, OS = OSInfo.Alpine323, Arch = Arch.Arm, SdkOS = OSInfo.Alpine323, + new ProductImageData { Version = V11_0, OS = OS.Alpine323, Arch = Arch.Arm, SdkOS = OS.Alpine323, ImageVariant = DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Runtime_Deps }, - new ProductImageData { Version = V11_0, OS = OSInfo.Resolute, Arch = Arch.Arm }, - new ProductImageData { Version = V11_0, OS = OSInfo.ResoluteChiseled, Arch = Arch.Arm, SdkOS = OSInfo.Resolute }, - new ProductImageData { Version = V11_0, OS = OSInfo.ResoluteChiseled, Arch = Arch.Arm, SdkOS = OSInfo.Resolute, + new ProductImageData { Version = V11_0, OS = OS.Resolute, Arch = Arch.Arm }, + new ProductImageData { Version = V11_0, OS = OS.ResoluteChiseled, Arch = Arch.Arm, SdkOS = OS.Resolute }, + new ProductImageData { Version = V11_0, OS = OS.ResoluteChiseled, Arch = Arch.Arm, SdkOS = OS.Resolute, ImageVariant = DotNetImageVariant.Composite, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V11_0, OS = OSInfo.ResoluteChiseled, Arch = Arch.Arm, SdkOS = OSInfo.Resolute, + new ProductImageData { Version = V11_0, OS = OS.ResoluteChiseled, Arch = Arch.Arm, SdkOS = OS.Resolute, ImageVariant = DotNetImageVariant.Composite | DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Aspnet }, - new ProductImageData { Version = V11_0, OS = OSInfo.ResoluteChiseled, Arch = Arch.Arm, SdkOS = OSInfo.Resolute, + new ProductImageData { Version = V11_0, OS = OS.ResoluteChiseled, Arch = Arch.Arm, SdkOS = OS.Resolute, ImageVariant = DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Runtime_Deps | DotNetImageRepo.Runtime | DotNetImageRepo.Aspnet }, }; private static readonly ProductImageData[] s_windowsTestData = { - new ProductImageData { Version = V8_0, OS = OSInfo.NanoServer1809, Arch = Arch.Amd64 }, - new ProductImageData { Version = V8_0, OS = OSInfo.NanoServerLtsc2022, Arch = Arch.Amd64 }, - new ProductImageData { Version = V8_0, OS = OSInfo.NanoServerLtsc2025, Arch = Arch.Amd64 }, - new ProductImageData { Version = V8_0, OS = OSInfo.ServerCoreLtsc2019, Arch = Arch.Amd64 }, - new ProductImageData { Version = V8_0, OS = OSInfo.ServerCoreLtsc2022, Arch = Arch.Amd64 }, - new ProductImageData { Version = V8_0, OS = OSInfo.ServerCoreLtsc2025, Arch = Arch.Amd64 }, - - new ProductImageData { Version = V9_0, OS = OSInfo.NanoServer1809, Arch = Arch.Amd64 }, - new ProductImageData { Version = V9_0, OS = OSInfo.NanoServerLtsc2022, Arch = Arch.Amd64 }, - new ProductImageData { Version = V9_0, OS = OSInfo.NanoServerLtsc2025, Arch = Arch.Amd64 }, - new ProductImageData { Version = V9_0, OS = OSInfo.ServerCoreLtsc2019, Arch = Arch.Amd64 }, - new ProductImageData { Version = V9_0, OS = OSInfo.ServerCoreLtsc2022, Arch = Arch.Amd64 }, - new ProductImageData { Version = V9_0, OS = OSInfo.ServerCoreLtsc2025, Arch = Arch.Amd64 }, - - new ProductImageData { Version = V10_0, OS = OSInfo.NanoServerLtsc2022, Arch = Arch.Amd64 }, - new ProductImageData { Version = V10_0, OS = OSInfo.NanoServerLtsc2025, Arch = Arch.Amd64 }, - new ProductImageData { Version = V10_0, OS = OSInfo.ServerCoreLtsc2022, Arch = Arch.Amd64 }, - new ProductImageData { Version = V10_0, OS = OSInfo.ServerCoreLtsc2025, Arch = Arch.Amd64 }, - - new ProductImageData { Version = V11_0, OS = OSInfo.NanoServerLtsc2022, Arch = Arch.Amd64 }, - new ProductImageData { Version = V11_0, OS = OSInfo.NanoServerLtsc2025, Arch = Arch.Amd64 }, - new ProductImageData { Version = V11_0, OS = OSInfo.ServerCoreLtsc2022, Arch = Arch.Amd64 }, - new ProductImageData { Version = V11_0, OS = OSInfo.ServerCoreLtsc2025, Arch = Arch.Amd64 }, + new ProductImageData { Version = V8_0, OS = OS.NanoServer1809, Arch = Arch.Amd64 }, + new ProductImageData { Version = V8_0, OS = OS.NanoServerLtsc2022, Arch = Arch.Amd64 }, + new ProductImageData { Version = V8_0, OS = OS.NanoServerLtsc2025, Arch = Arch.Amd64 }, + new ProductImageData { Version = V8_0, OS = OS.ServerCoreLtsc2019, Arch = Arch.Amd64 }, + new ProductImageData { Version = V8_0, OS = OS.ServerCoreLtsc2022, Arch = Arch.Amd64 }, + new ProductImageData { Version = V8_0, OS = OS.ServerCoreLtsc2025, Arch = Arch.Amd64 }, + + new ProductImageData { Version = V9_0, OS = OS.NanoServer1809, Arch = Arch.Amd64 }, + new ProductImageData { Version = V9_0, OS = OS.NanoServerLtsc2022, Arch = Arch.Amd64 }, + new ProductImageData { Version = V9_0, OS = OS.NanoServerLtsc2025, Arch = Arch.Amd64 }, + new ProductImageData { Version = V9_0, OS = OS.ServerCoreLtsc2019, Arch = Arch.Amd64 }, + new ProductImageData { Version = V9_0, OS = OS.ServerCoreLtsc2022, Arch = Arch.Amd64 }, + new ProductImageData { Version = V9_0, OS = OS.ServerCoreLtsc2025, Arch = Arch.Amd64 }, + + new ProductImageData { Version = V10_0, OS = OS.NanoServerLtsc2022, Arch = Arch.Amd64 }, + new ProductImageData { Version = V10_0, OS = OS.NanoServerLtsc2025, Arch = Arch.Amd64 }, + new ProductImageData { Version = V10_0, OS = OS.ServerCoreLtsc2022, Arch = Arch.Amd64 }, + new ProductImageData { Version = V10_0, OS = OS.ServerCoreLtsc2025, Arch = Arch.Amd64 }, + + new ProductImageData { Version = V11_0, OS = OS.NanoServerLtsc2022, Arch = Arch.Amd64 }, + new ProductImageData { Version = V11_0, OS = OS.NanoServerLtsc2025, Arch = Arch.Amd64 }, + new ProductImageData { Version = V11_0, OS = OS.ServerCoreLtsc2022, Arch = Arch.Amd64 }, + new ProductImageData { Version = V11_0, OS = OS.ServerCoreLtsc2025, Arch = Arch.Amd64 }, }; private static readonly SampleImageData[] s_linuxSampleTestData = { - new SampleImageData { OS = OSInfo.AlpineFloating, Arch = Arch.Amd64, DockerfileSuffix = "alpine", IsPublished = true }, - new SampleImageData { OS = OSInfo.AlpineFloating, Arch = Arch.Arm, DockerfileSuffix = "alpine", IsPublished = true }, - new SampleImageData { OS = OSInfo.AlpineFloating, Arch = Arch.Arm64, DockerfileSuffix = "alpine", IsPublished = true }, - new SampleImageData { OS = OSInfo.JammyChiseled, Arch = Arch.Arm, DockerfileSuffix = "chiseled", IsPublished = true }, - new SampleImageData { OS = OSInfo.JammyChiseled, Arch = Arch.Arm64, DockerfileSuffix = "chiseled", IsPublished = true }, - new SampleImageData { OS = OSInfo.JammyChiseled, Arch = Arch.Amd64, DockerfileSuffix = "chiseled", IsPublished = true }, - - new SampleImageData { OS = OSInfo.BookwormSlim, Arch = Arch.Amd64 }, - new SampleImageData { OS = OSInfo.BookwormSlim, Arch = Arch.Arm }, - new SampleImageData { OS = OSInfo.BookwormSlim, Arch = Arch.Arm64 }, - new SampleImageData { OS = OSInfo.AlpineFloating, Arch = Arch.Arm64, DockerfileSuffix = "alpine" }, - new SampleImageData { OS = OSInfo.AlpineFloating, Arch = Arch.Amd64, DockerfileSuffix = "alpine" }, - new SampleImageData { OS = OSInfo.AlpineFloating, Arch = Arch.Arm64, DockerfileSuffix = "alpine-icu" }, - new SampleImageData { OS = OSInfo.AlpineFloating, Arch = Arch.Amd64, DockerfileSuffix = "alpine-icu" }, - new SampleImageData { OS = OSInfo.BookwormSlim, Arch = Arch.Arm, DockerfileSuffix = "debian" }, - new SampleImageData { OS = OSInfo.BookwormSlim, Arch = Arch.Arm64, DockerfileSuffix = "debian" }, - new SampleImageData { OS = OSInfo.BookwormSlim, Arch = Arch.Amd64, DockerfileSuffix = "debian" }, - new SampleImageData { OS = OSInfo.Jammy, Arch = Arch.Arm, DockerfileSuffix = "ubuntu" }, - new SampleImageData { OS = OSInfo.Jammy, Arch = Arch.Arm64, DockerfileSuffix = "ubuntu" }, - new SampleImageData { OS = OSInfo.Jammy, Arch = Arch.Amd64, DockerfileSuffix = "ubuntu" }, - new SampleImageData { OS = OSInfo.JammyChiseled, Arch = Arch.Arm, DockerfileSuffix = "chiseled" }, - new SampleImageData { OS = OSInfo.JammyChiseled, Arch = Arch.Arm64, DockerfileSuffix = "chiseled" }, - new SampleImageData { OS = OSInfo.JammyChiseled, Arch = Arch.Amd64, DockerfileSuffix = "chiseled" }, + new SampleImageData { OS = OS.AlpineFloating, Arch = Arch.Amd64, DockerfileSuffix = "alpine", IsPublished = true }, + new SampleImageData { OS = OS.AlpineFloating, Arch = Arch.Arm, DockerfileSuffix = "alpine", IsPublished = true }, + new SampleImageData { OS = OS.AlpineFloating, Arch = Arch.Arm64, DockerfileSuffix = "alpine", IsPublished = true }, + new SampleImageData { OS = OS.JammyChiseled, Arch = Arch.Arm, DockerfileSuffix = "chiseled", IsPublished = true }, + new SampleImageData { OS = OS.JammyChiseled, Arch = Arch.Arm64, DockerfileSuffix = "chiseled", IsPublished = true }, + new SampleImageData { OS = OS.JammyChiseled, Arch = Arch.Amd64, DockerfileSuffix = "chiseled", IsPublished = true }, + + new SampleImageData { OS = OS.BookwormSlim, Arch = Arch.Amd64 }, + new SampleImageData { OS = OS.BookwormSlim, Arch = Arch.Arm }, + new SampleImageData { OS = OS.BookwormSlim, Arch = Arch.Arm64 }, + new SampleImageData { OS = OS.AlpineFloating, Arch = Arch.Arm64, DockerfileSuffix = "alpine" }, + new SampleImageData { OS = OS.AlpineFloating, Arch = Arch.Amd64, DockerfileSuffix = "alpine" }, + new SampleImageData { OS = OS.AlpineFloating, Arch = Arch.Arm64, DockerfileSuffix = "alpine-icu" }, + new SampleImageData { OS = OS.AlpineFloating, Arch = Arch.Amd64, DockerfileSuffix = "alpine-icu" }, + new SampleImageData { OS = OS.BookwormSlim, Arch = Arch.Arm, DockerfileSuffix = "debian" }, + new SampleImageData { OS = OS.BookwormSlim, Arch = Arch.Arm64, DockerfileSuffix = "debian" }, + new SampleImageData { OS = OS.BookwormSlim, Arch = Arch.Amd64, DockerfileSuffix = "debian" }, + new SampleImageData { OS = OS.Jammy, Arch = Arch.Arm, DockerfileSuffix = "ubuntu" }, + new SampleImageData { OS = OS.Jammy, Arch = Arch.Arm64, DockerfileSuffix = "ubuntu" }, + new SampleImageData { OS = OS.Jammy, Arch = Arch.Amd64, DockerfileSuffix = "ubuntu" }, + new SampleImageData { OS = OS.JammyChiseled, Arch = Arch.Arm, DockerfileSuffix = "chiseled" }, + new SampleImageData { OS = OS.JammyChiseled, Arch = Arch.Arm64, DockerfileSuffix = "chiseled" }, + new SampleImageData { OS = OS.JammyChiseled, Arch = Arch.Amd64, DockerfileSuffix = "chiseled" }, }; private static readonly SampleImageData[] s_windowsSampleTestData = { - new SampleImageData { OS = OSInfo.NanoServer1809, Arch = Arch.Amd64, IsPublished = true }, - new SampleImageData { OS = OSInfo.NanoServerLtsc2022, Arch = Arch.Amd64, IsPublished = true }, - new SampleImageData { OS = OSInfo.NanoServerLtsc2025, Arch = Arch.Amd64, IsPublished = true }, + new SampleImageData { OS = OS.NanoServer1809, Arch = Arch.Amd64, IsPublished = true }, + new SampleImageData { OS = OS.NanoServerLtsc2022, Arch = Arch.Amd64, IsPublished = true }, + new SampleImageData { OS = OS.NanoServerLtsc2025, Arch = Arch.Amd64, IsPublished = true }, - new SampleImageData { OS = OSInfo.NanoServerLtsc2022, Arch = Arch.Amd64, DockerfileSuffix = "nanoserver" }, - new SampleImageData { OS = OSInfo.NanoServerLtsc2025, Arch = Arch.Amd64, DockerfileSuffix = "nanoserver" }, + new SampleImageData { OS = OS.NanoServerLtsc2022, Arch = Arch.Amd64, DockerfileSuffix = "nanoserver" }, + new SampleImageData { OS = OS.NanoServerLtsc2025, Arch = Arch.Amd64, DockerfileSuffix = "nanoserver" }, // Use Nano Server as the OS even though the Dockerfiles are for Windows Server Core. This is because the OS value // needs to match the filter set by the build/test job. We only produce builds jobs based on what's in the manifest // and the manifest only defines Nano Server-based Dockerfiles. So we just need to piggyback on the Nano Server // jobs in order to test the Windows Server Core samples. - new SampleImageData { OS = OSInfo.NanoServerLtsc2022, Arch = Arch.Amd64, DockerfileSuffix = "windowsservercore" }, - new SampleImageData { OS = OSInfo.NanoServerLtsc2025, Arch = Arch.Amd64, DockerfileSuffix = "windowsservercore" }, - new SampleImageData { OS = OSInfo.NanoServerLtsc2022, Arch = Arch.Amd64, DockerfileSuffix = "windowsservercore-iis" }, - new SampleImageData { OS = OSInfo.NanoServerLtsc2025, Arch = Arch.Amd64, DockerfileSuffix = "windowsservercore-iis" }, + new SampleImageData { OS = OS.NanoServerLtsc2022, Arch = Arch.Amd64, DockerfileSuffix = "windowsservercore" }, + new SampleImageData { OS = OS.NanoServerLtsc2025, Arch = Arch.Amd64, DockerfileSuffix = "windowsservercore" }, + new SampleImageData { OS = OS.NanoServerLtsc2022, Arch = Arch.Amd64, DockerfileSuffix = "windowsservercore-iis" }, + new SampleImageData { OS = OS.NanoServerLtsc2025, Arch = Arch.Amd64, DockerfileSuffix = "windowsservercore-iis" }, }; private static readonly ProductImageData[] s_linuxMonitorTestData = [ - new ProductImageData { Version = V8_1, VersionFamily = V8_0, OS = OSInfo.JammyChiseled, OSTag = OSInfo.UbuntuChiseled, Arch = Arch.Amd64, SupportedImageRepos = DotNetImageRepo.Monitor | DotNetImageRepo.Monitor_Base }, - new ProductImageData { Version = V8_1, VersionFamily = V8_0, OS = OSInfo.JammyChiseled, OSTag = OSInfo.UbuntuChiseled, Arch = Arch.Arm64, SupportedImageRepos = DotNetImageRepo.Monitor | DotNetImageRepo.Monitor_Base }, + new ProductImageData { Version = V8_1, VersionFamily = V8_0, OS = OS.JammyChiseled, OSTag = OS.UbuntuChiseled, Arch = Arch.Amd64, SupportedImageRepos = DotNetImageRepo.Monitor | DotNetImageRepo.Monitor_Base }, + new ProductImageData { Version = V8_1, VersionFamily = V8_0, OS = OS.JammyChiseled, OSTag = OS.UbuntuChiseled, Arch = Arch.Arm64, SupportedImageRepos = DotNetImageRepo.Monitor | DotNetImageRepo.Monitor_Base }, // OSTag does not correspond to OS because platform tags for Azure Linux were not added to the images // Use CBL-Mariner distroless for OSTag since those platform tags exist and won't require tests to understand the difference in tagging. - new ProductImageData { Version = V8_1, VersionFamily = V8_0, OS = OSInfo.AzureLinux30Distroless, OSDir = OSInfo.AzureLinuxDistroless, OSTag = OSInfo.MarinerDistroless, Arch = Arch.Amd64, SupportedImageRepos = DotNetImageRepo.Monitor | DotNetImageRepo.Monitor_Base }, - new ProductImageData { Version = V8_1, VersionFamily = V8_0, OS = OSInfo.AzureLinux30Distroless, OSDir = OSInfo.AzureLinuxDistroless, OSTag = OSInfo.MarinerDistroless, Arch = Arch.Arm64, SupportedImageRepos = DotNetImageRepo.Monitor | DotNetImageRepo.Monitor_Base }, - new ProductImageData { Version = V9_0, VersionFamily = V9_0, OS = OSInfo.AzureLinux30Distroless, OSDir = OSInfo.AzureLinuxDistroless, OSTag = "", Arch = Arch.Amd64, SupportedImageRepos = DotNetImageRepo.Monitor | DotNetImageRepo.Monitor_Base }, - new ProductImageData { Version = V9_0, VersionFamily = V9_0, OS = OSInfo.AzureLinux30Distroless, OSDir = OSInfo.AzureLinuxDistroless, OSTag = "", Arch = Arch.Arm64, SupportedImageRepos = DotNetImageRepo.Monitor | DotNetImageRepo.Monitor_Base }, - new ProductImageData { Version = V10_0, VersionFamily = V10_0, OS = OSInfo.AzureLinux30Distroless, OSDir = OSInfo.AzureLinuxDistroless, OSTag = "", Arch = Arch.Amd64, SupportedImageRepos = DotNetImageRepo.Monitor | DotNetImageRepo.Monitor_Base }, - new ProductImageData { Version = V10_0, VersionFamily = V10_0, OS = OSInfo.AzureLinux30Distroless, OSDir = OSInfo.AzureLinuxDistroless, OSTag = "", Arch = Arch.Arm64, SupportedImageRepos = DotNetImageRepo.Monitor | DotNetImageRepo.Monitor_Base }, + new ProductImageData { Version = V8_1, VersionFamily = V8_0, OS = OS.AzureLinux30Distroless, OSDir = OS.AzureLinuxDistroless, OSTag = OS.MarinerDistroless, Arch = Arch.Amd64, SupportedImageRepos = DotNetImageRepo.Monitor | DotNetImageRepo.Monitor_Base }, + new ProductImageData { Version = V8_1, VersionFamily = V8_0, OS = OS.AzureLinux30Distroless, OSDir = OS.AzureLinuxDistroless, OSTag = OS.MarinerDistroless, Arch = Arch.Arm64, SupportedImageRepos = DotNetImageRepo.Monitor | DotNetImageRepo.Monitor_Base }, + new ProductImageData { Version = V9_0, VersionFamily = V9_0, OS = OS.AzureLinux30Distroless, OSDir = OS.AzureLinuxDistroless, OSTag = "", Arch = Arch.Amd64, SupportedImageRepos = DotNetImageRepo.Monitor | DotNetImageRepo.Monitor_Base }, + new ProductImageData { Version = V9_0, VersionFamily = V9_0, OS = OS.AzureLinux30Distroless, OSDir = OS.AzureLinuxDistroless, OSTag = "", Arch = Arch.Arm64, SupportedImageRepos = DotNetImageRepo.Monitor | DotNetImageRepo.Monitor_Base }, + new ProductImageData { Version = V10_0, VersionFamily = V10_0, OS = OS.AzureLinux30Distroless, OSDir = OS.AzureLinuxDistroless, OSTag = "", Arch = Arch.Amd64, SupportedImageRepos = DotNetImageRepo.Monitor | DotNetImageRepo.Monitor_Base }, + new ProductImageData { Version = V10_0, VersionFamily = V10_0, OS = OS.AzureLinux30Distroless, OSDir = OS.AzureLinuxDistroless, OSTag = "", Arch = Arch.Arm64, SupportedImageRepos = DotNetImageRepo.Monitor | DotNetImageRepo.Monitor_Base }, ]; private static readonly ProductImageData[] s_windowsMonitorTestData = @@ -467,18 +467,18 @@ public static class TestData new() { Version = V13_2, VersionFamily = V9_0, - OS = OSInfo.AzureLinux30Distroless, + OS = OS.AzureLinux30Distroless, OSTag = "", - OSDir = OSInfo.AzureLinuxDistroless, + OSDir = OS.AzureLinuxDistroless, Arch = Arch.Amd64, SupportedImageRepos = DotNetImageRepo.Aspire_Dashboard, }, new() { Version = V13_2, VersionFamily = V9_0, - OS = OSInfo.AzureLinux30Distroless, + OS = OS.AzureLinux30Distroless, OSTag = "", - OSDir = OSInfo.AzureLinuxDistroless, + OSDir = OS.AzureLinuxDistroless, Arch = Arch.Arm64, SupportedImageRepos = DotNetImageRepo.Aspire_Dashboard }, @@ -489,18 +489,18 @@ public static class TestData new() { Version = new ImageVersion(new Version(2,3), isPreview: true), VersionFamily = V9_0, - OS = OSInfo.AzureLinux30Distroless, + OS = OS.AzureLinux30Distroless, OSTag = "", - OSDir = OSInfo.AzureLinuxDistroless, + OSDir = OS.AzureLinuxDistroless, Arch = Arch.Amd64, SupportedImageRepos = DotNetImageRepo.Yarp, }, new() { Version = new ImageVersion(new Version(2,3), isPreview: true), VersionFamily = V9_0, - OS = OSInfo.AzureLinux30Distroless, + OS = OS.AzureLinux30Distroless, OSTag = "", - OSDir = OSInfo.AzureLinuxDistroless, + OSDir = OS.AzureLinuxDistroless, Arch = Arch.Arm64, SupportedImageRepos = DotNetImageRepo.Yarp }, From 3f91080fe6af20478154ea0548b07b218bc512af Mon Sep 17 00:00:00 2001 From: Logan Bussell Date: Mon, 22 Dec 2025 14:04:02 -0800 Subject: [PATCH 14/14] Fix indentation --- tests/Microsoft.DotNet.Docker.Tests/TestData.cs | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/tests/Microsoft.DotNet.Docker.Tests/TestData.cs b/tests/Microsoft.DotNet.Docker.Tests/TestData.cs index 1669ebfec8..16a4ac7bc8 100644 --- a/tests/Microsoft.DotNet.Docker.Tests/TestData.cs +++ b/tests/Microsoft.DotNet.Docker.Tests/TestData.cs @@ -400,9 +400,9 @@ public static class TestData private static readonly SampleImageData[] s_linuxSampleTestData = { - new SampleImageData { OS = OS.AlpineFloating, Arch = Arch.Amd64, DockerfileSuffix = "alpine", IsPublished = true }, - new SampleImageData { OS = OS.AlpineFloating, Arch = Arch.Arm, DockerfileSuffix = "alpine", IsPublished = true }, - new SampleImageData { OS = OS.AlpineFloating, Arch = Arch.Arm64, DockerfileSuffix = "alpine", IsPublished = true }, + new SampleImageData { OS = OS.AlpineFloating, Arch = Arch.Amd64, DockerfileSuffix = "alpine", IsPublished = true }, + new SampleImageData { OS = OS.AlpineFloating, Arch = Arch.Arm, DockerfileSuffix = "alpine", IsPublished = true }, + new SampleImageData { OS = OS.AlpineFloating, Arch = Arch.Arm64, DockerfileSuffix = "alpine", IsPublished = true }, new SampleImageData { OS = OS.JammyChiseled, Arch = Arch.Arm, DockerfileSuffix = "chiseled", IsPublished = true }, new SampleImageData { OS = OS.JammyChiseled, Arch = Arch.Arm64, DockerfileSuffix = "chiseled", IsPublished = true }, new SampleImageData { OS = OS.JammyChiseled, Arch = Arch.Amd64, DockerfileSuffix = "chiseled", IsPublished = true }, @@ -410,10 +410,10 @@ public static class TestData new SampleImageData { OS = OS.BookwormSlim, Arch = Arch.Amd64 }, new SampleImageData { OS = OS.BookwormSlim, Arch = Arch.Arm }, new SampleImageData { OS = OS.BookwormSlim, Arch = Arch.Arm64 }, - new SampleImageData { OS = OS.AlpineFloating, Arch = Arch.Arm64, DockerfileSuffix = "alpine" }, - new SampleImageData { OS = OS.AlpineFloating, Arch = Arch.Amd64, DockerfileSuffix = "alpine" }, - new SampleImageData { OS = OS.AlpineFloating, Arch = Arch.Arm64, DockerfileSuffix = "alpine-icu" }, - new SampleImageData { OS = OS.AlpineFloating, Arch = Arch.Amd64, DockerfileSuffix = "alpine-icu" }, + new SampleImageData { OS = OS.AlpineFloating, Arch = Arch.Arm64, DockerfileSuffix = "alpine" }, + new SampleImageData { OS = OS.AlpineFloating, Arch = Arch.Amd64, DockerfileSuffix = "alpine" }, + new SampleImageData { OS = OS.AlpineFloating, Arch = Arch.Arm64, DockerfileSuffix = "alpine-icu" }, + new SampleImageData { OS = OS.AlpineFloating, Arch = Arch.Amd64, DockerfileSuffix = "alpine-icu" }, new SampleImageData { OS = OS.BookwormSlim, Arch = Arch.Arm, DockerfileSuffix = "debian" }, new SampleImageData { OS = OS.BookwormSlim, Arch = Arch.Arm64, DockerfileSuffix = "debian" }, new SampleImageData { OS = OS.BookwormSlim, Arch = Arch.Amd64, DockerfileSuffix = "debian" },