From 0ec0d4b27f1f38a97d858fcbac509466aa4bd8cd Mon Sep 17 00:00:00 2001 From: Logan Bussell Date: Wed, 8 Jan 2025 10:56:06 -0800 Subject: [PATCH 1/5] Add basic generated artifacts snapshot test --- .gitignore | 3 ++ .../Get-GeneratedDockerfiles.ps1 | 10 +++-- .../GeneratedArtifactTests.cs | 40 ++++++++++++++----- .../Microsoft.DotNet.Docker.Tests.csproj | 3 ++ .../VerifyChecks.cs | 23 +++++++++++ 5 files changed, 67 insertions(+), 12 deletions(-) create mode 100644 tests/Microsoft.DotNet.Docker.Tests/VerifyChecks.cs diff --git a/.gitignore b/.gitignore index dee6e47c17..c731c026ef 100644 --- a/.gitignore +++ b/.gitignore @@ -26,3 +26,6 @@ artifacts/ # ImageBuilder directory .Microsoft.DotNet.ImageBuilder + +# Verify.Xunit library +*.received.* diff --git a/eng/dockerfile-templates/Get-GeneratedDockerfiles.ps1 b/eng/dockerfile-templates/Get-GeneratedDockerfiles.ps1 index 5ad3e31e1a..d679266997 100644 --- a/eng/dockerfile-templates/Get-GeneratedDockerfiles.ps1 +++ b/eng/dockerfile-templates/Get-GeneratedDockerfiles.ps1 @@ -1,7 +1,8 @@ #!/usr/bin/env pwsh param( [switch]$Validate, - [string]$Branch + [string]$Branch, + [string]$OutputDirectory ) Import-Module -force $PSScriptRoot/../DependencyManagement.psm1 @@ -10,13 +11,16 @@ if ($Validate) { $customImageBuilderArgs = " --validate" } -$repoRoot = (Get-Item "$PSScriptRoot").Parent.Parent.FullName +if (-Not $OutputDirectory) { + $repoRoot = (Get-Item "$PSScriptRoot").Parent.Parent.FullName + $OutputDirectory = $repoRoot +} $onDockerfilesGenerated = { param($ContainerName) if (-Not $Validate) { - Exec "docker cp ${ContainerName}:/repo/src $repoRoot" + Exec "docker cp ${ContainerName}:/repo/src $OutputDirectory" } } diff --git a/tests/Microsoft.DotNet.Docker.Tests/GeneratedArtifactTests.cs b/tests/Microsoft.DotNet.Docker.Tests/GeneratedArtifactTests.cs index 37c5483e2d..4ad31882ef 100644 --- a/tests/Microsoft.DotNet.Docker.Tests/GeneratedArtifactTests.cs +++ b/tests/Microsoft.DotNet.Docker.Tests/GeneratedArtifactTests.cs @@ -13,6 +13,10 @@ namespace Microsoft.DotNet.Docker.Tests [Trait("Category", "pre-build")] public class GeneratedArtifactTests { + private static readonly string s_generateDockerfilesScript = + Path.Combine(Config.SourceRepoRoot, "eng", "dockerfile-templates", "Get-GeneratedDockerfiles.ps1"); + private static readonly string s_generateTagsDocumentationScript = + Path.Combine(Config.SourceRepoRoot, "eng", "readme-templates", "Get-GeneratedReadmes.ps1"); private ITestOutputHelper OutputHelper { get; } public GeneratedArtifactTests(ITestOutputHelper outputHelper) @@ -23,24 +27,42 @@ public GeneratedArtifactTests(ITestOutputHelper outputHelper) [Fact] public void VerifyDockerfileTemplates() { - string generateDockerfilesScript = Path.Combine(Config.SourceRepoRoot, "eng", "dockerfile-templates", "Get-GeneratedDockerfiles.ps1"); - ValidateGeneratedArtifacts( - generateDockerfilesScript, - $"The Dockerfiles are out of sync with the templates. Update the Dockerfiles by running `{generateDockerfilesScript}`."); + ValidateGeneratedArtifacts(s_generateDockerfilesScript, + $"The Dockerfiles are out of sync with the templates." + + $"Update the Dockerfiles by running `{s_generateDockerfilesScript}`."); } [Fact] public void VerifyReadmeTemplates() { - string generateTagsDocumentationScript = Path.Combine(Config.SourceRepoRoot, "eng", "readme-templates", "Get-GeneratedReadmes.ps1"); - ValidateGeneratedArtifacts( - generateTagsDocumentationScript, - $"The Readmes are out of sync with the templates. Update the Readmes by running `{generateTagsDocumentationScript}`."); + ValidateGeneratedArtifacts(s_generateTagsDocumentationScript, + $"The Readmes are out of sync with the templates." + + $"Update the Readmes by running `{s_generateTagsDocumentationScript}`."); + } + + [Fact] + public async Task VerifyGeneratedDockerfilesOutput() + { + using TempFolderContext outputDirectory = FileHelper.UseTempFolder(); + + GenerateArtifacts(s_generateDockerfilesScript, outputDirectory.Path); + await VerifyDirectory(outputDirectory.Path); } private void ValidateGeneratedArtifacts(string generateScriptPath, string errorMessage) { - string powershellArgs = $"-File {generateScriptPath} -Validate"; + ExecuteScript(generateScriptPath, "-Validate", errorMessage); + } + + private void GenerateArtifacts(string generateScriptPath, string outputDirectory) + { + ExecuteScript(generateScriptPath, $"-Output {outputDirectory}", + $"Failed to generate artifacts using `{generateScriptPath}`."); + } + + private void ExecuteScript(string generateScriptPath, string arguments, string errorMessage) + { + string powershellArgs = $"-File {generateScriptPath} {arguments}"; (Process Process, string StdOut, string StdErr) executeResult; // Support both execution within Windows 10, Nano Server and Linux environments. diff --git a/tests/Microsoft.DotNet.Docker.Tests/Microsoft.DotNet.Docker.Tests.csproj b/tests/Microsoft.DotNet.Docker.Tests/Microsoft.DotNet.Docker.Tests.csproj index 16b7d2c6e7..bbc80bd475 100644 --- a/tests/Microsoft.DotNet.Docker.Tests/Microsoft.DotNet.Docker.Tests.csproj +++ b/tests/Microsoft.DotNet.Docker.Tests/Microsoft.DotNet.Docker.Tests.csproj @@ -3,6 +3,7 @@ false net9.0 + enable @@ -12,6 +13,8 @@ + + all diff --git a/tests/Microsoft.DotNet.Docker.Tests/VerifyChecks.cs b/tests/Microsoft.DotNet.Docker.Tests/VerifyChecks.cs new file mode 100644 index 0000000000..6bafe44740 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/VerifyChecks.cs @@ -0,0 +1,23 @@ +// 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. + +using System.Runtime.CompilerServices; + +namespace Microsoft.DotNet.Docker.Tests; + +#nullable enable +[Trait("Category", "pre-build")] +public class VerifyChecksTests +{ + [Fact] + public Task Run() => + VerifyChecks.Run(); +} + +public static class ModuleInitializer +{ + [ModuleInitializer] + public static void Initialize() => + VerifyDiffPlex.Initialize(); +} From 4e3fc3aab28f7490e6204763355d91eff675f68f Mon Sep 17 00:00:00 2001 From: Logan Bussell Date: Thu, 9 Jan 2025 14:09:40 -0800 Subject: [PATCH 2/5] Use scrubbed internal Dockerfiles --- .gitattributes | 2 + .../Dockerfile.linux.download-file | 2 +- .../Dockerfile.windows.download-file | 2 +- .../Get-GeneratedDockerfiles.ps1 | 11 +++- .../aspnet/Dockerfile.linux | 2 +- .../aspnet/Dockerfile.linux-composite | 2 +- .../aspnet/Dockerfile.windows | 2 +- .../runtime-deps/Dockerfile | 2 +- .../runtime/Dockerfile.linux | 2 +- .../runtime/Dockerfile.windows | 2 +- eng/dockerfile-templates/sdk/Dockerfile.linux | 2 +- .../sdk/Dockerfile.windows | 2 +- .../DockerfileHelper.cs | 59 +++++++++++++++++++ .../GeneratedArtifactTests.cs | 23 ++++---- .../VerifyChecks.cs | 3 +- 15 files changed, 94 insertions(+), 24 deletions(-) create mode 100644 tests/Microsoft.DotNet.Docker.Tests/DockerfileHelper.cs diff --git a/.gitattributes b/.gitattributes index 7ead819fab..d86f5d4acf 100644 --- a/.gitattributes +++ b/.gitattributes @@ -78,3 +78,5 @@ src/coreclr/tests/src/JIT/Performance/CodeQuality/BenchmarksGame/reverse-complem src/coreclr/tests/src/JIT/Performance/CodeQuality/BenchmarksGame/k-nucleotide/knucleotide-input.txt text eol=lf src/coreclr/tests/src/JIT/Performance/CodeQuality/BenchmarksGame/k-nucleotide/knucleotide-input-big.txt text eol=lf src/coreclr/tests/src/performance/Scenario/JitBench/Resources/word2vecnet.patch text eol=lf + +tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyGeneratedDockerfilesOutput/* -merge linguist-generated=true diff --git a/eng/dockerfile-templates/Dockerfile.linux.download-file b/eng/dockerfile-templates/Dockerfile.linux.download-file index 907706daf0..f6752467ae 100644 --- a/eng/dockerfile-templates/Dockerfile.linux.download-file +++ b/eng/dockerfile-templates/Dockerfile.linux.download-file @@ -8,7 +8,7 @@ sha-var-name: Name of variable that stores the checksum sha-function: SHA function to use ^ - set isInternal to find(ARGS["url"], "artifacts.visualstudio.com") >= 0 ^ + set isInternal to VARIABLES["IsInternal"] || find(ARGS["url"], "artifacts.visualstudio.com") >= 0 ^ set additionalWgetArgs to when(isInternal, '--header="Authorization: Basic `echo $ACCESSTOKEN:$ACCESSTOKEN | base64 -w 0`" ', '') ^ set additionalCurlArgs to when(isInternal, '-u :$ACCESSTOKEN --basic ', '') ^ set isAlpine to find(OS_VERSION, "alpine") >= 0 ^ diff --git a/eng/dockerfile-templates/Dockerfile.windows.download-file b/eng/dockerfile-templates/Dockerfile.windows.download-file index 4f9af660a1..ea6ba0fcde 100644 --- a/eng/dockerfile-templates/Dockerfile.windows.download-file +++ b/eng/dockerfile-templates/Dockerfile.windows.download-file @@ -8,7 +8,7 @@ sha-var-name: Name of variable that stores the checksum hash-algorithm: Algorithm type to use to get the checksum. Defaults to sha512 ^ - set isInternal to find(ARGS["url"], "artifacts.visualstudio.com") >= 0 ^ + set isInternal to VARIABLES["IsInternal"] || find(ARGS["url"], "artifacts.visualstudio.com") >= 0 ^ set hashAlgorithm to when(ARGS["hash-algorithm"], ARGS["hash-algorithm"], "sha512") }}{{if isInternal:` $Base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(\":$($Env:ACCESSTOKEN)\")); ` diff --git a/eng/dockerfile-templates/Get-GeneratedDockerfiles.ps1 b/eng/dockerfile-templates/Get-GeneratedDockerfiles.ps1 index d679266997..b079479928 100644 --- a/eng/dockerfile-templates/Get-GeneratedDockerfiles.ps1 +++ b/eng/dockerfile-templates/Get-GeneratedDockerfiles.ps1 @@ -2,13 +2,20 @@ param( [switch]$Validate, [string]$Branch, - [string]$OutputDirectory + [string]$OutputDirectory, + [switch]$IsInternalOverride ) Import-Module -force $PSScriptRoot/../DependencyManagement.psm1 +$customImageBuilderArgs = "" + if ($Validate) { - $customImageBuilderArgs = " --validate" + $customImageBuilderArgs += " --validate" +} + +if ($IsInternalOverride) { + $customImageBuilderArgs += " --var IsInternal=true" } if (-Not $OutputDirectory) { diff --git a/eng/dockerfile-templates/aspnet/Dockerfile.linux b/eng/dockerfile-templates/aspnet/Dockerfile.linux index b2dbdb0369..c9e57ef23b 100644 --- a/eng/dockerfile-templates/aspnet/Dockerfile.linux +++ b/eng/dockerfile-templates/aspnet/Dockerfile.linux @@ -10,7 +10,7 @@ set isFullAzureLinux to isAzureLinux && !isDistroless ^ set isDistrolessAzureLinux to isAzureLinux && isDistroless ^ set baseUrl to VARIABLES[cat("dotnet|", dotnetVersion, "|base-url|", VARIABLES["branch"])] ^ - set isInternal to find(baseUrl, "artifacts.visualstudio.com") >= 0 ^ + set isInternal to VARIABLES["IsInternal"] || find(baseUrl, "artifacts.visualstudio.com") >= 0 ^ set isSingleStage to isAlpine && !isInternal ^ set runtimeDepsVariant to when(ARGS["is-extra"], "-extra", "") ^ set tagVersion to when(dotnetVersion = "8.0", diff --git a/eng/dockerfile-templates/aspnet/Dockerfile.linux-composite b/eng/dockerfile-templates/aspnet/Dockerfile.linux-composite index 84c9d0c261..7d17712e7c 100644 --- a/eng/dockerfile-templates/aspnet/Dockerfile.linux-composite +++ b/eng/dockerfile-templates/aspnet/Dockerfile.linux-composite @@ -6,7 +6,7 @@ set isFullAzureLinux to isAzureLinux && !isDistroless ^ set isDistrolessAzureLinux to isAzureLinux && isDistroless ^ set baseUrl to VARIABLES[cat("dotnet|", dotnetVersion, "|base-url|", VARIABLES["branch"])] ^ - set isInternal to find(baseUrl, "artifacts.visualstudio.com") >= 0 ^ + set isInternal to VARIABLES["IsInternal"] || find(baseUrl, "artifacts.visualstudio.com") >= 0 ^ set isSingleStage to isAlpine && !isInternal ^ set runtimeDepsVariant to when(ARGS["is-extra"], "-extra", "") ^ set tagVersion to when(dotnetVersion = "8.0", diff --git a/eng/dockerfile-templates/aspnet/Dockerfile.windows b/eng/dockerfile-templates/aspnet/Dockerfile.windows index 67891c981c..8d853f3aaf 100644 --- a/eng/dockerfile-templates/aspnet/Dockerfile.windows +++ b/eng/dockerfile-templates/aspnet/Dockerfile.windows @@ -3,7 +3,7 @@ set isServerCore to find(OS_VERSION, "windowsservercore") >= 0 ^ set dotnetBaseUrl to VARIABLES[cat("dotnet|", dotnetVersion, "|base-url|", VARIABLES["branch"])] ^ - set isInternal to find(baseUrl, "artifacts.visualstudio.com") >= 0 ^ + set isInternal to VARIABLES["IsInternal"] || find(baseUrl, "artifacts.visualstudio.com") >= 0 ^ set isSingleStage to (find(OS_VERSION, "windowsservercore") >= 0 && !isInternal) ^ set installerStageFromImage to cat("mcr.microsoft.com/windows/servercore:", OS_VERSION_NUMBER, "-amd64") ^ diff --git a/eng/dockerfile-templates/runtime-deps/Dockerfile b/eng/dockerfile-templates/runtime-deps/Dockerfile index ffe2a9ccd4..744ba877c9 100644 --- a/eng/dockerfile-templates/runtime-deps/Dockerfile +++ b/eng/dockerfile-templates/runtime-deps/Dockerfile @@ -12,7 +12,7 @@ set isAzureLinux to isCblMariner || defined(match(OS_VERSION, "^azurelinux\d+\.\d+$")) ^ set baseUrl to VARIABLES[cat("dotnet|", dotnetVersion, "|base-url|", VARIABLES["branch"])] ^ - set isInternal to find(baseUrl, "artifacts.visualstudio.com") >= 0 ^ + set isInternal to VARIABLES["IsInternal"] || find(baseUrl, "artifacts.visualstudio.com") >= 0 ^ set baseImageRepo to when(isAlpine, cat(ARCH_VERSIONED, "/alpine"), diff --git a/eng/dockerfile-templates/runtime/Dockerfile.linux b/eng/dockerfile-templates/runtime/Dockerfile.linux index b7967341ac..2a4ecf65d9 100644 --- a/eng/dockerfile-templates/runtime/Dockerfile.linux +++ b/eng/dockerfile-templates/runtime/Dockerfile.linux @@ -10,7 +10,7 @@ set isFullAzureLinux to isAzureLinux && !isDistroless ^ set isDistrolessAzureLinux to isAzureLinux && isDistroless ^ set baseUrl to VARIABLES[cat("dotnet|", dotnetVersion, "|base-url|", VARIABLES["branch"])] ^ - set isInternal to find(baseUrl, "artifacts.visualstudio.com") >= 0 ^ + set isInternal to VARIABLES["IsInternal"] || find(baseUrl, "artifacts.visualstudio.com") >= 0 ^ set isSingleStage to isAlpine && !isInternal ^ set runtimeDepsVariant to when(ARGS["is-extra"], "-extra", "") ^ set tagVersion to VARIABLES[cat("dotnet|", dotnetVersion, "|fixed-tag")] ^ diff --git a/eng/dockerfile-templates/runtime/Dockerfile.windows b/eng/dockerfile-templates/runtime/Dockerfile.windows index 905a23a276..052f98fb26 100644 --- a/eng/dockerfile-templates/runtime/Dockerfile.windows +++ b/eng/dockerfile-templates/runtime/Dockerfile.windows @@ -4,7 +4,7 @@ set isServer2025 to find(OS_VERSION_NUMBER, "2025") >= 0 ^ set dotnetBaseUrl to VARIABLES[cat("dotnet|", dotnetVersion, "|base-url|", VARIABLES["branch"])] ^ - set isInternal to find(baseUrl, "artifacts.visualstudio.com") >= 0 ^ + set isInternal to VARIABLES["IsInternal"] || find(baseUrl, "artifacts.visualstudio.com") >= 0 ^ set isSingleStage to (find(OS_VERSION, "windowsservercore") >= 0 && !isInternal) ^ set installerStageRepo to cat("mcr.microsoft.com/windows/", "servercore") ^ diff --git a/eng/dockerfile-templates/sdk/Dockerfile.linux b/eng/dockerfile-templates/sdk/Dockerfile.linux index e566b78e5d..eb836c13ab 100644 --- a/eng/dockerfile-templates/sdk/Dockerfile.linux +++ b/eng/dockerfile-templates/sdk/Dockerfile.linux @@ -4,7 +4,7 @@ set isMariner to find(OS_VERSION, "cbl-mariner") >= 0 ^ set isAzureLinux to isMariner || find(OS_VERSION, "azurelinux") >= 0 ^ set baseUrl to VARIABLES[cat("dotnet|", dotnetVersion, "|base-url|", VARIABLES["branch"])] ^ - set isInternal to find(baseUrl, "artifacts.visualstudio.com") >= 0 ^ + set isInternal to VARIABLES["IsInternal"] || find(baseUrl, "artifacts.visualstudio.com") >= 0 ^ set tagVersion to VARIABLES[cat("dotnet|", dotnetVersion, "|fixed-tag")] ^ set baseImageTag to cat("$REPO:", tagVersion, "-", OS_VERSION, ARCH_TAG_SUFFIX) ^ diff --git a/eng/dockerfile-templates/sdk/Dockerfile.windows b/eng/dockerfile-templates/sdk/Dockerfile.windows index 5bb30c9c29..a2e745876e 100644 --- a/eng/dockerfile-templates/sdk/Dockerfile.windows +++ b/eng/dockerfile-templates/sdk/Dockerfile.windows @@ -1,7 +1,7 @@ {{ set dotnetVersion to join(slice(split(PRODUCT_VERSION, "."), 0, 2), ".") ^ set baseUrl to VARIABLES[cat("dotnet|", dotnetVersion, "|base-url|", VARIABLES["branch"])] ^ - set isInternal to find(baseUrl, "artifacts.visualstudio.com") >= 0 ^ + set isInternal to VARIABLES["IsInternal"] || find(baseUrl, "artifacts.visualstudio.com") >= 0 ^ set isSingleStage to (find(OS_VERSION, "windowsservercore") >= 0 && !isInternal) ^ set installerStageFromImage to cat("mcr.microsoft.com/windows/servercore:", OS_VERSION_NUMBER, "-amd64") ^ diff --git a/tests/Microsoft.DotNet.Docker.Tests/DockerfileHelper.cs b/tests/Microsoft.DotNet.Docker.Tests/DockerfileHelper.cs new file mode 100644 index 0000000000..25d2d9fed9 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/DockerfileHelper.cs @@ -0,0 +1,59 @@ +// 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. + +using System.Text.RegularExpressions; + +namespace Microsoft.DotNet.Docker.Tests; + +#nullable enable +public static partial class DockerfileHelper +{ + [GeneratedRegex("[A-Fa-f0-9]{128}")] + private static partial Regex Sha512Regex { get; } + + [GeneratedRegex("[A-Fa-f0-9]{96}")] + private static partial Regex Sha386Regex { get; } + + [GeneratedRegex("[A-Fa-f0-9]{64}")] + private static partial Regex Sha256Regex { get; } + + [GeneratedRegex(@"\d+\.\d+\.\d+(?!\.windows)")] + private static partial Regex SemanticVersionRegex { get; } + + [GeneratedRegex(@"v\d+\.\d+\.\d+\.windows\.\d+")] + private static partial Regex MinGitVersionRegex { get; } + + [GeneratedRegex(@"alpine\d+\.\d+")] + private static partial Regex AlpineVersionRegex { get; } + + private static List<(Regex pattern, string replacement)> Patterns { get; } = + [ + (Sha512Regex, "{sha512_placeholder}"), + (Sha386Regex, "{sha386_placeholder}"), + (Sha256Regex, "{sha256_placeholder}"), + (SemanticVersionRegex, "0.0.0"), + (MinGitVersionRegex, "v0.0.0.windows.0"), + (AlpineVersionRegex, "alpine3.XX"), + ]; + + public static async Task ScrubDockerfilesAsync(string path) + { + string[] dockerfiles = + Directory.GetFiles(path, "Dockerfile", + new EnumerationOptions { RecurseSubdirectories = true }); + + IEnumerable tasks = dockerfiles.Select(dockerfile => ReplaceTextAsync(dockerfile, Patterns)); + await Task.WhenAll(tasks); + } + + private static async Task ReplaceTextAsync(string filePath, List<(Regex pattern, string replacement)> patterns) + { + string content = await File.ReadAllTextAsync(filePath); + foreach ((Regex pattern, string replacement) in patterns) + { + content = pattern.Replace(content, replacement); + } + await File.WriteAllTextAsync(filePath, content); + } +} diff --git a/tests/Microsoft.DotNet.Docker.Tests/GeneratedArtifactTests.cs b/tests/Microsoft.DotNet.Docker.Tests/GeneratedArtifactTests.cs index 4ad31882ef..35c8421656 100644 --- a/tests/Microsoft.DotNet.Docker.Tests/GeneratedArtifactTests.cs +++ b/tests/Microsoft.DotNet.Docker.Tests/GeneratedArtifactTests.cs @@ -4,8 +4,6 @@ using System.ComponentModel; using System.Diagnostics; -using System.IO; -using Xunit; using Xunit.Abstractions; namespace Microsoft.DotNet.Docker.Tests @@ -15,8 +13,10 @@ public class GeneratedArtifactTests { private static readonly string s_generateDockerfilesScript = Path.Combine(Config.SourceRepoRoot, "eng", "dockerfile-templates", "Get-GeneratedDockerfiles.ps1"); + private static readonly string s_generateTagsDocumentationScript = Path.Combine(Config.SourceRepoRoot, "eng", "readme-templates", "Get-GeneratedReadmes.ps1"); + private ITestOutputHelper OutputHelper { get; } public GeneratedArtifactTests(ITestOutputHelper outputHelper) @@ -41,12 +41,19 @@ public void VerifyReadmeTemplates() } [Fact] - public async Task VerifyGeneratedDockerfilesOutput() + public async Task VerifyInternalDockerfilesOutput() { using TempFolderContext outputDirectory = FileHelper.UseTempFolder(); + string dockerfilesPath = Path.Combine(outputDirectory.Path, "src"); + + string errorMessage = $"Failed to generate Dockerfiles using `{s_generateDockerfilesScript}`."; + ExecuteScript( + s_generateDockerfilesScript, + $"-Output {outputDirectory.Path} -IsInternalOverride", + errorMessage); - GenerateArtifacts(s_generateDockerfilesScript, outputDirectory.Path); - await VerifyDirectory(outputDirectory.Path); + await DockerfileHelper.ScrubDockerfilesAsync(dockerfilesPath); + await VerifyDirectory(dockerfilesPath).UseDirectory("Baselines"); } private void ValidateGeneratedArtifacts(string generateScriptPath, string errorMessage) @@ -54,12 +61,6 @@ private void ValidateGeneratedArtifacts(string generateScriptPath, string errorM ExecuteScript(generateScriptPath, "-Validate", errorMessage); } - private void GenerateArtifacts(string generateScriptPath, string outputDirectory) - { - ExecuteScript(generateScriptPath, $"-Output {outputDirectory}", - $"Failed to generate artifacts using `{generateScriptPath}`."); - } - private void ExecuteScript(string generateScriptPath, string arguments, string errorMessage) { string powershellArgs = $"-File {generateScriptPath} {arguments}"; diff --git a/tests/Microsoft.DotNet.Docker.Tests/VerifyChecks.cs b/tests/Microsoft.DotNet.Docker.Tests/VerifyChecks.cs index 6bafe44740..126514c889 100644 --- a/tests/Microsoft.DotNet.Docker.Tests/VerifyChecks.cs +++ b/tests/Microsoft.DotNet.Docker.Tests/VerifyChecks.cs @@ -3,6 +3,7 @@ // See the LICENSE file in the project root for more information. using System.Runtime.CompilerServices; +using VerifyTests.DiffPlex; namespace Microsoft.DotNet.Docker.Tests; @@ -19,5 +20,5 @@ public static class ModuleInitializer { [ModuleInitializer] public static void Initialize() => - VerifyDiffPlex.Initialize(); + VerifyDiffPlex.Initialize(OutputType.Compact); } From 783996be6e9925477a08ab9aa350b4043f8b67c1 Mon Sep 17 00:00:00 2001 From: Logan Bussell Date: Thu, 9 Jan 2025 14:10:00 -0800 Subject: [PATCH 3/5] Accept baselines --- .../amd64/Dockerfile.verified.noextension | 35 ++++++ .../arm64v8/Dockerfile.verified.noextension | 35 ++++++ .../amd64/Dockerfile.verified.noextension | 28 +++++ .../arm32v7/Dockerfile.verified.noextension | 28 +++++ .../arm64v8/Dockerfile.verified.noextension | 28 +++++ .../amd64/Dockerfile.verified.noextension | 23 ++++ .../arm32v7/Dockerfile.verified.noextension | 23 ++++ .../arm64v8/Dockerfile.verified.noextension | 23 ++++ .../amd64/Dockerfile.verified.noextension | 28 +++++ .../arm32v7/Dockerfile.verified.noextension | 28 +++++ .../arm64v8/Dockerfile.verified.noextension | 28 +++++ .../amd64/Dockerfile.verified.noextension | 23 ++++ .../arm32v7/Dockerfile.verified.noextension | 23 ++++ .../arm64v8/Dockerfile.verified.noextension | 23 ++++ .../amd64/Dockerfile.verified.noextension | 40 +++++++ .../arm64v8/Dockerfile.verified.noextension | 40 +++++++ .../amd64/Dockerfile.verified.noextension | 40 +++++++ .../arm64v8/Dockerfile.verified.noextension | 40 +++++++ .../amd64/Dockerfile.verified.noextension | 30 ++++++ .../arm64v8/Dockerfile.verified.noextension | 30 ++++++ .../amd64/Dockerfile.verified.noextension | 30 ++++++ .../arm64v8/Dockerfile.verified.noextension | 30 ++++++ .../amd64/Dockerfile.verified.noextension | 27 +++++ .../arm64v8/Dockerfile.verified.noextension | 27 +++++ .../amd64/Dockerfile.verified.noextension | 23 ++++ .../arm32v7/Dockerfile.verified.noextension | 23 ++++ .../arm64v8/Dockerfile.verified.noextension | 23 ++++ .../amd64/Dockerfile.verified.noextension | 40 +++++++ .../arm64v8/Dockerfile.verified.noextension | 40 +++++++ .../amd64/Dockerfile.verified.noextension | 40 +++++++ .../arm64v8/Dockerfile.verified.noextension | 40 +++++++ .../amd64/Dockerfile.verified.noextension | 30 ++++++ .../arm64v8/Dockerfile.verified.noextension | 30 ++++++ .../amd64/Dockerfile.verified.noextension | 30 ++++++ .../arm64v8/Dockerfile.verified.noextension | 30 ++++++ .../amd64/Dockerfile.verified.noextension | 27 +++++ .../arm64v8/Dockerfile.verified.noextension | 27 +++++ .../amd64/Dockerfile.verified.noextension | 34 ++++++ .../arm32v7/Dockerfile.verified.noextension | 34 ++++++ .../arm64v8/Dockerfile.verified.noextension | 34 ++++++ .../amd64/Dockerfile.verified.noextension | 34 ++++++ .../arm32v7/Dockerfile.verified.noextension | 34 ++++++ .../arm64v8/Dockerfile.verified.noextension | 34 ++++++ .../amd64/Dockerfile.verified.noextension | 24 +++++ .../arm32v7/Dockerfile.verified.noextension | 24 +++++ .../arm64v8/Dockerfile.verified.noextension | 24 +++++ .../amd64/Dockerfile.verified.noextension | 24 +++++ .../arm32v7/Dockerfile.verified.noextension | 24 +++++ .../arm64v8/Dockerfile.verified.noextension | 24 +++++ .../amd64/Dockerfile.verified.noextension | 23 ++++ .../arm32v7/Dockerfile.verified.noextension | 23 ++++ .../arm64v8/Dockerfile.verified.noextension | 23 ++++ .../amd64/Dockerfile.verified.noextension | 38 +++++++ .../amd64/Dockerfile.verified.noextension | 38 +++++++ .../amd64/Dockerfile.verified.noextension | 38 +++++++ .../amd64/Dockerfile.verified.noextension | 34 ++++++ .../arm64v8/Dockerfile.verified.noextension | 34 ++++++ .../amd64/Dockerfile.verified.noextension | 34 ++++++ .../arm64v8/Dockerfile.verified.noextension | 34 ++++++ .../amd64/Dockerfile.verified.noextension | 24 +++++ .../arm64v8/Dockerfile.verified.noextension | 24 +++++ .../amd64/Dockerfile.verified.noextension | 24 +++++ .../arm64v8/Dockerfile.verified.noextension | 24 +++++ .../amd64/Dockerfile.verified.noextension | 23 ++++ .../arm64v8/Dockerfile.verified.noextension | 23 ++++ .../amd64/Dockerfile.verified.noextension | 38 +++++++ .../amd64/Dockerfile.verified.noextension | 38 +++++++ .../amd64/Dockerfile.verified.noextension | 38 +++++++ .../amd64/Dockerfile.verified.noextension | 28 +++++ .../arm32v7/Dockerfile.verified.noextension | 28 +++++ .../arm64v8/Dockerfile.verified.noextension | 28 +++++ .../amd64/Dockerfile.verified.noextension | 23 ++++ .../arm32v7/Dockerfile.verified.noextension | 23 ++++ .../arm64v8/Dockerfile.verified.noextension | 23 ++++ .../amd64/Dockerfile.verified.noextension | 28 +++++ .../arm32v7/Dockerfile.verified.noextension | 28 +++++ .../arm64v8/Dockerfile.verified.noextension | 28 +++++ .../amd64/Dockerfile.verified.noextension | 23 ++++ .../arm32v7/Dockerfile.verified.noextension | 23 ++++ .../arm64v8/Dockerfile.verified.noextension | 23 ++++ .../amd64/Dockerfile.verified.noextension | 40 +++++++ .../arm64v8/Dockerfile.verified.noextension | 40 +++++++ .../amd64/Dockerfile.verified.noextension | 40 +++++++ .../arm64v8/Dockerfile.verified.noextension | 40 +++++++ .../amd64/Dockerfile.verified.noextension | 30 ++++++ .../arm64v8/Dockerfile.verified.noextension | 30 ++++++ .../amd64/Dockerfile.verified.noextension | 30 ++++++ .../arm64v8/Dockerfile.verified.noextension | 30 ++++++ .../amd64/Dockerfile.verified.noextension | 27 +++++ .../arm64v8/Dockerfile.verified.noextension | 27 +++++ .../amd64/Dockerfile.verified.noextension | 23 ++++ .../arm32v7/Dockerfile.verified.noextension | 23 ++++ .../arm64v8/Dockerfile.verified.noextension | 23 ++++ .../amd64/Dockerfile.verified.noextension | 38 +++++++ .../amd64/Dockerfile.verified.noextension | 38 +++++++ .../amd64/Dockerfile.verified.noextension | 38 +++++++ .../amd64/Dockerfile.verified.noextension | 34 ++++++ .../arm32v7/Dockerfile.verified.noextension | 34 ++++++ .../arm64v8/Dockerfile.verified.noextension | 34 ++++++ .../amd64/Dockerfile.verified.noextension | 34 ++++++ .../arm32v7/Dockerfile.verified.noextension | 34 ++++++ .../arm64v8/Dockerfile.verified.noextension | 34 ++++++ .../amd64/Dockerfile.verified.noextension | 24 +++++ .../arm32v7/Dockerfile.verified.noextension | 24 +++++ .../arm64v8/Dockerfile.verified.noextension | 24 +++++ .../amd64/Dockerfile.verified.noextension | 24 +++++ .../arm32v7/Dockerfile.verified.noextension | 24 +++++ .../arm64v8/Dockerfile.verified.noextension | 24 +++++ .../amd64/Dockerfile.verified.noextension | 23 ++++ .../arm32v7/Dockerfile.verified.noextension | 23 ++++ .../arm64v8/Dockerfile.verified.noextension | 23 ++++ .../amd64/Dockerfile.verified.noextension | 38 +++++++ .../amd64/Dockerfile.verified.noextension | 38 +++++++ .../amd64/Dockerfile.verified.noextension | 38 +++++++ .../amd64/Dockerfile.verified.noextension | 50 +++++++++ .../arm64v8/Dockerfile.verified.noextension | 50 +++++++++ .../amd64/Dockerfile.verified.noextension | 44 ++++++++ .../arm64v8/Dockerfile.verified.noextension | 44 ++++++++ .../amd64/Dockerfile.verified.noextension | 50 +++++++++ .../arm64v8/Dockerfile.verified.noextension | 50 +++++++++ .../amd64/Dockerfile.verified.noextension | 44 ++++++++ .../arm64v8/Dockerfile.verified.noextension | 44 ++++++++ .../amd64/Dockerfile.verified.noextension | 50 +++++++++ .../arm64v8/Dockerfile.verified.noextension | 50 +++++++++ .../amd64/Dockerfile.verified.noextension | 32 ++++++ .../arm64v8/Dockerfile.verified.noextension | 32 ++++++ .../amd64/Dockerfile.verified.noextension | 26 +++++ .../arm64v8/Dockerfile.verified.noextension | 26 +++++ .../amd64/Dockerfile.verified.noextension | 32 ++++++ .../arm64v8/Dockerfile.verified.noextension | 32 ++++++ .../amd64/Dockerfile.verified.noextension | 26 +++++ .../arm64v8/Dockerfile.verified.noextension | 26 +++++ .../amd64/Dockerfile.verified.noextension | 32 ++++++ .../arm64v8/Dockerfile.verified.noextension | 32 ++++++ .../amd64/Dockerfile.verified.noextension | 47 ++++++++ .../arm32v7/Dockerfile.verified.noextension | 47 ++++++++ .../arm64v8/Dockerfile.verified.noextension | 47 ++++++++ .../amd64/Dockerfile.verified.noextension | 49 +++++++++ .../arm32v7/Dockerfile.verified.noextension | 49 +++++++++ .../arm64v8/Dockerfile.verified.noextension | 49 +++++++++ .../amd64/Dockerfile.verified.noextension | 48 +++++++++ .../arm32v7/Dockerfile.verified.noextension | 48 +++++++++ .../arm64v8/Dockerfile.verified.noextension | 48 +++++++++ .../amd64/Dockerfile.verified.noextension | 47 ++++++++ .../arm32v7/Dockerfile.verified.noextension | 47 ++++++++ .../arm64v8/Dockerfile.verified.noextension | 47 ++++++++ .../amd64/Dockerfile.verified.noextension | 49 +++++++++ .../arm32v7/Dockerfile.verified.noextension | 49 +++++++++ .../arm64v8/Dockerfile.verified.noextension | 49 +++++++++ .../amd64/Dockerfile.verified.noextension | 48 +++++++++ .../arm32v7/Dockerfile.verified.noextension | 48 +++++++++ .../arm64v8/Dockerfile.verified.noextension | 48 +++++++++ .../amd64/Dockerfile.verified.noextension | 72 +++++++++++++ .../arm64v8/Dockerfile.verified.noextension | 72 +++++++++++++ .../amd64/Dockerfile.verified.noextension | 73 +++++++++++++ .../arm64v8/Dockerfile.verified.noextension | 73 +++++++++++++ .../amd64/Dockerfile.verified.noextension | 73 +++++++++++++ .../arm64v8/Dockerfile.verified.noextension | 73 +++++++++++++ .../amd64/Dockerfile.verified.noextension | 56 ++++++++++ .../arm64v8/Dockerfile.verified.noextension | 56 ++++++++++ .../amd64/Dockerfile.verified.noextension | 52 +++++++++ .../arm32v7/Dockerfile.verified.noextension | 52 +++++++++ .../arm64v8/Dockerfile.verified.noextension | 52 +++++++++ .../amd64/Dockerfile.verified.noextension | 72 +++++++++++++ .../arm64v8/Dockerfile.verified.noextension | 72 +++++++++++++ .../amd64/Dockerfile.verified.noextension | 73 +++++++++++++ .../arm64v8/Dockerfile.verified.noextension | 73 +++++++++++++ .../amd64/Dockerfile.verified.noextension | 73 +++++++++++++ .../arm64v8/Dockerfile.verified.noextension | 73 +++++++++++++ .../amd64/Dockerfile.verified.noextension | 51 +++++++++ .../arm64v8/Dockerfile.verified.noextension | 51 +++++++++ .../amd64/Dockerfile.verified.noextension | 55 ++++++++++ .../arm32v7/Dockerfile.verified.noextension | 55 ++++++++++ .../arm64v8/Dockerfile.verified.noextension | 55 ++++++++++ .../amd64/Dockerfile.verified.noextension | 57 ++++++++++ .../arm32v7/Dockerfile.verified.noextension | 57 ++++++++++ .../arm64v8/Dockerfile.verified.noextension | 57 ++++++++++ .../amd64/Dockerfile.verified.noextension | 56 ++++++++++ .../arm32v7/Dockerfile.verified.noextension | 56 ++++++++++ .../arm64v8/Dockerfile.verified.noextension | 56 ++++++++++ .../amd64/Dockerfile.verified.noextension | 52 +++++++++ .../arm32v7/Dockerfile.verified.noextension | 52 +++++++++ .../arm64v8/Dockerfile.verified.noextension | 52 +++++++++ .../amd64/Dockerfile.verified.noextension | 55 ++++++++++ .../arm64v8/Dockerfile.verified.noextension | 55 ++++++++++ .../amd64/Dockerfile.verified.noextension | 57 ++++++++++ .../arm64v8/Dockerfile.verified.noextension | 57 ++++++++++ .../amd64/Dockerfile.verified.noextension | 56 ++++++++++ .../arm64v8/Dockerfile.verified.noextension | 56 ++++++++++ .../amd64/Dockerfile.verified.noextension | 53 ++++++++++ .../arm64v8/Dockerfile.verified.noextension | 53 ++++++++++ .../amd64/Dockerfile.verified.noextension | 46 ++++++++ .../arm32v7/Dockerfile.verified.noextension | 46 ++++++++ .../arm64v8/Dockerfile.verified.noextension | 46 ++++++++ .../amd64/Dockerfile.verified.noextension | 48 +++++++++ .../arm32v7/Dockerfile.verified.noextension | 48 +++++++++ .../arm64v8/Dockerfile.verified.noextension | 48 +++++++++ .../amd64/Dockerfile.verified.noextension | 47 ++++++++ .../arm32v7/Dockerfile.verified.noextension | 47 ++++++++ .../arm64v8/Dockerfile.verified.noextension | 47 ++++++++ .../amd64/Dockerfile.verified.noextension | 46 ++++++++ .../arm32v7/Dockerfile.verified.noextension | 46 ++++++++ .../arm64v8/Dockerfile.verified.noextension | 46 ++++++++ .../amd64/Dockerfile.verified.noextension | 48 +++++++++ .../arm32v7/Dockerfile.verified.noextension | 48 +++++++++ .../arm64v8/Dockerfile.verified.noextension | 48 +++++++++ .../amd64/Dockerfile.verified.noextension | 47 ++++++++ .../arm32v7/Dockerfile.verified.noextension | 47 ++++++++ .../arm64v8/Dockerfile.verified.noextension | 47 ++++++++ .../amd64/Dockerfile.verified.noextension | 71 +++++++++++++ .../arm64v8/Dockerfile.verified.noextension | 71 +++++++++++++ .../amd64/Dockerfile.verified.noextension | 72 +++++++++++++ .../arm64v8/Dockerfile.verified.noextension | 72 +++++++++++++ .../amd64/Dockerfile.verified.noextension | 72 +++++++++++++ .../arm64v8/Dockerfile.verified.noextension | 72 +++++++++++++ .../amd64/Dockerfile.verified.noextension | 55 ++++++++++ .../arm64v8/Dockerfile.verified.noextension | 55 ++++++++++ .../amd64/Dockerfile.verified.noextension | 51 +++++++++ .../arm32v7/Dockerfile.verified.noextension | 51 +++++++++ .../arm64v8/Dockerfile.verified.noextension | 51 +++++++++ .../amd64/Dockerfile.verified.noextension | 54 ++++++++++ .../arm32v7/Dockerfile.verified.noextension | 54 ++++++++++ .../arm64v8/Dockerfile.verified.noextension | 54 ++++++++++ .../amd64/Dockerfile.verified.noextension | 56 ++++++++++ .../arm32v7/Dockerfile.verified.noextension | 56 ++++++++++ .../arm64v8/Dockerfile.verified.noextension | 56 ++++++++++ .../amd64/Dockerfile.verified.noextension | 55 ++++++++++ .../arm32v7/Dockerfile.verified.noextension | 55 ++++++++++ .../arm64v8/Dockerfile.verified.noextension | 55 ++++++++++ .../amd64/Dockerfile.verified.noextension | 52 +++++++++ .../arm32v7/Dockerfile.verified.noextension | 52 +++++++++ .../arm64v8/Dockerfile.verified.noextension | 52 +++++++++ .../amd64/Dockerfile.verified.noextension | 23 ++++ .../arm32v7/Dockerfile.verified.noextension | 23 ++++ .../arm64v8/Dockerfile.verified.noextension | 23 ++++ .../amd64/Dockerfile.verified.noextension | 23 ++++ .../arm32v7/Dockerfile.verified.noextension | 23 ++++ .../arm64v8/Dockerfile.verified.noextension | 23 ++++ .../amd64/Dockerfile.verified.noextension | 37 +++++++ .../arm64v8/Dockerfile.verified.noextension | 37 +++++++ .../amd64/Dockerfile.verified.noextension | 37 +++++++ .../arm64v8/Dockerfile.verified.noextension | 37 +++++++ .../amd64/Dockerfile.verified.noextension | 27 +++++ .../arm64v8/Dockerfile.verified.noextension | 27 +++++ .../amd64/Dockerfile.verified.noextension | 23 ++++ .../arm32v7/Dockerfile.verified.noextension | 23 ++++ .../arm64v8/Dockerfile.verified.noextension | 23 ++++ .../amd64/Dockerfile.verified.noextension | 37 +++++++ .../arm64v8/Dockerfile.verified.noextension | 37 +++++++ .../amd64/Dockerfile.verified.noextension | 37 +++++++ .../arm64v8/Dockerfile.verified.noextension | 37 +++++++ .../amd64/Dockerfile.verified.noextension | 27 +++++ .../arm64v8/Dockerfile.verified.noextension | 27 +++++ .../amd64/Dockerfile.verified.noextension | 31 ++++++ .../arm32v7/Dockerfile.verified.noextension | 31 ++++++ .../arm64v8/Dockerfile.verified.noextension | 31 ++++++ .../amd64/Dockerfile.verified.noextension | 31 ++++++ .../arm32v7/Dockerfile.verified.noextension | 31 ++++++ .../arm64v8/Dockerfile.verified.noextension | 31 ++++++ .../amd64/Dockerfile.verified.noextension | 23 ++++ .../arm32v7/Dockerfile.verified.noextension | 23 ++++ .../arm64v8/Dockerfile.verified.noextension | 23 ++++ .../amd64/Dockerfile.verified.noextension | 46 ++++++++ .../amd64/Dockerfile.verified.noextension | 46 ++++++++ .../amd64/Dockerfile.verified.noextension | 46 ++++++++ .../amd64/Dockerfile.verified.noextension | 31 ++++++ .../arm64v8/Dockerfile.verified.noextension | 31 ++++++ .../amd64/Dockerfile.verified.noextension | 31 ++++++ .../arm64v8/Dockerfile.verified.noextension | 31 ++++++ .../amd64/Dockerfile.verified.noextension | 23 ++++ .../arm64v8/Dockerfile.verified.noextension | 23 ++++ .../amd64/Dockerfile.verified.noextension | 43 ++++++++ .../amd64/Dockerfile.verified.noextension | 43 ++++++++ .../amd64/Dockerfile.verified.noextension | 43 ++++++++ .../amd64/Dockerfile.verified.noextension | 23 ++++ .../arm32v7/Dockerfile.verified.noextension | 23 ++++ .../arm64v8/Dockerfile.verified.noextension | 23 ++++ .../amd64/Dockerfile.verified.noextension | 23 ++++ .../arm32v7/Dockerfile.verified.noextension | 23 ++++ .../arm64v8/Dockerfile.verified.noextension | 23 ++++ .../amd64/Dockerfile.verified.noextension | 37 +++++++ .../arm64v8/Dockerfile.verified.noextension | 37 +++++++ .../amd64/Dockerfile.verified.noextension | 37 +++++++ .../arm64v8/Dockerfile.verified.noextension | 37 +++++++ .../amd64/Dockerfile.verified.noextension | 27 +++++ .../arm64v8/Dockerfile.verified.noextension | 27 +++++ .../amd64/Dockerfile.verified.noextension | 23 ++++ .../arm32v7/Dockerfile.verified.noextension | 23 ++++ .../arm64v8/Dockerfile.verified.noextension | 23 ++++ .../amd64/Dockerfile.verified.noextension | 46 ++++++++ .../amd64/Dockerfile.verified.noextension | 46 ++++++++ .../amd64/Dockerfile.verified.noextension | 46 ++++++++ .../amd64/Dockerfile.verified.noextension | 31 ++++++ .../arm32v7/Dockerfile.verified.noextension | 31 ++++++ .../arm64v8/Dockerfile.verified.noextension | 31 ++++++ .../amd64/Dockerfile.verified.noextension | 31 ++++++ .../arm32v7/Dockerfile.verified.noextension | 31 ++++++ .../arm64v8/Dockerfile.verified.noextension | 31 ++++++ .../amd64/Dockerfile.verified.noextension | 23 ++++ .../arm32v7/Dockerfile.verified.noextension | 23 ++++ .../arm64v8/Dockerfile.verified.noextension | 23 ++++ .../amd64/Dockerfile.verified.noextension | 43 ++++++++ .../amd64/Dockerfile.verified.noextension | 43 ++++++++ .../amd64/Dockerfile.verified.noextension | 43 ++++++++ .../amd64/Dockerfile.verified.noextension | 8 ++ .../arm64v8/Dockerfile.verified.noextension | 8 ++ .../amd64/Dockerfile.verified.noextension | 61 +++++++++++ .../arm32v7/Dockerfile.verified.noextension | 45 ++++++++ .../arm64v8/Dockerfile.verified.noextension | 45 ++++++++ .../amd64/Dockerfile.verified.noextension | 8 ++ .../arm64v8/Dockerfile.verified.noextension | 8 ++ .../amd64/Dockerfile.verified.noextension | 61 +++++++++++ .../arm32v7/Dockerfile.verified.noextension | 45 ++++++++ .../arm64v8/Dockerfile.verified.noextension | 45 ++++++++ .../amd64/Dockerfile.verified.noextension | 9 ++ .../arm64v8/Dockerfile.verified.noextension | 9 ++ .../amd64/Dockerfile.verified.noextension | 59 +++++++++++ .../arm64v8/Dockerfile.verified.noextension | 59 +++++++++++ .../amd64/Dockerfile.verified.noextension | 58 ++++++++++ .../arm32v7/Dockerfile.verified.noextension | 58 ++++++++++ .../arm64v8/Dockerfile.verified.noextension | 58 ++++++++++ .../amd64/Dockerfile.verified.noextension | 9 ++ .../arm64v8/Dockerfile.verified.noextension | 9 ++ .../amd64/Dockerfile.verified.noextension | 59 +++++++++++ .../arm64v8/Dockerfile.verified.noextension | 59 +++++++++++ .../amd64/Dockerfile.verified.noextension | 16 +++ .../arm64v8/Dockerfile.verified.noextension | 16 +++ .../amd64/Dockerfile.verified.noextension | 58 ++++++++++ .../arm32v7/Dockerfile.verified.noextension | 58 ++++++++++ .../arm64v8/Dockerfile.verified.noextension | 58 ++++++++++ .../amd64/Dockerfile.verified.noextension | 100 ++++++++++++++++++ .../amd64/Dockerfile.verified.noextension | 100 ++++++++++++++++++ .../amd64/Dockerfile.verified.noextension | 100 ++++++++++++++++++ .../amd64/Dockerfile.verified.noextension | 23 ++++ .../arm64v8/Dockerfile.verified.noextension | 23 ++++ .../amd64/Dockerfile.verified.noextension | 58 ++++++++++ .../arm64v8/Dockerfile.verified.noextension | 58 ++++++++++ .../amd64/Dockerfile.verified.noextension | 97 +++++++++++++++++ .../amd64/Dockerfile.verified.noextension | 97 +++++++++++++++++ .../amd64/Dockerfile.verified.noextension | 97 +++++++++++++++++ .../amd64/Dockerfile.verified.noextension | 8 ++ .../arm64v8/Dockerfile.verified.noextension | 8 ++ .../amd64/Dockerfile.verified.noextension | 62 +++++++++++ .../arm32v7/Dockerfile.verified.noextension | 46 ++++++++ .../arm64v8/Dockerfile.verified.noextension | 46 ++++++++ .../amd64/Dockerfile.verified.noextension | 8 ++ .../arm64v8/Dockerfile.verified.noextension | 8 ++ .../amd64/Dockerfile.verified.noextension | 62 +++++++++++ .../arm32v7/Dockerfile.verified.noextension | 46 ++++++++ .../arm64v8/Dockerfile.verified.noextension | 46 ++++++++ .../amd64/Dockerfile.verified.noextension | 9 ++ .../arm64v8/Dockerfile.verified.noextension | 9 ++ .../amd64/Dockerfile.verified.noextension | 59 +++++++++++ .../arm64v8/Dockerfile.verified.noextension | 59 +++++++++++ .../amd64/Dockerfile.verified.noextension | 58 ++++++++++ .../arm32v7/Dockerfile.verified.noextension | 58 ++++++++++ .../arm64v8/Dockerfile.verified.noextension | 58 ++++++++++ .../amd64/Dockerfile.verified.noextension | 100 ++++++++++++++++++ .../amd64/Dockerfile.verified.noextension | 100 ++++++++++++++++++ .../amd64/Dockerfile.verified.noextension | 100 ++++++++++++++++++ .../amd64/Dockerfile.verified.noextension | 23 ++++ .../arm64v8/Dockerfile.verified.noextension | 23 ++++ .../amd64/Dockerfile.verified.noextension | 58 ++++++++++ .../arm32v7/Dockerfile.verified.noextension | 58 ++++++++++ .../arm64v8/Dockerfile.verified.noextension | 58 ++++++++++ .../amd64/Dockerfile.verified.noextension | 97 +++++++++++++++++ .../amd64/Dockerfile.verified.noextension | 97 +++++++++++++++++ .../amd64/Dockerfile.verified.noextension | 97 +++++++++++++++++ 368 files changed, 14994 insertions(+) create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspire-dashboard/9.0/cbl-mariner-distroless/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspire-dashboard/9.0/cbl-mariner-distroless/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/alpine3.20-composite/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/alpine3.20-composite/arm32v7/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/alpine3.20-composite/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/alpine3.20/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/alpine3.20/arm32v7/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/alpine3.20/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/alpine3.21-composite/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/alpine3.21-composite/arm32v7/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/alpine3.21-composite/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/alpine3.21/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/alpine3.21/arm32v7/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/alpine3.21/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/azurelinux3.0-distroless-composite-extra/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/azurelinux3.0-distroless-composite-extra/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/azurelinux3.0-distroless-composite/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/azurelinux3.0-distroless-composite/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/azurelinux3.0-distroless-extra/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/azurelinux3.0-distroless-extra/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/azurelinux3.0-distroless/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/azurelinux3.0-distroless/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/azurelinux3.0/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/azurelinux3.0/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/bookworm-slim/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/bookworm-slim/arm32v7/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/bookworm-slim/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/cbl-mariner2.0-distroless-composite-extra/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/cbl-mariner2.0-distroless-composite-extra/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/cbl-mariner2.0-distroless-composite/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/cbl-mariner2.0-distroless-composite/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/cbl-mariner2.0-distroless-extra/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/cbl-mariner2.0-distroless-extra/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/cbl-mariner2.0-distroless/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/cbl-mariner2.0-distroless/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/cbl-mariner2.0/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/cbl-mariner2.0/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/jammy-chiseled-composite-extra/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/jammy-chiseled-composite-extra/arm32v7/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/jammy-chiseled-composite-extra/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/jammy-chiseled-composite/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/jammy-chiseled-composite/arm32v7/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/jammy-chiseled-composite/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/jammy-chiseled-extra/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/jammy-chiseled-extra/arm32v7/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/jammy-chiseled-extra/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/jammy-chiseled/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/jammy-chiseled/arm32v7/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/jammy-chiseled/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/jammy/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/jammy/arm32v7/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/jammy/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/nanoserver-1809/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/nanoserver-ltsc2022/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/nanoserver-ltsc2025/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/noble-chiseled-composite-extra/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/noble-chiseled-composite-extra/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/noble-chiseled-composite/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/noble-chiseled-composite/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/noble-chiseled-extra/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/noble-chiseled-extra/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/noble-chiseled/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/noble-chiseled/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/noble/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/noble/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/windowsservercore-ltsc2019/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/windowsservercore-ltsc2022/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/windowsservercore-ltsc2025/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/alpine3.20-composite/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/alpine3.20-composite/arm32v7/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/alpine3.20-composite/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/alpine3.20/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/alpine3.20/arm32v7/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/alpine3.20/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/alpine3.21-composite/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/alpine3.21-composite/arm32v7/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/alpine3.21-composite/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/alpine3.21/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/alpine3.21/arm32v7/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/alpine3.21/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/azurelinux3.0-distroless-composite-extra/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/azurelinux3.0-distroless-composite-extra/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/azurelinux3.0-distroless-composite/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/azurelinux3.0-distroless-composite/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/azurelinux3.0-distroless-extra/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/azurelinux3.0-distroless-extra/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/azurelinux3.0-distroless/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/azurelinux3.0-distroless/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/azurelinux3.0/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/azurelinux3.0/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/bookworm-slim/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/bookworm-slim/arm32v7/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/bookworm-slim/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/nanoserver-1809/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/nanoserver-ltsc2022/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/nanoserver-ltsc2025/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/noble-chiseled-composite-extra/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/noble-chiseled-composite-extra/arm32v7/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/noble-chiseled-composite-extra/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/noble-chiseled-composite/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/noble-chiseled-composite/arm32v7/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/noble-chiseled-composite/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/noble-chiseled-extra/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/noble-chiseled-extra/arm32v7/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/noble-chiseled-extra/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/noble-chiseled/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/noble-chiseled/arm32v7/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/noble-chiseled/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/noble/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/noble/arm32v7/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/noble/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/windowsservercore-ltsc2019/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/windowsservercore-ltsc2022/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/windowsservercore-ltsc2025/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/monitor-base/8.0/cbl-mariner-distroless/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/monitor-base/8.0/cbl-mariner-distroless/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/monitor-base/8.0/ubuntu-chiseled/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/monitor-base/8.0/ubuntu-chiseled/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/monitor-base/8.1/cbl-mariner-distroless/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/monitor-base/8.1/cbl-mariner-distroless/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/monitor-base/8.1/ubuntu-chiseled/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/monitor-base/8.1/ubuntu-chiseled/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/monitor-base/9.0/azurelinux-distroless/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/monitor-base/9.0/azurelinux-distroless/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/monitor/8.0/cbl-mariner-distroless/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/monitor/8.0/cbl-mariner-distroless/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/monitor/8.0/ubuntu-chiseled/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/monitor/8.0/ubuntu-chiseled/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/monitor/8.1/cbl-mariner-distroless/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/monitor/8.1/cbl-mariner-distroless/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/monitor/8.1/ubuntu-chiseled/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/monitor/8.1/ubuntu-chiseled/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/monitor/9.0/azurelinux-distroless/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/monitor/9.0/azurelinux-distroless/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/alpine3.20-aot/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/alpine3.20-aot/arm32v7/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/alpine3.20-aot/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/alpine3.20-extra/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/alpine3.20-extra/arm32v7/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/alpine3.20-extra/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/alpine3.20/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/alpine3.20/arm32v7/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/alpine3.20/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/alpine3.21-aot/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/alpine3.21-aot/arm32v7/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/alpine3.21-aot/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/alpine3.21-extra/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/alpine3.21-extra/arm32v7/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/alpine3.21-extra/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/alpine3.21/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/alpine3.21/arm32v7/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/alpine3.21/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/azurelinux3.0-distroless-aot/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/azurelinux3.0-distroless-aot/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/azurelinux3.0-distroless-extra/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/azurelinux3.0-distroless-extra/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/azurelinux3.0-distroless/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/azurelinux3.0-distroless/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/azurelinux3.0/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/azurelinux3.0/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/bookworm-slim/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/bookworm-slim/arm32v7/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/bookworm-slim/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/cbl-mariner2.0-distroless-aot/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/cbl-mariner2.0-distroless-aot/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/cbl-mariner2.0-distroless-extra/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/cbl-mariner2.0-distroless-extra/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/cbl-mariner2.0-distroless/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/cbl-mariner2.0-distroless/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/cbl-mariner2.0/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/cbl-mariner2.0/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/jammy-chiseled-aot/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/jammy-chiseled-aot/arm32v7/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/jammy-chiseled-aot/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/jammy-chiseled-extra/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/jammy-chiseled-extra/arm32v7/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/jammy-chiseled-extra/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/jammy-chiseled/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/jammy-chiseled/arm32v7/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/jammy-chiseled/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/jammy/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/jammy/arm32v7/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/jammy/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/noble-chiseled-aot/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/noble-chiseled-aot/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/noble-chiseled-extra/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/noble-chiseled-extra/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/noble-chiseled/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/noble-chiseled/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/noble/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/noble/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/alpine3.20-aot/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/alpine3.20-aot/arm32v7/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/alpine3.20-aot/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/alpine3.20-extra/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/alpine3.20-extra/arm32v7/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/alpine3.20-extra/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/alpine3.20/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/alpine3.20/arm32v7/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/alpine3.20/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/alpine3.21-aot/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/alpine3.21-aot/arm32v7/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/alpine3.21-aot/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/alpine3.21-extra/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/alpine3.21-extra/arm32v7/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/alpine3.21-extra/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/alpine3.21/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/alpine3.21/arm32v7/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/alpine3.21/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/azurelinux3.0-distroless-aot/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/azurelinux3.0-distroless-aot/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/azurelinux3.0-distroless-extra/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/azurelinux3.0-distroless-extra/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/azurelinux3.0-distroless/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/azurelinux3.0-distroless/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/azurelinux3.0/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/azurelinux3.0/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/bookworm-slim/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/bookworm-slim/arm32v7/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/bookworm-slim/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/noble-chiseled-aot/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/noble-chiseled-aot/arm32v7/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/noble-chiseled-aot/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/noble-chiseled-extra/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/noble-chiseled-extra/arm32v7/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/noble-chiseled-extra/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/noble-chiseled/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/noble-chiseled/arm32v7/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/noble-chiseled/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/noble/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/noble/arm32v7/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/noble/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/alpine3.20/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/alpine3.20/arm32v7/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/alpine3.20/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/alpine3.21/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/alpine3.21/arm32v7/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/alpine3.21/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/azurelinux3.0-distroless-extra/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/azurelinux3.0-distroless-extra/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/azurelinux3.0-distroless/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/azurelinux3.0-distroless/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/azurelinux3.0/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/azurelinux3.0/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/bookworm-slim/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/bookworm-slim/arm32v7/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/bookworm-slim/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/cbl-mariner2.0-distroless-extra/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/cbl-mariner2.0-distroless-extra/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/cbl-mariner2.0-distroless/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/cbl-mariner2.0-distroless/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/cbl-mariner2.0/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/cbl-mariner2.0/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/jammy-chiseled-extra/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/jammy-chiseled-extra/arm32v7/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/jammy-chiseled-extra/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/jammy-chiseled/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/jammy-chiseled/arm32v7/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/jammy-chiseled/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/jammy/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/jammy/arm32v7/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/jammy/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/nanoserver-1809/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/nanoserver-ltsc2022/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/nanoserver-ltsc2025/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/noble-chiseled-extra/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/noble-chiseled-extra/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/noble-chiseled/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/noble-chiseled/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/noble/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/noble/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/windowsservercore-ltsc2019/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/windowsservercore-ltsc2022/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/windowsservercore-ltsc2025/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/9.0/alpine3.20/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/9.0/alpine3.20/arm32v7/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/9.0/alpine3.20/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/9.0/alpine3.21/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/9.0/alpine3.21/arm32v7/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/9.0/alpine3.21/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/9.0/azurelinux3.0-distroless-extra/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/9.0/azurelinux3.0-distroless-extra/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/9.0/azurelinux3.0-distroless/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/9.0/azurelinux3.0-distroless/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/9.0/azurelinux3.0/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/9.0/azurelinux3.0/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/9.0/bookworm-slim/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/9.0/bookworm-slim/arm32v7/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/9.0/bookworm-slim/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/9.0/nanoserver-1809/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/9.0/nanoserver-ltsc2022/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/9.0/nanoserver-ltsc2025/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/9.0/noble-chiseled-extra/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/9.0/noble-chiseled-extra/arm32v7/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/9.0/noble-chiseled-extra/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/9.0/noble-chiseled/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/9.0/noble-chiseled/arm32v7/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/9.0/noble-chiseled/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/9.0/noble/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/9.0/noble/arm32v7/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/9.0/noble/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/9.0/windowsservercore-ltsc2019/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/9.0/windowsservercore-ltsc2022/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/9.0/windowsservercore-ltsc2025/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/8.0/alpine3.20-aot/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/8.0/alpine3.20-aot/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/8.0/alpine3.20/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/8.0/alpine3.20/arm32v7/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/8.0/alpine3.20/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/8.0/alpine3.21-aot/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/8.0/alpine3.21-aot/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/8.0/alpine3.21/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/8.0/alpine3.21/arm32v7/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/8.0/alpine3.21/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/8.0/azurelinux3.0-aot/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/8.0/azurelinux3.0-aot/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/8.0/azurelinux3.0/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/8.0/azurelinux3.0/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/8.0/bookworm-slim/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/8.0/bookworm-slim/arm32v7/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/8.0/bookworm-slim/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/8.0/cbl-mariner2.0-aot/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/8.0/cbl-mariner2.0-aot/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/8.0/cbl-mariner2.0/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/8.0/cbl-mariner2.0/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/8.0/jammy-aot/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/8.0/jammy-aot/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/8.0/jammy/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/8.0/jammy/arm32v7/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/8.0/jammy/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/8.0/nanoserver-1809/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/8.0/nanoserver-ltsc2022/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/8.0/nanoserver-ltsc2025/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/8.0/noble-aot/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/8.0/noble-aot/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/8.0/noble/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/8.0/noble/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/8.0/windowsservercore-ltsc2019/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/8.0/windowsservercore-ltsc2022/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/8.0/windowsservercore-ltsc2025/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/9.0/alpine3.20-aot/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/9.0/alpine3.20-aot/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/9.0/alpine3.20/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/9.0/alpine3.20/arm32v7/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/9.0/alpine3.20/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/9.0/alpine3.21-aot/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/9.0/alpine3.21-aot/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/9.0/alpine3.21/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/9.0/alpine3.21/arm32v7/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/9.0/alpine3.21/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/9.0/azurelinux3.0-aot/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/9.0/azurelinux3.0-aot/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/9.0/azurelinux3.0/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/9.0/azurelinux3.0/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/9.0/bookworm-slim/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/9.0/bookworm-slim/arm32v7/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/9.0/bookworm-slim/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/9.0/nanoserver-1809/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/9.0/nanoserver-ltsc2022/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/9.0/nanoserver-ltsc2025/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/9.0/noble-aot/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/9.0/noble-aot/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/9.0/noble/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/9.0/noble/arm32v7/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/9.0/noble/arm64v8/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/9.0/windowsservercore-ltsc2019/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/9.0/windowsservercore-ltsc2022/amd64/Dockerfile.verified.noextension create mode 100644 tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/9.0/windowsservercore-ltsc2025/amd64/Dockerfile.verified.noextension diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspire-dashboard/9.0/cbl-mariner-distroless/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspire-dashboard/9.0/cbl-mariner-distroless/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..69b858f725 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspire-dashboard/9.0/cbl-mariner-distroless/amd64/Dockerfile.verified.noextension @@ -0,0 +1,35 @@ +ARG REPO=mcr.microsoft.com/dotnet/aspnet + +# Installer image +FROM mcr.microsoft.com/cbl-mariner/base/core:2.0 AS installer + +RUN tdnf install -y \ + ca-certificates \ + unzip \ + && tdnf clean all + +# Retrieve Aspire Dashboard +RUN dotnet_aspire_version=0.0.0-preview.0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output aspire_dashboard.zip "https://ci.dot.net/public/aspire/$dotnet_aspire_version/aspire-dashboard-linux-x64.zip" \ + && aspire_dashboard_sha512='{sha512_placeholder}' \ + && echo "$aspire_dashboard_sha512 aspire_dashboard.zip" | sha512sum -c - \ + && mkdir -p /app \ + && unzip aspire_dashboard.zip -d /app \ + && rm aspire_dashboard.zip + + +# Aspire Dashboard image +FROM $REPO:0.0.0-cbl-mariner2.0-distroless-extra-amd64 + +WORKDIR /app +COPY --from=installer /app . + +ENV \ + # Unset ASPNETCORE_HTTP_PORTS from base image + ASPNETCORE_HTTP_PORTS= \ + # Aspire Dashboard environment variables + ASPNETCORE_URLS=http://+:18888 \ + DOTNET_DASHBOARD_OTLP_ENDPOINT_URL=http://+:18889 \ + DOTNET_DASHBOARD_OTLP_HTTP_ENDPOINT_URL=http://+:18890 + +ENTRYPOINT [ "dotnet", "/app/Aspire.Dashboard.dll" ] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspire-dashboard/9.0/cbl-mariner-distroless/arm64v8/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspire-dashboard/9.0/cbl-mariner-distroless/arm64v8/Dockerfile.verified.noextension new file mode 100644 index 0000000000..f39b80e6ad --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspire-dashboard/9.0/cbl-mariner-distroless/arm64v8/Dockerfile.verified.noextension @@ -0,0 +1,35 @@ +ARG REPO=mcr.microsoft.com/dotnet/aspnet + +# Installer image +FROM mcr.microsoft.com/cbl-mariner/base/core:2.0 AS installer + +RUN tdnf install -y \ + ca-certificates \ + unzip \ + && tdnf clean all + +# Retrieve Aspire Dashboard +RUN dotnet_aspire_version=0.0.0-preview.0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output aspire_dashboard.zip "https://ci.dot.net/public/aspire/$dotnet_aspire_version/aspire-dashboard-linux-arm64.zip" \ + && aspire_dashboard_sha512='{sha512_placeholder}' \ + && echo "$aspire_dashboard_sha512 aspire_dashboard.zip" | sha512sum -c - \ + && mkdir -p /app \ + && unzip aspire_dashboard.zip -d /app \ + && rm aspire_dashboard.zip + + +# Aspire Dashboard image +FROM $REPO:0.0.0-cbl-mariner2.0-distroless-extra-arm64v8 + +WORKDIR /app +COPY --from=installer /app . + +ENV \ + # Unset ASPNETCORE_HTTP_PORTS from base image + ASPNETCORE_HTTP_PORTS= \ + # Aspire Dashboard environment variables + ASPNETCORE_URLS=http://+:18888 \ + DOTNET_DASHBOARD_OTLP_ENDPOINT_URL=http://+:18889 \ + DOTNET_DASHBOARD_OTLP_HTTP_ENDPOINT_URL=http://+:18890 + +ENTRYPOINT [ "dotnet", "/app/Aspire.Dashboard.dll" ] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/alpine3.20-composite/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/alpine3.20-composite/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..b13facf4ff --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/alpine3.20-composite/amd64/Dockerfile.verified.noextension @@ -0,0 +1,28 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime-deps + +# Installer image +FROM $REPO:0.0.0-alpine3.XX-amd64 AS installer + +ARG ACCESSTOKEN + +# Retrieve ASP.NET Composite Runtime +RUN aspnetcore_version=0.0.0 \ + && wget --header="Authorization: Basic `echo $ACCESSTOKEN:$ACCESSTOKEN | base64 -w 0`" -O dotnet.tar.gz "https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-composite-$aspnetcore_version-linux-musl-x64.tar.gz" \ + && dotnet_sha512='{sha512_placeholder}' \ + && echo "$dotnet_sha512 dotnet.tar.gz" | sha512sum -c - \ + && mkdir -p /dotnet \ + && tar -oxzf dotnet.tar.gz -C /dotnet \ + && rm dotnet.tar.gz + + +# ASP.NET Composite Image +FROM $REPO:0.0.0-alpine3.XX-amd64 + +ENV \ + # .NET Runtime version + DOTNET_VERSION=0.0.0 \ + # ASP.NET Core version + ASPNET_VERSION=0.0.0 + +COPY --from=installer ["/dotnet", "/usr/share/dotnet"] +RUN ln -s /usr/share/dotnet/dotnet /usr/bin/dotnet diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/alpine3.20-composite/arm32v7/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/alpine3.20-composite/arm32v7/Dockerfile.verified.noextension new file mode 100644 index 0000000000..85b613e224 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/alpine3.20-composite/arm32v7/Dockerfile.verified.noextension @@ -0,0 +1,28 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime-deps + +# Installer image +FROM $REPO:0.0.0-alpine3.XX-arm32v7 AS installer + +ARG ACCESSTOKEN + +# Retrieve ASP.NET Composite Runtime +RUN aspnetcore_version=0.0.0 \ + && wget --header="Authorization: Basic `echo $ACCESSTOKEN:$ACCESSTOKEN | base64 -w 0`" -O dotnet.tar.gz "https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-composite-$aspnetcore_version-linux-musl-arm.tar.gz" \ + && dotnet_sha512='{sha512_placeholder}' \ + && echo "$dotnet_sha512 dotnet.tar.gz" | sha512sum -c - \ + && mkdir -p /dotnet \ + && tar -oxzf dotnet.tar.gz -C /dotnet \ + && rm dotnet.tar.gz + + +# ASP.NET Composite Image +FROM $REPO:0.0.0-alpine3.XX-arm32v7 + +ENV \ + # .NET Runtime version + DOTNET_VERSION=0.0.0 \ + # ASP.NET Core version + ASPNET_VERSION=0.0.0 + +COPY --from=installer ["/dotnet", "/usr/share/dotnet"] +RUN ln -s /usr/share/dotnet/dotnet /usr/bin/dotnet diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/alpine3.20-composite/arm64v8/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/alpine3.20-composite/arm64v8/Dockerfile.verified.noextension new file mode 100644 index 0000000000..e380a7238a --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/alpine3.20-composite/arm64v8/Dockerfile.verified.noextension @@ -0,0 +1,28 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime-deps + +# Installer image +FROM $REPO:0.0.0-alpine3.XX-arm64v8 AS installer + +ARG ACCESSTOKEN + +# Retrieve ASP.NET Composite Runtime +RUN aspnetcore_version=0.0.0 \ + && wget --header="Authorization: Basic `echo $ACCESSTOKEN:$ACCESSTOKEN | base64 -w 0`" -O dotnet.tar.gz "https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-composite-$aspnetcore_version-linux-musl-arm64.tar.gz" \ + && dotnet_sha512='{sha512_placeholder}' \ + && echo "$dotnet_sha512 dotnet.tar.gz" | sha512sum -c - \ + && mkdir -p /dotnet \ + && tar -oxzf dotnet.tar.gz -C /dotnet \ + && rm dotnet.tar.gz + + +# ASP.NET Composite Image +FROM $REPO:0.0.0-alpine3.XX-arm64v8 + +ENV \ + # .NET Runtime version + DOTNET_VERSION=0.0.0 \ + # ASP.NET Core version + ASPNET_VERSION=0.0.0 + +COPY --from=installer ["/dotnet", "/usr/share/dotnet"] +RUN ln -s /usr/share/dotnet/dotnet /usr/bin/dotnet diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/alpine3.20/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/alpine3.20/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..2df648204c --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/alpine3.20/amd64/Dockerfile.verified.noextension @@ -0,0 +1,23 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime + +# Installer image +FROM $REPO:0.0.0-alpine3.XX-amd64 AS installer + +ARG ACCESSTOKEN + +# Retrieve ASP.NET Core +RUN aspnetcore_version=0.0.0 \ + && wget --header="Authorization: Basic `echo $ACCESSTOKEN:$ACCESSTOKEN | base64 -w 0`" -O aspnetcore.tar.gz "https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-musl-x64.tar.gz" \ + && aspnetcore_sha512='{sha512_placeholder}' \ + && echo "$aspnetcore_sha512 aspnetcore.tar.gz" | sha512sum -c - \ + && tar -oxzf aspnetcore.tar.gz ./shared/Microsoft.AspNetCore.App \ + && rm aspnetcore.tar.gz + + +# ASP.NET Core image +FROM $REPO:0.0.0-alpine3.XX-amd64 + +# ASP.NET Core version +ENV ASPNET_VERSION=0.0.0 + +COPY --from=installer ["/shared/Microsoft.AspNetCore.App", "/usr/share/dotnet/shared/Microsoft.AspNetCore.App"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/alpine3.20/arm32v7/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/alpine3.20/arm32v7/Dockerfile.verified.noextension new file mode 100644 index 0000000000..4fdc858e79 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/alpine3.20/arm32v7/Dockerfile.verified.noextension @@ -0,0 +1,23 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime + +# Installer image +FROM $REPO:0.0.0-alpine3.XX-arm32v7 AS installer + +ARG ACCESSTOKEN + +# Retrieve ASP.NET Core +RUN aspnetcore_version=0.0.0 \ + && wget --header="Authorization: Basic `echo $ACCESSTOKEN:$ACCESSTOKEN | base64 -w 0`" -O aspnetcore.tar.gz "https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-musl-arm.tar.gz" \ + && aspnetcore_sha512='{sha512_placeholder}' \ + && echo "$aspnetcore_sha512 aspnetcore.tar.gz" | sha512sum -c - \ + && tar -oxzf aspnetcore.tar.gz ./shared/Microsoft.AspNetCore.App \ + && rm aspnetcore.tar.gz + + +# ASP.NET Core image +FROM $REPO:0.0.0-alpine3.XX-arm32v7 + +# ASP.NET Core version +ENV ASPNET_VERSION=0.0.0 + +COPY --from=installer ["/shared/Microsoft.AspNetCore.App", "/usr/share/dotnet/shared/Microsoft.AspNetCore.App"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/alpine3.20/arm64v8/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/alpine3.20/arm64v8/Dockerfile.verified.noextension new file mode 100644 index 0000000000..4da6c28a8d --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/alpine3.20/arm64v8/Dockerfile.verified.noextension @@ -0,0 +1,23 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime + +# Installer image +FROM $REPO:0.0.0-alpine3.XX-arm64v8 AS installer + +ARG ACCESSTOKEN + +# Retrieve ASP.NET Core +RUN aspnetcore_version=0.0.0 \ + && wget --header="Authorization: Basic `echo $ACCESSTOKEN:$ACCESSTOKEN | base64 -w 0`" -O aspnetcore.tar.gz "https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-musl-arm64.tar.gz" \ + && aspnetcore_sha512='{sha512_placeholder}' \ + && echo "$aspnetcore_sha512 aspnetcore.tar.gz" | sha512sum -c - \ + && tar -oxzf aspnetcore.tar.gz ./shared/Microsoft.AspNetCore.App \ + && rm aspnetcore.tar.gz + + +# ASP.NET Core image +FROM $REPO:0.0.0-alpine3.XX-arm64v8 + +# ASP.NET Core version +ENV ASPNET_VERSION=0.0.0 + +COPY --from=installer ["/shared/Microsoft.AspNetCore.App", "/usr/share/dotnet/shared/Microsoft.AspNetCore.App"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/alpine3.21-composite/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/alpine3.21-composite/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..b13facf4ff --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/alpine3.21-composite/amd64/Dockerfile.verified.noextension @@ -0,0 +1,28 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime-deps + +# Installer image +FROM $REPO:0.0.0-alpine3.XX-amd64 AS installer + +ARG ACCESSTOKEN + +# Retrieve ASP.NET Composite Runtime +RUN aspnetcore_version=0.0.0 \ + && wget --header="Authorization: Basic `echo $ACCESSTOKEN:$ACCESSTOKEN | base64 -w 0`" -O dotnet.tar.gz "https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-composite-$aspnetcore_version-linux-musl-x64.tar.gz" \ + && dotnet_sha512='{sha512_placeholder}' \ + && echo "$dotnet_sha512 dotnet.tar.gz" | sha512sum -c - \ + && mkdir -p /dotnet \ + && tar -oxzf dotnet.tar.gz -C /dotnet \ + && rm dotnet.tar.gz + + +# ASP.NET Composite Image +FROM $REPO:0.0.0-alpine3.XX-amd64 + +ENV \ + # .NET Runtime version + DOTNET_VERSION=0.0.0 \ + # ASP.NET Core version + ASPNET_VERSION=0.0.0 + +COPY --from=installer ["/dotnet", "/usr/share/dotnet"] +RUN ln -s /usr/share/dotnet/dotnet /usr/bin/dotnet diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/alpine3.21-composite/arm32v7/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/alpine3.21-composite/arm32v7/Dockerfile.verified.noextension new file mode 100644 index 0000000000..85b613e224 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/alpine3.21-composite/arm32v7/Dockerfile.verified.noextension @@ -0,0 +1,28 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime-deps + +# Installer image +FROM $REPO:0.0.0-alpine3.XX-arm32v7 AS installer + +ARG ACCESSTOKEN + +# Retrieve ASP.NET Composite Runtime +RUN aspnetcore_version=0.0.0 \ + && wget --header="Authorization: Basic `echo $ACCESSTOKEN:$ACCESSTOKEN | base64 -w 0`" -O dotnet.tar.gz "https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-composite-$aspnetcore_version-linux-musl-arm.tar.gz" \ + && dotnet_sha512='{sha512_placeholder}' \ + && echo "$dotnet_sha512 dotnet.tar.gz" | sha512sum -c - \ + && mkdir -p /dotnet \ + && tar -oxzf dotnet.tar.gz -C /dotnet \ + && rm dotnet.tar.gz + + +# ASP.NET Composite Image +FROM $REPO:0.0.0-alpine3.XX-arm32v7 + +ENV \ + # .NET Runtime version + DOTNET_VERSION=0.0.0 \ + # ASP.NET Core version + ASPNET_VERSION=0.0.0 + +COPY --from=installer ["/dotnet", "/usr/share/dotnet"] +RUN ln -s /usr/share/dotnet/dotnet /usr/bin/dotnet diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/alpine3.21-composite/arm64v8/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/alpine3.21-composite/arm64v8/Dockerfile.verified.noextension new file mode 100644 index 0000000000..e380a7238a --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/alpine3.21-composite/arm64v8/Dockerfile.verified.noextension @@ -0,0 +1,28 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime-deps + +# Installer image +FROM $REPO:0.0.0-alpine3.XX-arm64v8 AS installer + +ARG ACCESSTOKEN + +# Retrieve ASP.NET Composite Runtime +RUN aspnetcore_version=0.0.0 \ + && wget --header="Authorization: Basic `echo $ACCESSTOKEN:$ACCESSTOKEN | base64 -w 0`" -O dotnet.tar.gz "https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-composite-$aspnetcore_version-linux-musl-arm64.tar.gz" \ + && dotnet_sha512='{sha512_placeholder}' \ + && echo "$dotnet_sha512 dotnet.tar.gz" | sha512sum -c - \ + && mkdir -p /dotnet \ + && tar -oxzf dotnet.tar.gz -C /dotnet \ + && rm dotnet.tar.gz + + +# ASP.NET Composite Image +FROM $REPO:0.0.0-alpine3.XX-arm64v8 + +ENV \ + # .NET Runtime version + DOTNET_VERSION=0.0.0 \ + # ASP.NET Core version + ASPNET_VERSION=0.0.0 + +COPY --from=installer ["/dotnet", "/usr/share/dotnet"] +RUN ln -s /usr/share/dotnet/dotnet /usr/bin/dotnet diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/alpine3.21/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/alpine3.21/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..2df648204c --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/alpine3.21/amd64/Dockerfile.verified.noextension @@ -0,0 +1,23 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime + +# Installer image +FROM $REPO:0.0.0-alpine3.XX-amd64 AS installer + +ARG ACCESSTOKEN + +# Retrieve ASP.NET Core +RUN aspnetcore_version=0.0.0 \ + && wget --header="Authorization: Basic `echo $ACCESSTOKEN:$ACCESSTOKEN | base64 -w 0`" -O aspnetcore.tar.gz "https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-musl-x64.tar.gz" \ + && aspnetcore_sha512='{sha512_placeholder}' \ + && echo "$aspnetcore_sha512 aspnetcore.tar.gz" | sha512sum -c - \ + && tar -oxzf aspnetcore.tar.gz ./shared/Microsoft.AspNetCore.App \ + && rm aspnetcore.tar.gz + + +# ASP.NET Core image +FROM $REPO:0.0.0-alpine3.XX-amd64 + +# ASP.NET Core version +ENV ASPNET_VERSION=0.0.0 + +COPY --from=installer ["/shared/Microsoft.AspNetCore.App", "/usr/share/dotnet/shared/Microsoft.AspNetCore.App"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/alpine3.21/arm32v7/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/alpine3.21/arm32v7/Dockerfile.verified.noextension new file mode 100644 index 0000000000..4fdc858e79 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/alpine3.21/arm32v7/Dockerfile.verified.noextension @@ -0,0 +1,23 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime + +# Installer image +FROM $REPO:0.0.0-alpine3.XX-arm32v7 AS installer + +ARG ACCESSTOKEN + +# Retrieve ASP.NET Core +RUN aspnetcore_version=0.0.0 \ + && wget --header="Authorization: Basic `echo $ACCESSTOKEN:$ACCESSTOKEN | base64 -w 0`" -O aspnetcore.tar.gz "https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-musl-arm.tar.gz" \ + && aspnetcore_sha512='{sha512_placeholder}' \ + && echo "$aspnetcore_sha512 aspnetcore.tar.gz" | sha512sum -c - \ + && tar -oxzf aspnetcore.tar.gz ./shared/Microsoft.AspNetCore.App \ + && rm aspnetcore.tar.gz + + +# ASP.NET Core image +FROM $REPO:0.0.0-alpine3.XX-arm32v7 + +# ASP.NET Core version +ENV ASPNET_VERSION=0.0.0 + +COPY --from=installer ["/shared/Microsoft.AspNetCore.App", "/usr/share/dotnet/shared/Microsoft.AspNetCore.App"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/alpine3.21/arm64v8/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/alpine3.21/arm64v8/Dockerfile.verified.noextension new file mode 100644 index 0000000000..4da6c28a8d --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/alpine3.21/arm64v8/Dockerfile.verified.noextension @@ -0,0 +1,23 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime + +# Installer image +FROM $REPO:0.0.0-alpine3.XX-arm64v8 AS installer + +ARG ACCESSTOKEN + +# Retrieve ASP.NET Core +RUN aspnetcore_version=0.0.0 \ + && wget --header="Authorization: Basic `echo $ACCESSTOKEN:$ACCESSTOKEN | base64 -w 0`" -O aspnetcore.tar.gz "https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-musl-arm64.tar.gz" \ + && aspnetcore_sha512='{sha512_placeholder}' \ + && echo "$aspnetcore_sha512 aspnetcore.tar.gz" | sha512sum -c - \ + && tar -oxzf aspnetcore.tar.gz ./shared/Microsoft.AspNetCore.App \ + && rm aspnetcore.tar.gz + + +# ASP.NET Core image +FROM $REPO:0.0.0-alpine3.XX-arm64v8 + +# ASP.NET Core version +ENV ASPNET_VERSION=0.0.0 + +COPY --from=installer ["/shared/Microsoft.AspNetCore.App", "/usr/share/dotnet/shared/Microsoft.AspNetCore.App"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/azurelinux3.0-distroless-composite-extra/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/azurelinux3.0-distroless-composite-extra/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..8441739e71 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/azurelinux3.0-distroless-composite-extra/amd64/Dockerfile.verified.noextension @@ -0,0 +1,40 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime-deps + +# Installer image +FROM mcr.microsoft.com/azurelinux/base/core:3.0 AS installer + +ARG ACCESSTOKEN + +RUN tdnf install -y \ + ca-certificates \ + gzip \ + tar \ + && tdnf clean all + +# Retrieve ASP.NET Composite Runtime +RUN aspnetcore_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output dotnet.tar.gz "https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-composite-$aspnetcore_version-linux-x64.tar.gz" \ + && dotnet_sha512='{sha512_placeholder}' \ + && echo "$dotnet_sha512 dotnet.tar.gz" | sha512sum -c - \ + && mkdir -p /usr/share/dotnet \ + && tar -oxzf dotnet.tar.gz -C /usr/share/dotnet \ + && rm dotnet.tar.gz + +RUN mkdir /dotnet-symlink \ + && ln -s /usr/share/dotnet/dotnet /dotnet-symlink/dotnet + + +# ASP.NET Composite Image +FROM $REPO:0.0.0-azurelinux3.0-distroless-extra-amd64 + +ENV \ + # .NET Runtime version + DOTNET_VERSION=0.0.0 \ + # ASP.NET Core version + ASPNET_VERSION=0.0.0 + +COPY --from=installer ["/usr/share/dotnet", "/usr/share/dotnet"] +COPY --from=installer ["/dotnet-symlink", "/usr/bin"] + +ENTRYPOINT ["/usr/bin/dotnet"] +CMD ["--info"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/azurelinux3.0-distroless-composite-extra/arm64v8/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/azurelinux3.0-distroless-composite-extra/arm64v8/Dockerfile.verified.noextension new file mode 100644 index 0000000000..57b6ebd595 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/azurelinux3.0-distroless-composite-extra/arm64v8/Dockerfile.verified.noextension @@ -0,0 +1,40 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime-deps + +# Installer image +FROM mcr.microsoft.com/azurelinux/base/core:3.0 AS installer + +ARG ACCESSTOKEN + +RUN tdnf install -y \ + ca-certificates \ + gzip \ + tar \ + && tdnf clean all + +# Retrieve ASP.NET Composite Runtime +RUN aspnetcore_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output dotnet.tar.gz "https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-composite-$aspnetcore_version-linux-arm64.tar.gz" \ + && dotnet_sha512='{sha512_placeholder}' \ + && echo "$dotnet_sha512 dotnet.tar.gz" | sha512sum -c - \ + && mkdir -p /usr/share/dotnet \ + && tar -oxzf dotnet.tar.gz -C /usr/share/dotnet \ + && rm dotnet.tar.gz + +RUN mkdir /dotnet-symlink \ + && ln -s /usr/share/dotnet/dotnet /dotnet-symlink/dotnet + + +# ASP.NET Composite Image +FROM $REPO:0.0.0-azurelinux3.0-distroless-extra-arm64v8 + +ENV \ + # .NET Runtime version + DOTNET_VERSION=0.0.0 \ + # ASP.NET Core version + ASPNET_VERSION=0.0.0 + +COPY --from=installer ["/usr/share/dotnet", "/usr/share/dotnet"] +COPY --from=installer ["/dotnet-symlink", "/usr/bin"] + +ENTRYPOINT ["/usr/bin/dotnet"] +CMD ["--info"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/azurelinux3.0-distroless-composite/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/azurelinux3.0-distroless-composite/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..aa14f9bfe5 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/azurelinux3.0-distroless-composite/amd64/Dockerfile.verified.noextension @@ -0,0 +1,40 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime-deps + +# Installer image +FROM mcr.microsoft.com/azurelinux/base/core:3.0 AS installer + +ARG ACCESSTOKEN + +RUN tdnf install -y \ + ca-certificates \ + gzip \ + tar \ + && tdnf clean all + +# Retrieve ASP.NET Composite Runtime +RUN aspnetcore_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output dotnet.tar.gz "https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-composite-$aspnetcore_version-linux-x64.tar.gz" \ + && dotnet_sha512='{sha512_placeholder}' \ + && echo "$dotnet_sha512 dotnet.tar.gz" | sha512sum -c - \ + && mkdir -p /usr/share/dotnet \ + && tar -oxzf dotnet.tar.gz -C /usr/share/dotnet \ + && rm dotnet.tar.gz + +RUN mkdir /dotnet-symlink \ + && ln -s /usr/share/dotnet/dotnet /dotnet-symlink/dotnet + + +# ASP.NET Composite Image +FROM $REPO:0.0.0-azurelinux3.0-distroless-amd64 + +ENV \ + # .NET Runtime version + DOTNET_VERSION=0.0.0 \ + # ASP.NET Core version + ASPNET_VERSION=0.0.0 + +COPY --from=installer ["/usr/share/dotnet", "/usr/share/dotnet"] +COPY --from=installer ["/dotnet-symlink", "/usr/bin"] + +ENTRYPOINT ["/usr/bin/dotnet"] +CMD ["--info"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/azurelinux3.0-distroless-composite/arm64v8/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/azurelinux3.0-distroless-composite/arm64v8/Dockerfile.verified.noextension new file mode 100644 index 0000000000..4329cc5df5 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/azurelinux3.0-distroless-composite/arm64v8/Dockerfile.verified.noextension @@ -0,0 +1,40 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime-deps + +# Installer image +FROM mcr.microsoft.com/azurelinux/base/core:3.0 AS installer + +ARG ACCESSTOKEN + +RUN tdnf install -y \ + ca-certificates \ + gzip \ + tar \ + && tdnf clean all + +# Retrieve ASP.NET Composite Runtime +RUN aspnetcore_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output dotnet.tar.gz "https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-composite-$aspnetcore_version-linux-arm64.tar.gz" \ + && dotnet_sha512='{sha512_placeholder}' \ + && echo "$dotnet_sha512 dotnet.tar.gz" | sha512sum -c - \ + && mkdir -p /usr/share/dotnet \ + && tar -oxzf dotnet.tar.gz -C /usr/share/dotnet \ + && rm dotnet.tar.gz + +RUN mkdir /dotnet-symlink \ + && ln -s /usr/share/dotnet/dotnet /dotnet-symlink/dotnet + + +# ASP.NET Composite Image +FROM $REPO:0.0.0-azurelinux3.0-distroless-arm64v8 + +ENV \ + # .NET Runtime version + DOTNET_VERSION=0.0.0 \ + # ASP.NET Core version + ASPNET_VERSION=0.0.0 + +COPY --from=installer ["/usr/share/dotnet", "/usr/share/dotnet"] +COPY --from=installer ["/dotnet-symlink", "/usr/bin"] + +ENTRYPOINT ["/usr/bin/dotnet"] +CMD ["--info"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/azurelinux3.0-distroless-extra/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/azurelinux3.0-distroless-extra/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..b9e24512fd --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/azurelinux3.0-distroless-extra/amd64/Dockerfile.verified.noextension @@ -0,0 +1,30 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime + +# Installer image +FROM mcr.microsoft.com/azurelinux/base/core:3.0 AS installer + +ARG ACCESSTOKEN + +RUN tdnf install -y \ + ca-certificates \ + gzip \ + tar \ + && tdnf clean all + +# Retrieve ASP.NET Core +RUN aspnetcore_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output aspnetcore.tar.gz "https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-x64.tar.gz" \ + && aspnetcore_sha512='{sha512_placeholder}' \ + && echo "$aspnetcore_sha512 aspnetcore.tar.gz" | sha512sum -c - \ + && mkdir -p /dotnet \ + && tar -oxzf aspnetcore.tar.gz -C /dotnet ./shared/Microsoft.AspNetCore.App \ + && rm aspnetcore.tar.gz + + +# ASP.NET Core image +FROM $REPO:0.0.0-azurelinux3.0-distroless-extra-amd64 + +# ASP.NET Core version +ENV ASPNET_VERSION=0.0.0 + +COPY --from=installer ["/dotnet", "/usr/share/dotnet"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/azurelinux3.0-distroless-extra/arm64v8/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/azurelinux3.0-distroless-extra/arm64v8/Dockerfile.verified.noextension new file mode 100644 index 0000000000..01d6fe3706 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/azurelinux3.0-distroless-extra/arm64v8/Dockerfile.verified.noextension @@ -0,0 +1,30 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime + +# Installer image +FROM mcr.microsoft.com/azurelinux/base/core:3.0 AS installer + +ARG ACCESSTOKEN + +RUN tdnf install -y \ + ca-certificates \ + gzip \ + tar \ + && tdnf clean all + +# Retrieve ASP.NET Core +RUN aspnetcore_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output aspnetcore.tar.gz "https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-arm64.tar.gz" \ + && aspnetcore_sha512='{sha512_placeholder}' \ + && echo "$aspnetcore_sha512 aspnetcore.tar.gz" | sha512sum -c - \ + && mkdir -p /dotnet \ + && tar -oxzf aspnetcore.tar.gz -C /dotnet ./shared/Microsoft.AspNetCore.App \ + && rm aspnetcore.tar.gz + + +# ASP.NET Core image +FROM $REPO:0.0.0-azurelinux3.0-distroless-extra-arm64v8 + +# ASP.NET Core version +ENV ASPNET_VERSION=0.0.0 + +COPY --from=installer ["/dotnet", "/usr/share/dotnet"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/azurelinux3.0-distroless/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/azurelinux3.0-distroless/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..1ee172a6c0 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/azurelinux3.0-distroless/amd64/Dockerfile.verified.noextension @@ -0,0 +1,30 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime + +# Installer image +FROM mcr.microsoft.com/azurelinux/base/core:3.0 AS installer + +ARG ACCESSTOKEN + +RUN tdnf install -y \ + ca-certificates \ + gzip \ + tar \ + && tdnf clean all + +# Retrieve ASP.NET Core +RUN aspnetcore_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output aspnetcore.tar.gz "https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-x64.tar.gz" \ + && aspnetcore_sha512='{sha512_placeholder}' \ + && echo "$aspnetcore_sha512 aspnetcore.tar.gz" | sha512sum -c - \ + && mkdir -p /dotnet \ + && tar -oxzf aspnetcore.tar.gz -C /dotnet ./shared/Microsoft.AspNetCore.App \ + && rm aspnetcore.tar.gz + + +# ASP.NET Core image +FROM $REPO:0.0.0-azurelinux3.0-distroless-amd64 + +# ASP.NET Core version +ENV ASPNET_VERSION=0.0.0 + +COPY --from=installer ["/dotnet", "/usr/share/dotnet"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/azurelinux3.0-distroless/arm64v8/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/azurelinux3.0-distroless/arm64v8/Dockerfile.verified.noextension new file mode 100644 index 0000000000..b8a0c77c7a --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/azurelinux3.0-distroless/arm64v8/Dockerfile.verified.noextension @@ -0,0 +1,30 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime + +# Installer image +FROM mcr.microsoft.com/azurelinux/base/core:3.0 AS installer + +ARG ACCESSTOKEN + +RUN tdnf install -y \ + ca-certificates \ + gzip \ + tar \ + && tdnf clean all + +# Retrieve ASP.NET Core +RUN aspnetcore_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output aspnetcore.tar.gz "https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-arm64.tar.gz" \ + && aspnetcore_sha512='{sha512_placeholder}' \ + && echo "$aspnetcore_sha512 aspnetcore.tar.gz" | sha512sum -c - \ + && mkdir -p /dotnet \ + && tar -oxzf aspnetcore.tar.gz -C /dotnet ./shared/Microsoft.AspNetCore.App \ + && rm aspnetcore.tar.gz + + +# ASP.NET Core image +FROM $REPO:0.0.0-azurelinux3.0-distroless-arm64v8 + +# ASP.NET Core version +ENV ASPNET_VERSION=0.0.0 + +COPY --from=installer ["/dotnet", "/usr/share/dotnet"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/azurelinux3.0/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/azurelinux3.0/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..ee3ef5ccce --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/azurelinux3.0/amd64/Dockerfile.verified.noextension @@ -0,0 +1,27 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime + +# Installer image +FROM $REPO:0.0.0-azurelinux3.0-amd64 AS installer + +ARG ACCESSTOKEN + +RUN tdnf install -y \ + tar \ + && tdnf clean all + +# Retrieve ASP.NET Core +RUN aspnetcore_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output aspnetcore.tar.gz "https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-x64.tar.gz" \ + && aspnetcore_sha512='{sha512_placeholder}' \ + && echo "$aspnetcore_sha512 aspnetcore.tar.gz" | sha512sum -c - \ + && tar -oxzf aspnetcore.tar.gz ./shared/Microsoft.AspNetCore.App \ + && rm aspnetcore.tar.gz + + +# ASP.NET Core image +FROM $REPO:0.0.0-azurelinux3.0-amd64 + +# ASP.NET Core version +ENV ASPNET_VERSION=0.0.0 + +COPY --from=installer ["/shared/Microsoft.AspNetCore.App", "/usr/share/dotnet/shared/Microsoft.AspNetCore.App"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/azurelinux3.0/arm64v8/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/azurelinux3.0/arm64v8/Dockerfile.verified.noextension new file mode 100644 index 0000000000..7d5a6de8e8 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/azurelinux3.0/arm64v8/Dockerfile.verified.noextension @@ -0,0 +1,27 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime + +# Installer image +FROM $REPO:0.0.0-azurelinux3.0-arm64v8 AS installer + +ARG ACCESSTOKEN + +RUN tdnf install -y \ + tar \ + && tdnf clean all + +# Retrieve ASP.NET Core +RUN aspnetcore_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output aspnetcore.tar.gz "https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-arm64.tar.gz" \ + && aspnetcore_sha512='{sha512_placeholder}' \ + && echo "$aspnetcore_sha512 aspnetcore.tar.gz" | sha512sum -c - \ + && tar -oxzf aspnetcore.tar.gz ./shared/Microsoft.AspNetCore.App \ + && rm aspnetcore.tar.gz + + +# ASP.NET Core image +FROM $REPO:0.0.0-azurelinux3.0-arm64v8 + +# ASP.NET Core version +ENV ASPNET_VERSION=0.0.0 + +COPY --from=installer ["/shared/Microsoft.AspNetCore.App", "/usr/share/dotnet/shared/Microsoft.AspNetCore.App"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/bookworm-slim/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/bookworm-slim/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..38d561d1d9 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/bookworm-slim/amd64/Dockerfile.verified.noextension @@ -0,0 +1,23 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime + +# Installer image +FROM amd64/buildpack-deps:bookworm-curl AS installer + +ARG ACCESSTOKEN + +# Retrieve ASP.NET Core +RUN aspnetcore_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output aspnetcore.tar.gz "https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-x64.tar.gz" \ + && aspnetcore_sha512='{sha512_placeholder}' \ + && echo "$aspnetcore_sha512 aspnetcore.tar.gz" | sha512sum -c - \ + && tar -oxzf aspnetcore.tar.gz ./shared/Microsoft.AspNetCore.App \ + && rm aspnetcore.tar.gz + + +# ASP.NET Core image +FROM $REPO:0.0.0-bookworm-slim-amd64 + +# ASP.NET Core version +ENV ASPNET_VERSION=0.0.0 + +COPY --from=installer ["/shared/Microsoft.AspNetCore.App", "/usr/share/dotnet/shared/Microsoft.AspNetCore.App"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/bookworm-slim/arm32v7/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/bookworm-slim/arm32v7/Dockerfile.verified.noextension new file mode 100644 index 0000000000..52b50f6d9e --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/bookworm-slim/arm32v7/Dockerfile.verified.noextension @@ -0,0 +1,23 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime + +# Installer image +FROM arm32v7/buildpack-deps:bookworm-curl AS installer + +ARG ACCESSTOKEN + +# Retrieve ASP.NET Core +RUN aspnetcore_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output aspnetcore.tar.gz "https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-arm.tar.gz" \ + && aspnetcore_sha512='{sha512_placeholder}' \ + && echo "$aspnetcore_sha512 aspnetcore.tar.gz" | sha512sum -c - \ + && tar -oxzf aspnetcore.tar.gz ./shared/Microsoft.AspNetCore.App \ + && rm aspnetcore.tar.gz + + +# ASP.NET Core image +FROM $REPO:0.0.0-bookworm-slim-arm32v7 + +# ASP.NET Core version +ENV ASPNET_VERSION=0.0.0 + +COPY --from=installer ["/shared/Microsoft.AspNetCore.App", "/usr/share/dotnet/shared/Microsoft.AspNetCore.App"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/bookworm-slim/arm64v8/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/bookworm-slim/arm64v8/Dockerfile.verified.noextension new file mode 100644 index 0000000000..d9b6c4677e --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/bookworm-slim/arm64v8/Dockerfile.verified.noextension @@ -0,0 +1,23 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime + +# Installer image +FROM arm64v8/buildpack-deps:bookworm-curl AS installer + +ARG ACCESSTOKEN + +# Retrieve ASP.NET Core +RUN aspnetcore_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output aspnetcore.tar.gz "https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-arm64.tar.gz" \ + && aspnetcore_sha512='{sha512_placeholder}' \ + && echo "$aspnetcore_sha512 aspnetcore.tar.gz" | sha512sum -c - \ + && tar -oxzf aspnetcore.tar.gz ./shared/Microsoft.AspNetCore.App \ + && rm aspnetcore.tar.gz + + +# ASP.NET Core image +FROM $REPO:0.0.0-bookworm-slim-arm64v8 + +# ASP.NET Core version +ENV ASPNET_VERSION=0.0.0 + +COPY --from=installer ["/shared/Microsoft.AspNetCore.App", "/usr/share/dotnet/shared/Microsoft.AspNetCore.App"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/cbl-mariner2.0-distroless-composite-extra/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/cbl-mariner2.0-distroless-composite-extra/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..8424e6dfee --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/cbl-mariner2.0-distroless-composite-extra/amd64/Dockerfile.verified.noextension @@ -0,0 +1,40 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime-deps + +# Installer image +FROM mcr.microsoft.com/cbl-mariner/base/core:2.0 AS installer + +ARG ACCESSTOKEN + +RUN tdnf install -y \ + ca-certificates \ + gzip \ + tar \ + && tdnf clean all + +# Retrieve ASP.NET Composite Runtime +RUN aspnetcore_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output dotnet.tar.gz "https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-composite-$aspnetcore_version-linux-x64.tar.gz" \ + && dotnet_sha512='{sha512_placeholder}' \ + && echo "$dotnet_sha512 dotnet.tar.gz" | sha512sum -c - \ + && mkdir -p /usr/share/dotnet \ + && tar -oxzf dotnet.tar.gz -C /usr/share/dotnet \ + && rm dotnet.tar.gz + +RUN mkdir /dotnet-symlink \ + && ln -s /usr/share/dotnet/dotnet /dotnet-symlink/dotnet + + +# ASP.NET Composite Image +FROM $REPO:0.0.0-cbl-mariner2.0-distroless-extra-amd64 + +ENV \ + # .NET Runtime version + DOTNET_VERSION=0.0.0 \ + # ASP.NET Core version + ASPNET_VERSION=0.0.0 + +COPY --from=installer ["/usr/share/dotnet", "/usr/share/dotnet"] +COPY --from=installer ["/dotnet-symlink", "/usr/bin"] + +ENTRYPOINT ["/usr/bin/dotnet"] +CMD ["--info"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/cbl-mariner2.0-distroless-composite-extra/arm64v8/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/cbl-mariner2.0-distroless-composite-extra/arm64v8/Dockerfile.verified.noextension new file mode 100644 index 0000000000..53c526e166 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/cbl-mariner2.0-distroless-composite-extra/arm64v8/Dockerfile.verified.noextension @@ -0,0 +1,40 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime-deps + +# Installer image +FROM mcr.microsoft.com/cbl-mariner/base/core:2.0 AS installer + +ARG ACCESSTOKEN + +RUN tdnf install -y \ + ca-certificates \ + gzip \ + tar \ + && tdnf clean all + +# Retrieve ASP.NET Composite Runtime +RUN aspnetcore_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output dotnet.tar.gz "https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-composite-$aspnetcore_version-linux-arm64.tar.gz" \ + && dotnet_sha512='{sha512_placeholder}' \ + && echo "$dotnet_sha512 dotnet.tar.gz" | sha512sum -c - \ + && mkdir -p /usr/share/dotnet \ + && tar -oxzf dotnet.tar.gz -C /usr/share/dotnet \ + && rm dotnet.tar.gz + +RUN mkdir /dotnet-symlink \ + && ln -s /usr/share/dotnet/dotnet /dotnet-symlink/dotnet + + +# ASP.NET Composite Image +FROM $REPO:0.0.0-cbl-mariner2.0-distroless-extra-arm64v8 + +ENV \ + # .NET Runtime version + DOTNET_VERSION=0.0.0 \ + # ASP.NET Core version + ASPNET_VERSION=0.0.0 + +COPY --from=installer ["/usr/share/dotnet", "/usr/share/dotnet"] +COPY --from=installer ["/dotnet-symlink", "/usr/bin"] + +ENTRYPOINT ["/usr/bin/dotnet"] +CMD ["--info"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/cbl-mariner2.0-distroless-composite/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/cbl-mariner2.0-distroless-composite/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..25a7b4f810 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/cbl-mariner2.0-distroless-composite/amd64/Dockerfile.verified.noextension @@ -0,0 +1,40 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime-deps + +# Installer image +FROM mcr.microsoft.com/cbl-mariner/base/core:2.0 AS installer + +ARG ACCESSTOKEN + +RUN tdnf install -y \ + ca-certificates \ + gzip \ + tar \ + && tdnf clean all + +# Retrieve ASP.NET Composite Runtime +RUN aspnetcore_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output dotnet.tar.gz "https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-composite-$aspnetcore_version-linux-x64.tar.gz" \ + && dotnet_sha512='{sha512_placeholder}' \ + && echo "$dotnet_sha512 dotnet.tar.gz" | sha512sum -c - \ + && mkdir -p /usr/share/dotnet \ + && tar -oxzf dotnet.tar.gz -C /usr/share/dotnet \ + && rm dotnet.tar.gz + +RUN mkdir /dotnet-symlink \ + && ln -s /usr/share/dotnet/dotnet /dotnet-symlink/dotnet + + +# ASP.NET Composite Image +FROM $REPO:0.0.0-cbl-mariner2.0-distroless-amd64 + +ENV \ + # .NET Runtime version + DOTNET_VERSION=0.0.0 \ + # ASP.NET Core version + ASPNET_VERSION=0.0.0 + +COPY --from=installer ["/usr/share/dotnet", "/usr/share/dotnet"] +COPY --from=installer ["/dotnet-symlink", "/usr/bin"] + +ENTRYPOINT ["/usr/bin/dotnet"] +CMD ["--info"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/cbl-mariner2.0-distroless-composite/arm64v8/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/cbl-mariner2.0-distroless-composite/arm64v8/Dockerfile.verified.noextension new file mode 100644 index 0000000000..0edb9517dd --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/cbl-mariner2.0-distroless-composite/arm64v8/Dockerfile.verified.noextension @@ -0,0 +1,40 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime-deps + +# Installer image +FROM mcr.microsoft.com/cbl-mariner/base/core:2.0 AS installer + +ARG ACCESSTOKEN + +RUN tdnf install -y \ + ca-certificates \ + gzip \ + tar \ + && tdnf clean all + +# Retrieve ASP.NET Composite Runtime +RUN aspnetcore_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output dotnet.tar.gz "https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-composite-$aspnetcore_version-linux-arm64.tar.gz" \ + && dotnet_sha512='{sha512_placeholder}' \ + && echo "$dotnet_sha512 dotnet.tar.gz" | sha512sum -c - \ + && mkdir -p /usr/share/dotnet \ + && tar -oxzf dotnet.tar.gz -C /usr/share/dotnet \ + && rm dotnet.tar.gz + +RUN mkdir /dotnet-symlink \ + && ln -s /usr/share/dotnet/dotnet /dotnet-symlink/dotnet + + +# ASP.NET Composite Image +FROM $REPO:0.0.0-cbl-mariner2.0-distroless-arm64v8 + +ENV \ + # .NET Runtime version + DOTNET_VERSION=0.0.0 \ + # ASP.NET Core version + ASPNET_VERSION=0.0.0 + +COPY --from=installer ["/usr/share/dotnet", "/usr/share/dotnet"] +COPY --from=installer ["/dotnet-symlink", "/usr/bin"] + +ENTRYPOINT ["/usr/bin/dotnet"] +CMD ["--info"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/cbl-mariner2.0-distroless-extra/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/cbl-mariner2.0-distroless-extra/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..dcbc6c0c89 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/cbl-mariner2.0-distroless-extra/amd64/Dockerfile.verified.noextension @@ -0,0 +1,30 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime + +# Installer image +FROM mcr.microsoft.com/cbl-mariner/base/core:2.0 AS installer + +ARG ACCESSTOKEN + +RUN tdnf install -y \ + ca-certificates \ + gzip \ + tar \ + && tdnf clean all + +# Retrieve ASP.NET Core +RUN aspnetcore_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output aspnetcore.tar.gz "https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-x64.tar.gz" \ + && aspnetcore_sha512='{sha512_placeholder}' \ + && echo "$aspnetcore_sha512 aspnetcore.tar.gz" | sha512sum -c - \ + && mkdir -p /dotnet \ + && tar -oxzf aspnetcore.tar.gz -C /dotnet ./shared/Microsoft.AspNetCore.App \ + && rm aspnetcore.tar.gz + + +# ASP.NET Core image +FROM $REPO:0.0.0-cbl-mariner2.0-distroless-extra-amd64 + +# ASP.NET Core version +ENV ASPNET_VERSION=0.0.0 + +COPY --from=installer ["/dotnet", "/usr/share/dotnet"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/cbl-mariner2.0-distroless-extra/arm64v8/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/cbl-mariner2.0-distroless-extra/arm64v8/Dockerfile.verified.noextension new file mode 100644 index 0000000000..6dded010a7 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/cbl-mariner2.0-distroless-extra/arm64v8/Dockerfile.verified.noextension @@ -0,0 +1,30 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime + +# Installer image +FROM mcr.microsoft.com/cbl-mariner/base/core:2.0 AS installer + +ARG ACCESSTOKEN + +RUN tdnf install -y \ + ca-certificates \ + gzip \ + tar \ + && tdnf clean all + +# Retrieve ASP.NET Core +RUN aspnetcore_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output aspnetcore.tar.gz "https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-arm64.tar.gz" \ + && aspnetcore_sha512='{sha512_placeholder}' \ + && echo "$aspnetcore_sha512 aspnetcore.tar.gz" | sha512sum -c - \ + && mkdir -p /dotnet \ + && tar -oxzf aspnetcore.tar.gz -C /dotnet ./shared/Microsoft.AspNetCore.App \ + && rm aspnetcore.tar.gz + + +# ASP.NET Core image +FROM $REPO:0.0.0-cbl-mariner2.0-distroless-extra-arm64v8 + +# ASP.NET Core version +ENV ASPNET_VERSION=0.0.0 + +COPY --from=installer ["/dotnet", "/usr/share/dotnet"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/cbl-mariner2.0-distroless/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/cbl-mariner2.0-distroless/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..6f4fb5d3be --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/cbl-mariner2.0-distroless/amd64/Dockerfile.verified.noextension @@ -0,0 +1,30 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime + +# Installer image +FROM mcr.microsoft.com/cbl-mariner/base/core:2.0 AS installer + +ARG ACCESSTOKEN + +RUN tdnf install -y \ + ca-certificates \ + gzip \ + tar \ + && tdnf clean all + +# Retrieve ASP.NET Core +RUN aspnetcore_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output aspnetcore.tar.gz "https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-x64.tar.gz" \ + && aspnetcore_sha512='{sha512_placeholder}' \ + && echo "$aspnetcore_sha512 aspnetcore.tar.gz" | sha512sum -c - \ + && mkdir -p /dotnet \ + && tar -oxzf aspnetcore.tar.gz -C /dotnet ./shared/Microsoft.AspNetCore.App \ + && rm aspnetcore.tar.gz + + +# ASP.NET Core image +FROM $REPO:0.0.0-cbl-mariner2.0-distroless-amd64 + +# ASP.NET Core version +ENV ASPNET_VERSION=0.0.0 + +COPY --from=installer ["/dotnet", "/usr/share/dotnet"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/cbl-mariner2.0-distroless/arm64v8/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/cbl-mariner2.0-distroless/arm64v8/Dockerfile.verified.noextension new file mode 100644 index 0000000000..ace3f9f09c --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/cbl-mariner2.0-distroless/arm64v8/Dockerfile.verified.noextension @@ -0,0 +1,30 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime + +# Installer image +FROM mcr.microsoft.com/cbl-mariner/base/core:2.0 AS installer + +ARG ACCESSTOKEN + +RUN tdnf install -y \ + ca-certificates \ + gzip \ + tar \ + && tdnf clean all + +# Retrieve ASP.NET Core +RUN aspnetcore_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output aspnetcore.tar.gz "https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-arm64.tar.gz" \ + && aspnetcore_sha512='{sha512_placeholder}' \ + && echo "$aspnetcore_sha512 aspnetcore.tar.gz" | sha512sum -c - \ + && mkdir -p /dotnet \ + && tar -oxzf aspnetcore.tar.gz -C /dotnet ./shared/Microsoft.AspNetCore.App \ + && rm aspnetcore.tar.gz + + +# ASP.NET Core image +FROM $REPO:0.0.0-cbl-mariner2.0-distroless-arm64v8 + +# ASP.NET Core version +ENV ASPNET_VERSION=0.0.0 + +COPY --from=installer ["/dotnet", "/usr/share/dotnet"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/cbl-mariner2.0/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/cbl-mariner2.0/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..f10a7bb899 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/cbl-mariner2.0/amd64/Dockerfile.verified.noextension @@ -0,0 +1,27 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime + +# Installer image +FROM $REPO:0.0.0-cbl-mariner2.0-amd64 AS installer + +ARG ACCESSTOKEN + +RUN tdnf install -y \ + tar \ + && tdnf clean all + +# Retrieve ASP.NET Core +RUN aspnetcore_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output aspnetcore.tar.gz "https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-x64.tar.gz" \ + && aspnetcore_sha512='{sha512_placeholder}' \ + && echo "$aspnetcore_sha512 aspnetcore.tar.gz" | sha512sum -c - \ + && tar -oxzf aspnetcore.tar.gz ./shared/Microsoft.AspNetCore.App \ + && rm aspnetcore.tar.gz + + +# ASP.NET Core image +FROM $REPO:0.0.0-cbl-mariner2.0-amd64 + +# ASP.NET Core version +ENV ASPNET_VERSION=0.0.0 + +COPY --from=installer ["/shared/Microsoft.AspNetCore.App", "/usr/share/dotnet/shared/Microsoft.AspNetCore.App"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/cbl-mariner2.0/arm64v8/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/cbl-mariner2.0/arm64v8/Dockerfile.verified.noextension new file mode 100644 index 0000000000..0bedb327dd --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/cbl-mariner2.0/arm64v8/Dockerfile.verified.noextension @@ -0,0 +1,27 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime + +# Installer image +FROM $REPO:0.0.0-cbl-mariner2.0-arm64v8 AS installer + +ARG ACCESSTOKEN + +RUN tdnf install -y \ + tar \ + && tdnf clean all + +# Retrieve ASP.NET Core +RUN aspnetcore_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output aspnetcore.tar.gz "https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-arm64.tar.gz" \ + && aspnetcore_sha512='{sha512_placeholder}' \ + && echo "$aspnetcore_sha512 aspnetcore.tar.gz" | sha512sum -c - \ + && tar -oxzf aspnetcore.tar.gz ./shared/Microsoft.AspNetCore.App \ + && rm aspnetcore.tar.gz + + +# ASP.NET Core image +FROM $REPO:0.0.0-cbl-mariner2.0-arm64v8 + +# ASP.NET Core version +ENV ASPNET_VERSION=0.0.0 + +COPY --from=installer ["/shared/Microsoft.AspNetCore.App", "/usr/share/dotnet/shared/Microsoft.AspNetCore.App"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/jammy-chiseled-composite-extra/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/jammy-chiseled-composite-extra/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..69d0f6c15d --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/jammy-chiseled-composite-extra/amd64/Dockerfile.verified.noextension @@ -0,0 +1,34 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime-deps + +# Installer image +FROM amd64/buildpack-deps:jammy-curl AS installer + +ARG ACCESSTOKEN + +# Retrieve ASP.NET Composite Runtime +RUN aspnetcore_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output dotnet.tar.gz "https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-composite-$aspnetcore_version-linux-x64.tar.gz" \ + && dotnet_sha512='{sha512_placeholder}' \ + && echo "$dotnet_sha512 dotnet.tar.gz" | sha512sum -c - \ + && mkdir -p /usr/share/dotnet \ + && tar -oxzf dotnet.tar.gz -C /usr/share/dotnet \ + && rm dotnet.tar.gz + +RUN mkdir /dotnet-symlink \ + && ln -s /usr/share/dotnet/dotnet /dotnet-symlink/dotnet + + +# ASP.NET Composite Image +FROM $REPO:0.0.0-jammy-chiseled-extra-amd64 + +ENV \ + # .NET Runtime version + DOTNET_VERSION=0.0.0 \ + # ASP.NET Core version + ASPNET_VERSION=0.0.0 + +COPY --from=installer ["/usr/share/dotnet", "/usr/share/dotnet"] +COPY --from=installer ["/dotnet-symlink", "/usr/bin"] + +ENTRYPOINT ["/usr/bin/dotnet"] +CMD ["--info"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/jammy-chiseled-composite-extra/arm32v7/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/jammy-chiseled-composite-extra/arm32v7/Dockerfile.verified.noextension new file mode 100644 index 0000000000..225c2fc842 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/jammy-chiseled-composite-extra/arm32v7/Dockerfile.verified.noextension @@ -0,0 +1,34 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime-deps + +# Installer image +FROM arm32v7/buildpack-deps:jammy-curl AS installer + +ARG ACCESSTOKEN + +# Retrieve ASP.NET Composite Runtime +RUN aspnetcore_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output dotnet.tar.gz "https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-composite-$aspnetcore_version-linux-arm.tar.gz" \ + && dotnet_sha512='{sha512_placeholder}' \ + && echo "$dotnet_sha512 dotnet.tar.gz" | sha512sum -c - \ + && mkdir -p /usr/share/dotnet \ + && tar -oxzf dotnet.tar.gz -C /usr/share/dotnet \ + && rm dotnet.tar.gz + +RUN mkdir /dotnet-symlink \ + && ln -s /usr/share/dotnet/dotnet /dotnet-symlink/dotnet + + +# ASP.NET Composite Image +FROM $REPO:0.0.0-jammy-chiseled-extra-arm32v7 + +ENV \ + # .NET Runtime version + DOTNET_VERSION=0.0.0 \ + # ASP.NET Core version + ASPNET_VERSION=0.0.0 + +COPY --from=installer ["/usr/share/dotnet", "/usr/share/dotnet"] +COPY --from=installer ["/dotnet-symlink", "/usr/bin"] + +ENTRYPOINT ["/usr/bin/dotnet"] +CMD ["--info"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/jammy-chiseled-composite-extra/arm64v8/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/jammy-chiseled-composite-extra/arm64v8/Dockerfile.verified.noextension new file mode 100644 index 0000000000..3d76b917c4 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/jammy-chiseled-composite-extra/arm64v8/Dockerfile.verified.noextension @@ -0,0 +1,34 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime-deps + +# Installer image +FROM arm64v8/buildpack-deps:jammy-curl AS installer + +ARG ACCESSTOKEN + +# Retrieve ASP.NET Composite Runtime +RUN aspnetcore_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output dotnet.tar.gz "https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-composite-$aspnetcore_version-linux-arm64.tar.gz" \ + && dotnet_sha512='{sha512_placeholder}' \ + && echo "$dotnet_sha512 dotnet.tar.gz" | sha512sum -c - \ + && mkdir -p /usr/share/dotnet \ + && tar -oxzf dotnet.tar.gz -C /usr/share/dotnet \ + && rm dotnet.tar.gz + +RUN mkdir /dotnet-symlink \ + && ln -s /usr/share/dotnet/dotnet /dotnet-symlink/dotnet + + +# ASP.NET Composite Image +FROM $REPO:0.0.0-jammy-chiseled-extra-arm64v8 + +ENV \ + # .NET Runtime version + DOTNET_VERSION=0.0.0 \ + # ASP.NET Core version + ASPNET_VERSION=0.0.0 + +COPY --from=installer ["/usr/share/dotnet", "/usr/share/dotnet"] +COPY --from=installer ["/dotnet-symlink", "/usr/bin"] + +ENTRYPOINT ["/usr/bin/dotnet"] +CMD ["--info"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/jammy-chiseled-composite/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/jammy-chiseled-composite/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..c031eb7fb9 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/jammy-chiseled-composite/amd64/Dockerfile.verified.noextension @@ -0,0 +1,34 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime-deps + +# Installer image +FROM amd64/buildpack-deps:jammy-curl AS installer + +ARG ACCESSTOKEN + +# Retrieve ASP.NET Composite Runtime +RUN aspnetcore_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output dotnet.tar.gz "https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-composite-$aspnetcore_version-linux-x64.tar.gz" \ + && dotnet_sha512='{sha512_placeholder}' \ + && echo "$dotnet_sha512 dotnet.tar.gz" | sha512sum -c - \ + && mkdir -p /usr/share/dotnet \ + && tar -oxzf dotnet.tar.gz -C /usr/share/dotnet \ + && rm dotnet.tar.gz + +RUN mkdir /dotnet-symlink \ + && ln -s /usr/share/dotnet/dotnet /dotnet-symlink/dotnet + + +# ASP.NET Composite Image +FROM $REPO:0.0.0-jammy-chiseled-amd64 + +ENV \ + # .NET Runtime version + DOTNET_VERSION=0.0.0 \ + # ASP.NET Core version + ASPNET_VERSION=0.0.0 + +COPY --from=installer ["/usr/share/dotnet", "/usr/share/dotnet"] +COPY --from=installer ["/dotnet-symlink", "/usr/bin"] + +ENTRYPOINT ["/usr/bin/dotnet"] +CMD ["--info"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/jammy-chiseled-composite/arm32v7/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/jammy-chiseled-composite/arm32v7/Dockerfile.verified.noextension new file mode 100644 index 0000000000..92db6b9d6d --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/jammy-chiseled-composite/arm32v7/Dockerfile.verified.noextension @@ -0,0 +1,34 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime-deps + +# Installer image +FROM arm32v7/buildpack-deps:jammy-curl AS installer + +ARG ACCESSTOKEN + +# Retrieve ASP.NET Composite Runtime +RUN aspnetcore_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output dotnet.tar.gz "https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-composite-$aspnetcore_version-linux-arm.tar.gz" \ + && dotnet_sha512='{sha512_placeholder}' \ + && echo "$dotnet_sha512 dotnet.tar.gz" | sha512sum -c - \ + && mkdir -p /usr/share/dotnet \ + && tar -oxzf dotnet.tar.gz -C /usr/share/dotnet \ + && rm dotnet.tar.gz + +RUN mkdir /dotnet-symlink \ + && ln -s /usr/share/dotnet/dotnet /dotnet-symlink/dotnet + + +# ASP.NET Composite Image +FROM $REPO:0.0.0-jammy-chiseled-arm32v7 + +ENV \ + # .NET Runtime version + DOTNET_VERSION=0.0.0 \ + # ASP.NET Core version + ASPNET_VERSION=0.0.0 + +COPY --from=installer ["/usr/share/dotnet", "/usr/share/dotnet"] +COPY --from=installer ["/dotnet-symlink", "/usr/bin"] + +ENTRYPOINT ["/usr/bin/dotnet"] +CMD ["--info"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/jammy-chiseled-composite/arm64v8/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/jammy-chiseled-composite/arm64v8/Dockerfile.verified.noextension new file mode 100644 index 0000000000..37ae1d82e9 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/jammy-chiseled-composite/arm64v8/Dockerfile.verified.noextension @@ -0,0 +1,34 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime-deps + +# Installer image +FROM arm64v8/buildpack-deps:jammy-curl AS installer + +ARG ACCESSTOKEN + +# Retrieve ASP.NET Composite Runtime +RUN aspnetcore_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output dotnet.tar.gz "https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-composite-$aspnetcore_version-linux-arm64.tar.gz" \ + && dotnet_sha512='{sha512_placeholder}' \ + && echo "$dotnet_sha512 dotnet.tar.gz" | sha512sum -c - \ + && mkdir -p /usr/share/dotnet \ + && tar -oxzf dotnet.tar.gz -C /usr/share/dotnet \ + && rm dotnet.tar.gz + +RUN mkdir /dotnet-symlink \ + && ln -s /usr/share/dotnet/dotnet /dotnet-symlink/dotnet + + +# ASP.NET Composite Image +FROM $REPO:0.0.0-jammy-chiseled-arm64v8 + +ENV \ + # .NET Runtime version + DOTNET_VERSION=0.0.0 \ + # ASP.NET Core version + ASPNET_VERSION=0.0.0 + +COPY --from=installer ["/usr/share/dotnet", "/usr/share/dotnet"] +COPY --from=installer ["/dotnet-symlink", "/usr/bin"] + +ENTRYPOINT ["/usr/bin/dotnet"] +CMD ["--info"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/jammy-chiseled-extra/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/jammy-chiseled-extra/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..8ce8ea31b8 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/jammy-chiseled-extra/amd64/Dockerfile.verified.noextension @@ -0,0 +1,24 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime + +# Installer image +FROM amd64/buildpack-deps:jammy-curl AS installer + +ARG ACCESSTOKEN + +# Retrieve ASP.NET Core +RUN aspnetcore_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output aspnetcore.tar.gz "https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-x64.tar.gz" \ + && aspnetcore_sha512='{sha512_placeholder}' \ + && echo "$aspnetcore_sha512 aspnetcore.tar.gz" | sha512sum -c - \ + && mkdir -p /dotnet \ + && tar -oxzf aspnetcore.tar.gz -C /dotnet ./shared/Microsoft.AspNetCore.App \ + && rm aspnetcore.tar.gz + + +# ASP.NET Core image +FROM $REPO:0.0.0-jammy-chiseled-extra-amd64 + +# ASP.NET Core version +ENV ASPNET_VERSION=0.0.0 + +COPY --from=installer ["/dotnet", "/usr/share/dotnet"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/jammy-chiseled-extra/arm32v7/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/jammy-chiseled-extra/arm32v7/Dockerfile.verified.noextension new file mode 100644 index 0000000000..62a1335d2f --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/jammy-chiseled-extra/arm32v7/Dockerfile.verified.noextension @@ -0,0 +1,24 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime + +# Installer image +FROM arm32v7/buildpack-deps:jammy-curl AS installer + +ARG ACCESSTOKEN + +# Retrieve ASP.NET Core +RUN aspnetcore_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output aspnetcore.tar.gz "https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-arm.tar.gz" \ + && aspnetcore_sha512='{sha512_placeholder}' \ + && echo "$aspnetcore_sha512 aspnetcore.tar.gz" | sha512sum -c - \ + && mkdir -p /dotnet \ + && tar -oxzf aspnetcore.tar.gz -C /dotnet ./shared/Microsoft.AspNetCore.App \ + && rm aspnetcore.tar.gz + + +# ASP.NET Core image +FROM $REPO:0.0.0-jammy-chiseled-extra-arm32v7 + +# ASP.NET Core version +ENV ASPNET_VERSION=0.0.0 + +COPY --from=installer ["/dotnet", "/usr/share/dotnet"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/jammy-chiseled-extra/arm64v8/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/jammy-chiseled-extra/arm64v8/Dockerfile.verified.noextension new file mode 100644 index 0000000000..587adeb23f --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/jammy-chiseled-extra/arm64v8/Dockerfile.verified.noextension @@ -0,0 +1,24 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime + +# Installer image +FROM arm64v8/buildpack-deps:jammy-curl AS installer + +ARG ACCESSTOKEN + +# Retrieve ASP.NET Core +RUN aspnetcore_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output aspnetcore.tar.gz "https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-arm64.tar.gz" \ + && aspnetcore_sha512='{sha512_placeholder}' \ + && echo "$aspnetcore_sha512 aspnetcore.tar.gz" | sha512sum -c - \ + && mkdir -p /dotnet \ + && tar -oxzf aspnetcore.tar.gz -C /dotnet ./shared/Microsoft.AspNetCore.App \ + && rm aspnetcore.tar.gz + + +# ASP.NET Core image +FROM $REPO:0.0.0-jammy-chiseled-extra-arm64v8 + +# ASP.NET Core version +ENV ASPNET_VERSION=0.0.0 + +COPY --from=installer ["/dotnet", "/usr/share/dotnet"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/jammy-chiseled/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/jammy-chiseled/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..1d4f6627fb --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/jammy-chiseled/amd64/Dockerfile.verified.noextension @@ -0,0 +1,24 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime + +# Installer image +FROM amd64/buildpack-deps:jammy-curl AS installer + +ARG ACCESSTOKEN + +# Retrieve ASP.NET Core +RUN aspnetcore_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output aspnetcore.tar.gz "https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-x64.tar.gz" \ + && aspnetcore_sha512='{sha512_placeholder}' \ + && echo "$aspnetcore_sha512 aspnetcore.tar.gz" | sha512sum -c - \ + && mkdir -p /dotnet \ + && tar -oxzf aspnetcore.tar.gz -C /dotnet ./shared/Microsoft.AspNetCore.App \ + && rm aspnetcore.tar.gz + + +# ASP.NET Core image +FROM $REPO:0.0.0-jammy-chiseled-amd64 + +# ASP.NET Core version +ENV ASPNET_VERSION=0.0.0 + +COPY --from=installer ["/dotnet", "/usr/share/dotnet"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/jammy-chiseled/arm32v7/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/jammy-chiseled/arm32v7/Dockerfile.verified.noextension new file mode 100644 index 0000000000..04092d1b63 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/jammy-chiseled/arm32v7/Dockerfile.verified.noextension @@ -0,0 +1,24 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime + +# Installer image +FROM arm32v7/buildpack-deps:jammy-curl AS installer + +ARG ACCESSTOKEN + +# Retrieve ASP.NET Core +RUN aspnetcore_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output aspnetcore.tar.gz "https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-arm.tar.gz" \ + && aspnetcore_sha512='{sha512_placeholder}' \ + && echo "$aspnetcore_sha512 aspnetcore.tar.gz" | sha512sum -c - \ + && mkdir -p /dotnet \ + && tar -oxzf aspnetcore.tar.gz -C /dotnet ./shared/Microsoft.AspNetCore.App \ + && rm aspnetcore.tar.gz + + +# ASP.NET Core image +FROM $REPO:0.0.0-jammy-chiseled-arm32v7 + +# ASP.NET Core version +ENV ASPNET_VERSION=0.0.0 + +COPY --from=installer ["/dotnet", "/usr/share/dotnet"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/jammy-chiseled/arm64v8/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/jammy-chiseled/arm64v8/Dockerfile.verified.noextension new file mode 100644 index 0000000000..8cf0ab9008 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/jammy-chiseled/arm64v8/Dockerfile.verified.noextension @@ -0,0 +1,24 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime + +# Installer image +FROM arm64v8/buildpack-deps:jammy-curl AS installer + +ARG ACCESSTOKEN + +# Retrieve ASP.NET Core +RUN aspnetcore_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output aspnetcore.tar.gz "https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-arm64.tar.gz" \ + && aspnetcore_sha512='{sha512_placeholder}' \ + && echo "$aspnetcore_sha512 aspnetcore.tar.gz" | sha512sum -c - \ + && mkdir -p /dotnet \ + && tar -oxzf aspnetcore.tar.gz -C /dotnet ./shared/Microsoft.AspNetCore.App \ + && rm aspnetcore.tar.gz + + +# ASP.NET Core image +FROM $REPO:0.0.0-jammy-chiseled-arm64v8 + +# ASP.NET Core version +ENV ASPNET_VERSION=0.0.0 + +COPY --from=installer ["/dotnet", "/usr/share/dotnet"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/jammy/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/jammy/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..c3bd48acf5 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/jammy/amd64/Dockerfile.verified.noextension @@ -0,0 +1,23 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime + +# Installer image +FROM amd64/buildpack-deps:jammy-curl AS installer + +ARG ACCESSTOKEN + +# Retrieve ASP.NET Core +RUN aspnetcore_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output aspnetcore.tar.gz "https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-x64.tar.gz" \ + && aspnetcore_sha512='{sha512_placeholder}' \ + && echo "$aspnetcore_sha512 aspnetcore.tar.gz" | sha512sum -c - \ + && tar -oxzf aspnetcore.tar.gz ./shared/Microsoft.AspNetCore.App \ + && rm aspnetcore.tar.gz + + +# ASP.NET Core image +FROM $REPO:0.0.0-jammy-amd64 + +# ASP.NET Core version +ENV ASPNET_VERSION=0.0.0 + +COPY --from=installer ["/shared/Microsoft.AspNetCore.App", "/usr/share/dotnet/shared/Microsoft.AspNetCore.App"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/jammy/arm32v7/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/jammy/arm32v7/Dockerfile.verified.noextension new file mode 100644 index 0000000000..0712a10f34 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/jammy/arm32v7/Dockerfile.verified.noextension @@ -0,0 +1,23 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime + +# Installer image +FROM arm32v7/buildpack-deps:jammy-curl AS installer + +ARG ACCESSTOKEN + +# Retrieve ASP.NET Core +RUN aspnetcore_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output aspnetcore.tar.gz "https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-arm.tar.gz" \ + && aspnetcore_sha512='{sha512_placeholder}' \ + && echo "$aspnetcore_sha512 aspnetcore.tar.gz" | sha512sum -c - \ + && tar -oxzf aspnetcore.tar.gz ./shared/Microsoft.AspNetCore.App \ + && rm aspnetcore.tar.gz + + +# ASP.NET Core image +FROM $REPO:0.0.0-jammy-arm32v7 + +# ASP.NET Core version +ENV ASPNET_VERSION=0.0.0 + +COPY --from=installer ["/shared/Microsoft.AspNetCore.App", "/usr/share/dotnet/shared/Microsoft.AspNetCore.App"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/jammy/arm64v8/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/jammy/arm64v8/Dockerfile.verified.noextension new file mode 100644 index 0000000000..f2b661d372 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/jammy/arm64v8/Dockerfile.verified.noextension @@ -0,0 +1,23 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime + +# Installer image +FROM arm64v8/buildpack-deps:jammy-curl AS installer + +ARG ACCESSTOKEN + +# Retrieve ASP.NET Core +RUN aspnetcore_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output aspnetcore.tar.gz "https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-arm64.tar.gz" \ + && aspnetcore_sha512='{sha512_placeholder}' \ + && echo "$aspnetcore_sha512 aspnetcore.tar.gz" | sha512sum -c - \ + && tar -oxzf aspnetcore.tar.gz ./shared/Microsoft.AspNetCore.App \ + && rm aspnetcore.tar.gz + + +# ASP.NET Core image +FROM $REPO:0.0.0-jammy-arm64v8 + +# ASP.NET Core version +ENV ASPNET_VERSION=0.0.0 + +COPY --from=installer ["/shared/Microsoft.AspNetCore.App", "/usr/share/dotnet/shared/Microsoft.AspNetCore.App"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/nanoserver-1809/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/nanoserver-1809/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..d57c5db4fd --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/nanoserver-1809/amd64/Dockerfile.verified.noextension @@ -0,0 +1,38 @@ +# escape=` + +ARG REPO=mcr.microsoft.com/dotnet/runtime + +# Installer image +FROM mcr.microsoft.com/windows/servercore:1809-amd64 AS installer + +ARG ACCESSTOKEN + +# Install ASP.NET Core Runtime +RUN powershell -Command ` + $ErrorActionPreference = 'Stop'; ` + $ProgressPreference = 'SilentlyContinue'; ` + ` + $aspnetcore_version = '0.0.0'; ` + ` + $Base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(\":$($Env:ACCESSTOKEN)\")); ` + $Headers = @{Authorization = \"Basic $Base64AuthInfo\"}; ` + Invoke-WebRequest -OutFile aspnetcore.zip \"https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-win-x64.zip\" -Headers $Headers; ` + ` + $aspnetcore_sha512 = '{sha512_placeholder}'; ` + if ((Get-FileHash aspnetcore.zip -Algorithm sha512).Hash -ne $aspnetcore_sha512) { ` + Write-Host 'CHECKSUM VERIFICATION FAILED!'; ` + exit 1; ` + }; ` + ` + mkdir dotnet/shared/Microsoft.AspNetCore.App; ` + tar -oxzf aspnetcore.zip -C dotnet ./shared/Microsoft.AspNetCore.App; ` + Remove-Item -Force aspnetcore.zip + + +# ASP.NET Core image +FROM $REPO:0.0.0-nanoserver-1809 + +# ASP.NET Core version +ENV ASPNET_VERSION=0.0.0 + +COPY --from=installer ["/dotnet/shared/Microsoft.AspNetCore.App", "/Program Files/dotnet/shared/Microsoft.AspNetCore.App"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/nanoserver-ltsc2022/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/nanoserver-ltsc2022/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..0102a24532 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/nanoserver-ltsc2022/amd64/Dockerfile.verified.noextension @@ -0,0 +1,38 @@ +# escape=` + +ARG REPO=mcr.microsoft.com/dotnet/runtime + +# Installer image +FROM mcr.microsoft.com/windows/servercore:ltsc2022-amd64 AS installer + +ARG ACCESSTOKEN + +# Install ASP.NET Core Runtime +RUN powershell -Command ` + $ErrorActionPreference = 'Stop'; ` + $ProgressPreference = 'SilentlyContinue'; ` + ` + $aspnetcore_version = '0.0.0'; ` + ` + $Base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(\":$($Env:ACCESSTOKEN)\")); ` + $Headers = @{Authorization = \"Basic $Base64AuthInfo\"}; ` + Invoke-WebRequest -OutFile aspnetcore.zip \"https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-win-x64.zip\" -Headers $Headers; ` + ` + $aspnetcore_sha512 = '{sha512_placeholder}'; ` + if ((Get-FileHash aspnetcore.zip -Algorithm sha512).Hash -ne $aspnetcore_sha512) { ` + Write-Host 'CHECKSUM VERIFICATION FAILED!'; ` + exit 1; ` + }; ` + ` + mkdir dotnet/shared/Microsoft.AspNetCore.App; ` + tar -oxzf aspnetcore.zip -C dotnet ./shared/Microsoft.AspNetCore.App; ` + Remove-Item -Force aspnetcore.zip + + +# ASP.NET Core image +FROM $REPO:0.0.0-nanoserver-ltsc2022 + +# ASP.NET Core version +ENV ASPNET_VERSION=0.0.0 + +COPY --from=installer ["/dotnet/shared/Microsoft.AspNetCore.App", "/Program Files/dotnet/shared/Microsoft.AspNetCore.App"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/nanoserver-ltsc2025/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/nanoserver-ltsc2025/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..2498539409 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/nanoserver-ltsc2025/amd64/Dockerfile.verified.noextension @@ -0,0 +1,38 @@ +# escape=` + +ARG REPO=mcr.microsoft.com/dotnet/runtime + +# Installer image +FROM mcr.microsoft.com/windows/servercore:ltsc2025-amd64 AS installer + +ARG ACCESSTOKEN + +# Install ASP.NET Core Runtime +RUN powershell -Command ` + $ErrorActionPreference = 'Stop'; ` + $ProgressPreference = 'SilentlyContinue'; ` + ` + $aspnetcore_version = '0.0.0'; ` + ` + $Base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(\":$($Env:ACCESSTOKEN)\")); ` + $Headers = @{Authorization = \"Basic $Base64AuthInfo\"}; ` + Invoke-WebRequest -OutFile aspnetcore.zip \"https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-win-x64.zip\" -Headers $Headers; ` + ` + $aspnetcore_sha512 = '{sha512_placeholder}'; ` + if ((Get-FileHash aspnetcore.zip -Algorithm sha512).Hash -ne $aspnetcore_sha512) { ` + Write-Host 'CHECKSUM VERIFICATION FAILED!'; ` + exit 1; ` + }; ` + ` + mkdir dotnet/shared/Microsoft.AspNetCore.App; ` + tar -oxzf aspnetcore.zip -C dotnet ./shared/Microsoft.AspNetCore.App; ` + Remove-Item -Force aspnetcore.zip + + +# ASP.NET Core image +FROM $REPO:0.0.0-nanoserver-ltsc2025 + +# ASP.NET Core version +ENV ASPNET_VERSION=0.0.0 + +COPY --from=installer ["/dotnet/shared/Microsoft.AspNetCore.App", "/Program Files/dotnet/shared/Microsoft.AspNetCore.App"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/noble-chiseled-composite-extra/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/noble-chiseled-composite-extra/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..969083ea69 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/noble-chiseled-composite-extra/amd64/Dockerfile.verified.noextension @@ -0,0 +1,34 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime-deps + +# Installer image +FROM amd64/buildpack-deps:noble-curl AS installer + +ARG ACCESSTOKEN + +# Retrieve ASP.NET Composite Runtime +RUN aspnetcore_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output dotnet.tar.gz "https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-composite-$aspnetcore_version-linux-x64.tar.gz" \ + && dotnet_sha512='{sha512_placeholder}' \ + && echo "$dotnet_sha512 dotnet.tar.gz" | sha512sum -c - \ + && mkdir -p /usr/share/dotnet \ + && tar -oxzf dotnet.tar.gz -C /usr/share/dotnet \ + && rm dotnet.tar.gz + +RUN mkdir /dotnet-symlink \ + && ln -s /usr/share/dotnet/dotnet /dotnet-symlink/dotnet + + +# ASP.NET Composite Image +FROM $REPO:0.0.0-noble-chiseled-extra-amd64 + +ENV \ + # .NET Runtime version + DOTNET_VERSION=0.0.0 \ + # ASP.NET Core version + ASPNET_VERSION=0.0.0 + +COPY --from=installer ["/usr/share/dotnet", "/usr/share/dotnet"] +COPY --from=installer ["/dotnet-symlink", "/usr/bin"] + +ENTRYPOINT ["/usr/bin/dotnet"] +CMD ["--info"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/noble-chiseled-composite-extra/arm64v8/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/noble-chiseled-composite-extra/arm64v8/Dockerfile.verified.noextension new file mode 100644 index 0000000000..338d0a1b95 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/noble-chiseled-composite-extra/arm64v8/Dockerfile.verified.noextension @@ -0,0 +1,34 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime-deps + +# Installer image +FROM arm64v8/buildpack-deps:noble-curl AS installer + +ARG ACCESSTOKEN + +# Retrieve ASP.NET Composite Runtime +RUN aspnetcore_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output dotnet.tar.gz "https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-composite-$aspnetcore_version-linux-arm64.tar.gz" \ + && dotnet_sha512='{sha512_placeholder}' \ + && echo "$dotnet_sha512 dotnet.tar.gz" | sha512sum -c - \ + && mkdir -p /usr/share/dotnet \ + && tar -oxzf dotnet.tar.gz -C /usr/share/dotnet \ + && rm dotnet.tar.gz + +RUN mkdir /dotnet-symlink \ + && ln -s /usr/share/dotnet/dotnet /dotnet-symlink/dotnet + + +# ASP.NET Composite Image +FROM $REPO:0.0.0-noble-chiseled-extra-arm64v8 + +ENV \ + # .NET Runtime version + DOTNET_VERSION=0.0.0 \ + # ASP.NET Core version + ASPNET_VERSION=0.0.0 + +COPY --from=installer ["/usr/share/dotnet", "/usr/share/dotnet"] +COPY --from=installer ["/dotnet-symlink", "/usr/bin"] + +ENTRYPOINT ["/usr/bin/dotnet"] +CMD ["--info"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/noble-chiseled-composite/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/noble-chiseled-composite/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..d6d78d145f --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/noble-chiseled-composite/amd64/Dockerfile.verified.noextension @@ -0,0 +1,34 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime-deps + +# Installer image +FROM amd64/buildpack-deps:noble-curl AS installer + +ARG ACCESSTOKEN + +# Retrieve ASP.NET Composite Runtime +RUN aspnetcore_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output dotnet.tar.gz "https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-composite-$aspnetcore_version-linux-x64.tar.gz" \ + && dotnet_sha512='{sha512_placeholder}' \ + && echo "$dotnet_sha512 dotnet.tar.gz" | sha512sum -c - \ + && mkdir -p /usr/share/dotnet \ + && tar -oxzf dotnet.tar.gz -C /usr/share/dotnet \ + && rm dotnet.tar.gz + +RUN mkdir /dotnet-symlink \ + && ln -s /usr/share/dotnet/dotnet /dotnet-symlink/dotnet + + +# ASP.NET Composite Image +FROM $REPO:0.0.0-noble-chiseled-amd64 + +ENV \ + # .NET Runtime version + DOTNET_VERSION=0.0.0 \ + # ASP.NET Core version + ASPNET_VERSION=0.0.0 + +COPY --from=installer ["/usr/share/dotnet", "/usr/share/dotnet"] +COPY --from=installer ["/dotnet-symlink", "/usr/bin"] + +ENTRYPOINT ["/usr/bin/dotnet"] +CMD ["--info"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/noble-chiseled-composite/arm64v8/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/noble-chiseled-composite/arm64v8/Dockerfile.verified.noextension new file mode 100644 index 0000000000..152413d76f --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/noble-chiseled-composite/arm64v8/Dockerfile.verified.noextension @@ -0,0 +1,34 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime-deps + +# Installer image +FROM arm64v8/buildpack-deps:noble-curl AS installer + +ARG ACCESSTOKEN + +# Retrieve ASP.NET Composite Runtime +RUN aspnetcore_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output dotnet.tar.gz "https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-composite-$aspnetcore_version-linux-arm64.tar.gz" \ + && dotnet_sha512='{sha512_placeholder}' \ + && echo "$dotnet_sha512 dotnet.tar.gz" | sha512sum -c - \ + && mkdir -p /usr/share/dotnet \ + && tar -oxzf dotnet.tar.gz -C /usr/share/dotnet \ + && rm dotnet.tar.gz + +RUN mkdir /dotnet-symlink \ + && ln -s /usr/share/dotnet/dotnet /dotnet-symlink/dotnet + + +# ASP.NET Composite Image +FROM $REPO:0.0.0-noble-chiseled-arm64v8 + +ENV \ + # .NET Runtime version + DOTNET_VERSION=0.0.0 \ + # ASP.NET Core version + ASPNET_VERSION=0.0.0 + +COPY --from=installer ["/usr/share/dotnet", "/usr/share/dotnet"] +COPY --from=installer ["/dotnet-symlink", "/usr/bin"] + +ENTRYPOINT ["/usr/bin/dotnet"] +CMD ["--info"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/noble-chiseled-extra/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/noble-chiseled-extra/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..fb71a00daf --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/noble-chiseled-extra/amd64/Dockerfile.verified.noextension @@ -0,0 +1,24 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime + +# Installer image +FROM amd64/buildpack-deps:noble-curl AS installer + +ARG ACCESSTOKEN + +# Retrieve ASP.NET Core +RUN aspnetcore_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output aspnetcore.tar.gz "https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-x64.tar.gz" \ + && aspnetcore_sha512='{sha512_placeholder}' \ + && echo "$aspnetcore_sha512 aspnetcore.tar.gz" | sha512sum -c - \ + && mkdir -p /dotnet \ + && tar -oxzf aspnetcore.tar.gz -C /dotnet ./shared/Microsoft.AspNetCore.App \ + && rm aspnetcore.tar.gz + + +# ASP.NET Core image +FROM $REPO:0.0.0-noble-chiseled-extra-amd64 + +# ASP.NET Core version +ENV ASPNET_VERSION=0.0.0 + +COPY --from=installer ["/dotnet", "/usr/share/dotnet"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/noble-chiseled-extra/arm64v8/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/noble-chiseled-extra/arm64v8/Dockerfile.verified.noextension new file mode 100644 index 0000000000..69a007f8a1 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/noble-chiseled-extra/arm64v8/Dockerfile.verified.noextension @@ -0,0 +1,24 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime + +# Installer image +FROM arm64v8/buildpack-deps:noble-curl AS installer + +ARG ACCESSTOKEN + +# Retrieve ASP.NET Core +RUN aspnetcore_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output aspnetcore.tar.gz "https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-arm64.tar.gz" \ + && aspnetcore_sha512='{sha512_placeholder}' \ + && echo "$aspnetcore_sha512 aspnetcore.tar.gz" | sha512sum -c - \ + && mkdir -p /dotnet \ + && tar -oxzf aspnetcore.tar.gz -C /dotnet ./shared/Microsoft.AspNetCore.App \ + && rm aspnetcore.tar.gz + + +# ASP.NET Core image +FROM $REPO:0.0.0-noble-chiseled-extra-arm64v8 + +# ASP.NET Core version +ENV ASPNET_VERSION=0.0.0 + +COPY --from=installer ["/dotnet", "/usr/share/dotnet"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/noble-chiseled/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/noble-chiseled/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..a1d98bb1b5 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/noble-chiseled/amd64/Dockerfile.verified.noextension @@ -0,0 +1,24 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime + +# Installer image +FROM amd64/buildpack-deps:noble-curl AS installer + +ARG ACCESSTOKEN + +# Retrieve ASP.NET Core +RUN aspnetcore_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output aspnetcore.tar.gz "https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-x64.tar.gz" \ + && aspnetcore_sha512='{sha512_placeholder}' \ + && echo "$aspnetcore_sha512 aspnetcore.tar.gz" | sha512sum -c - \ + && mkdir -p /dotnet \ + && tar -oxzf aspnetcore.tar.gz -C /dotnet ./shared/Microsoft.AspNetCore.App \ + && rm aspnetcore.tar.gz + + +# ASP.NET Core image +FROM $REPO:0.0.0-noble-chiseled-amd64 + +# ASP.NET Core version +ENV ASPNET_VERSION=0.0.0 + +COPY --from=installer ["/dotnet", "/usr/share/dotnet"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/noble-chiseled/arm64v8/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/noble-chiseled/arm64v8/Dockerfile.verified.noextension new file mode 100644 index 0000000000..14de976a36 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/noble-chiseled/arm64v8/Dockerfile.verified.noextension @@ -0,0 +1,24 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime + +# Installer image +FROM arm64v8/buildpack-deps:noble-curl AS installer + +ARG ACCESSTOKEN + +# Retrieve ASP.NET Core +RUN aspnetcore_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output aspnetcore.tar.gz "https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-arm64.tar.gz" \ + && aspnetcore_sha512='{sha512_placeholder}' \ + && echo "$aspnetcore_sha512 aspnetcore.tar.gz" | sha512sum -c - \ + && mkdir -p /dotnet \ + && tar -oxzf aspnetcore.tar.gz -C /dotnet ./shared/Microsoft.AspNetCore.App \ + && rm aspnetcore.tar.gz + + +# ASP.NET Core image +FROM $REPO:0.0.0-noble-chiseled-arm64v8 + +# ASP.NET Core version +ENV ASPNET_VERSION=0.0.0 + +COPY --from=installer ["/dotnet", "/usr/share/dotnet"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/noble/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/noble/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..f9512e57e1 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/noble/amd64/Dockerfile.verified.noextension @@ -0,0 +1,23 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime + +# Installer image +FROM amd64/buildpack-deps:noble-curl AS installer + +ARG ACCESSTOKEN + +# Retrieve ASP.NET Core +RUN aspnetcore_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output aspnetcore.tar.gz "https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-x64.tar.gz" \ + && aspnetcore_sha512='{sha512_placeholder}' \ + && echo "$aspnetcore_sha512 aspnetcore.tar.gz" | sha512sum -c - \ + && tar -oxzf aspnetcore.tar.gz ./shared/Microsoft.AspNetCore.App \ + && rm aspnetcore.tar.gz + + +# ASP.NET Core image +FROM $REPO:0.0.0-noble-amd64 + +# ASP.NET Core version +ENV ASPNET_VERSION=0.0.0 + +COPY --from=installer ["/shared/Microsoft.AspNetCore.App", "/usr/share/dotnet/shared/Microsoft.AspNetCore.App"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/noble/arm64v8/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/noble/arm64v8/Dockerfile.verified.noextension new file mode 100644 index 0000000000..32c1ae9132 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/noble/arm64v8/Dockerfile.verified.noextension @@ -0,0 +1,23 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime + +# Installer image +FROM arm64v8/buildpack-deps:noble-curl AS installer + +ARG ACCESSTOKEN + +# Retrieve ASP.NET Core +RUN aspnetcore_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output aspnetcore.tar.gz "https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-arm64.tar.gz" \ + && aspnetcore_sha512='{sha512_placeholder}' \ + && echo "$aspnetcore_sha512 aspnetcore.tar.gz" | sha512sum -c - \ + && tar -oxzf aspnetcore.tar.gz ./shared/Microsoft.AspNetCore.App \ + && rm aspnetcore.tar.gz + + +# ASP.NET Core image +FROM $REPO:0.0.0-noble-arm64v8 + +# ASP.NET Core version +ENV ASPNET_VERSION=0.0.0 + +COPY --from=installer ["/shared/Microsoft.AspNetCore.App", "/usr/share/dotnet/shared/Microsoft.AspNetCore.App"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/windowsservercore-ltsc2019/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/windowsservercore-ltsc2019/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..da6268fe32 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/windowsservercore-ltsc2019/amd64/Dockerfile.verified.noextension @@ -0,0 +1,38 @@ +# escape=` + +ARG REPO=mcr.microsoft.com/dotnet/runtime + +# Installer image +FROM mcr.microsoft.com/windows/servercore:ltsc2019-amd64 AS installer + +ARG ACCESSTOKEN + +# Install ASP.NET Core Runtime +RUN powershell -Command ` + $ErrorActionPreference = 'Stop'; ` + $ProgressPreference = 'SilentlyContinue'; ` + ` + $aspnetcore_version = '0.0.0'; ` + ` + $Base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(\":$($Env:ACCESSTOKEN)\")); ` + $Headers = @{Authorization = \"Basic $Base64AuthInfo\"}; ` + Invoke-WebRequest -OutFile aspnetcore.zip \"https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-win-x64.zip\" -Headers $Headers; ` + ` + $aspnetcore_sha512 = '{sha512_placeholder}'; ` + if ((Get-FileHash aspnetcore.zip -Algorithm sha512).Hash -ne $aspnetcore_sha512) { ` + Write-Host 'CHECKSUM VERIFICATION FAILED!'; ` + exit 1; ` + }; ` + ` + mkdir dotnet/shared/Microsoft.AspNetCore.App; ` + tar -oxzf aspnetcore.zip -C dotnet ./shared/Microsoft.AspNetCore.App; ` + Remove-Item -Force aspnetcore.zip + + +# ASP.NET Core image +FROM $REPO:0.0.0-windowsservercore-ltsc2019 + +# ASP.NET Core version +ENV ASPNET_VERSION=0.0.0 + +COPY --from=installer ["/dotnet/shared/Microsoft.AspNetCore.App", "/Program Files/dotnet/shared/Microsoft.AspNetCore.App"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/windowsservercore-ltsc2022/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/windowsservercore-ltsc2022/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..6326069e59 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/windowsservercore-ltsc2022/amd64/Dockerfile.verified.noextension @@ -0,0 +1,38 @@ +# escape=` + +ARG REPO=mcr.microsoft.com/dotnet/runtime + +# Installer image +FROM mcr.microsoft.com/windows/servercore:ltsc2022-amd64 AS installer + +ARG ACCESSTOKEN + +# Install ASP.NET Core Runtime +RUN powershell -Command ` + $ErrorActionPreference = 'Stop'; ` + $ProgressPreference = 'SilentlyContinue'; ` + ` + $aspnetcore_version = '0.0.0'; ` + ` + $Base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(\":$($Env:ACCESSTOKEN)\")); ` + $Headers = @{Authorization = \"Basic $Base64AuthInfo\"}; ` + Invoke-WebRequest -OutFile aspnetcore.zip \"https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-win-x64.zip\" -Headers $Headers; ` + ` + $aspnetcore_sha512 = '{sha512_placeholder}'; ` + if ((Get-FileHash aspnetcore.zip -Algorithm sha512).Hash -ne $aspnetcore_sha512) { ` + Write-Host 'CHECKSUM VERIFICATION FAILED!'; ` + exit 1; ` + }; ` + ` + mkdir dotnet/shared/Microsoft.AspNetCore.App; ` + tar -oxzf aspnetcore.zip -C dotnet ./shared/Microsoft.AspNetCore.App; ` + Remove-Item -Force aspnetcore.zip + + +# ASP.NET Core image +FROM $REPO:0.0.0-windowsservercore-ltsc2022 + +# ASP.NET Core version +ENV ASPNET_VERSION=0.0.0 + +COPY --from=installer ["/dotnet/shared/Microsoft.AspNetCore.App", "/Program Files/dotnet/shared/Microsoft.AspNetCore.App"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/windowsservercore-ltsc2025/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/windowsservercore-ltsc2025/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..c5521636ab --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/8.0/windowsservercore-ltsc2025/amd64/Dockerfile.verified.noextension @@ -0,0 +1,38 @@ +# escape=` + +ARG REPO=mcr.microsoft.com/dotnet/runtime + +# Installer image +FROM mcr.microsoft.com/windows/servercore:ltsc2025-amd64 AS installer + +ARG ACCESSTOKEN + +# Install ASP.NET Core Runtime +RUN powershell -Command ` + $ErrorActionPreference = 'Stop'; ` + $ProgressPreference = 'SilentlyContinue'; ` + ` + $aspnetcore_version = '0.0.0'; ` + ` + $Base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(\":$($Env:ACCESSTOKEN)\")); ` + $Headers = @{Authorization = \"Basic $Base64AuthInfo\"}; ` + Invoke-WebRequest -OutFile aspnetcore.zip \"https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-win-x64.zip\" -Headers $Headers; ` + ` + $aspnetcore_sha512 = '{sha512_placeholder}'; ` + if ((Get-FileHash aspnetcore.zip -Algorithm sha512).Hash -ne $aspnetcore_sha512) { ` + Write-Host 'CHECKSUM VERIFICATION FAILED!'; ` + exit 1; ` + }; ` + ` + mkdir dotnet/shared/Microsoft.AspNetCore.App; ` + tar -oxzf aspnetcore.zip -C dotnet ./shared/Microsoft.AspNetCore.App; ` + Remove-Item -Force aspnetcore.zip + + +# ASP.NET Core image +FROM $REPO:0.0.0-windowsservercore-ltsc2025 + +# ASP.NET Core version +ENV ASPNET_VERSION=0.0.0 + +COPY --from=installer ["/dotnet/shared/Microsoft.AspNetCore.App", "/Program Files/dotnet/shared/Microsoft.AspNetCore.App"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/alpine3.20-composite/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/alpine3.20-composite/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..b13facf4ff --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/alpine3.20-composite/amd64/Dockerfile.verified.noextension @@ -0,0 +1,28 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime-deps + +# Installer image +FROM $REPO:0.0.0-alpine3.XX-amd64 AS installer + +ARG ACCESSTOKEN + +# Retrieve ASP.NET Composite Runtime +RUN aspnetcore_version=0.0.0 \ + && wget --header="Authorization: Basic `echo $ACCESSTOKEN:$ACCESSTOKEN | base64 -w 0`" -O dotnet.tar.gz "https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-composite-$aspnetcore_version-linux-musl-x64.tar.gz" \ + && dotnet_sha512='{sha512_placeholder}' \ + && echo "$dotnet_sha512 dotnet.tar.gz" | sha512sum -c - \ + && mkdir -p /dotnet \ + && tar -oxzf dotnet.tar.gz -C /dotnet \ + && rm dotnet.tar.gz + + +# ASP.NET Composite Image +FROM $REPO:0.0.0-alpine3.XX-amd64 + +ENV \ + # .NET Runtime version + DOTNET_VERSION=0.0.0 \ + # ASP.NET Core version + ASPNET_VERSION=0.0.0 + +COPY --from=installer ["/dotnet", "/usr/share/dotnet"] +RUN ln -s /usr/share/dotnet/dotnet /usr/bin/dotnet diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/alpine3.20-composite/arm32v7/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/alpine3.20-composite/arm32v7/Dockerfile.verified.noextension new file mode 100644 index 0000000000..85b613e224 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/alpine3.20-composite/arm32v7/Dockerfile.verified.noextension @@ -0,0 +1,28 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime-deps + +# Installer image +FROM $REPO:0.0.0-alpine3.XX-arm32v7 AS installer + +ARG ACCESSTOKEN + +# Retrieve ASP.NET Composite Runtime +RUN aspnetcore_version=0.0.0 \ + && wget --header="Authorization: Basic `echo $ACCESSTOKEN:$ACCESSTOKEN | base64 -w 0`" -O dotnet.tar.gz "https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-composite-$aspnetcore_version-linux-musl-arm.tar.gz" \ + && dotnet_sha512='{sha512_placeholder}' \ + && echo "$dotnet_sha512 dotnet.tar.gz" | sha512sum -c - \ + && mkdir -p /dotnet \ + && tar -oxzf dotnet.tar.gz -C /dotnet \ + && rm dotnet.tar.gz + + +# ASP.NET Composite Image +FROM $REPO:0.0.0-alpine3.XX-arm32v7 + +ENV \ + # .NET Runtime version + DOTNET_VERSION=0.0.0 \ + # ASP.NET Core version + ASPNET_VERSION=0.0.0 + +COPY --from=installer ["/dotnet", "/usr/share/dotnet"] +RUN ln -s /usr/share/dotnet/dotnet /usr/bin/dotnet diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/alpine3.20-composite/arm64v8/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/alpine3.20-composite/arm64v8/Dockerfile.verified.noextension new file mode 100644 index 0000000000..e380a7238a --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/alpine3.20-composite/arm64v8/Dockerfile.verified.noextension @@ -0,0 +1,28 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime-deps + +# Installer image +FROM $REPO:0.0.0-alpine3.XX-arm64v8 AS installer + +ARG ACCESSTOKEN + +# Retrieve ASP.NET Composite Runtime +RUN aspnetcore_version=0.0.0 \ + && wget --header="Authorization: Basic `echo $ACCESSTOKEN:$ACCESSTOKEN | base64 -w 0`" -O dotnet.tar.gz "https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-composite-$aspnetcore_version-linux-musl-arm64.tar.gz" \ + && dotnet_sha512='{sha512_placeholder}' \ + && echo "$dotnet_sha512 dotnet.tar.gz" | sha512sum -c - \ + && mkdir -p /dotnet \ + && tar -oxzf dotnet.tar.gz -C /dotnet \ + && rm dotnet.tar.gz + + +# ASP.NET Composite Image +FROM $REPO:0.0.0-alpine3.XX-arm64v8 + +ENV \ + # .NET Runtime version + DOTNET_VERSION=0.0.0 \ + # ASP.NET Core version + ASPNET_VERSION=0.0.0 + +COPY --from=installer ["/dotnet", "/usr/share/dotnet"] +RUN ln -s /usr/share/dotnet/dotnet /usr/bin/dotnet diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/alpine3.20/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/alpine3.20/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..2df648204c --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/alpine3.20/amd64/Dockerfile.verified.noextension @@ -0,0 +1,23 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime + +# Installer image +FROM $REPO:0.0.0-alpine3.XX-amd64 AS installer + +ARG ACCESSTOKEN + +# Retrieve ASP.NET Core +RUN aspnetcore_version=0.0.0 \ + && wget --header="Authorization: Basic `echo $ACCESSTOKEN:$ACCESSTOKEN | base64 -w 0`" -O aspnetcore.tar.gz "https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-musl-x64.tar.gz" \ + && aspnetcore_sha512='{sha512_placeholder}' \ + && echo "$aspnetcore_sha512 aspnetcore.tar.gz" | sha512sum -c - \ + && tar -oxzf aspnetcore.tar.gz ./shared/Microsoft.AspNetCore.App \ + && rm aspnetcore.tar.gz + + +# ASP.NET Core image +FROM $REPO:0.0.0-alpine3.XX-amd64 + +# ASP.NET Core version +ENV ASPNET_VERSION=0.0.0 + +COPY --from=installer ["/shared/Microsoft.AspNetCore.App", "/usr/share/dotnet/shared/Microsoft.AspNetCore.App"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/alpine3.20/arm32v7/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/alpine3.20/arm32v7/Dockerfile.verified.noextension new file mode 100644 index 0000000000..4fdc858e79 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/alpine3.20/arm32v7/Dockerfile.verified.noextension @@ -0,0 +1,23 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime + +# Installer image +FROM $REPO:0.0.0-alpine3.XX-arm32v7 AS installer + +ARG ACCESSTOKEN + +# Retrieve ASP.NET Core +RUN aspnetcore_version=0.0.0 \ + && wget --header="Authorization: Basic `echo $ACCESSTOKEN:$ACCESSTOKEN | base64 -w 0`" -O aspnetcore.tar.gz "https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-musl-arm.tar.gz" \ + && aspnetcore_sha512='{sha512_placeholder}' \ + && echo "$aspnetcore_sha512 aspnetcore.tar.gz" | sha512sum -c - \ + && tar -oxzf aspnetcore.tar.gz ./shared/Microsoft.AspNetCore.App \ + && rm aspnetcore.tar.gz + + +# ASP.NET Core image +FROM $REPO:0.0.0-alpine3.XX-arm32v7 + +# ASP.NET Core version +ENV ASPNET_VERSION=0.0.0 + +COPY --from=installer ["/shared/Microsoft.AspNetCore.App", "/usr/share/dotnet/shared/Microsoft.AspNetCore.App"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/alpine3.20/arm64v8/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/alpine3.20/arm64v8/Dockerfile.verified.noextension new file mode 100644 index 0000000000..4da6c28a8d --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/alpine3.20/arm64v8/Dockerfile.verified.noextension @@ -0,0 +1,23 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime + +# Installer image +FROM $REPO:0.0.0-alpine3.XX-arm64v8 AS installer + +ARG ACCESSTOKEN + +# Retrieve ASP.NET Core +RUN aspnetcore_version=0.0.0 \ + && wget --header="Authorization: Basic `echo $ACCESSTOKEN:$ACCESSTOKEN | base64 -w 0`" -O aspnetcore.tar.gz "https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-musl-arm64.tar.gz" \ + && aspnetcore_sha512='{sha512_placeholder}' \ + && echo "$aspnetcore_sha512 aspnetcore.tar.gz" | sha512sum -c - \ + && tar -oxzf aspnetcore.tar.gz ./shared/Microsoft.AspNetCore.App \ + && rm aspnetcore.tar.gz + + +# ASP.NET Core image +FROM $REPO:0.0.0-alpine3.XX-arm64v8 + +# ASP.NET Core version +ENV ASPNET_VERSION=0.0.0 + +COPY --from=installer ["/shared/Microsoft.AspNetCore.App", "/usr/share/dotnet/shared/Microsoft.AspNetCore.App"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/alpine3.21-composite/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/alpine3.21-composite/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..b13facf4ff --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/alpine3.21-composite/amd64/Dockerfile.verified.noextension @@ -0,0 +1,28 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime-deps + +# Installer image +FROM $REPO:0.0.0-alpine3.XX-amd64 AS installer + +ARG ACCESSTOKEN + +# Retrieve ASP.NET Composite Runtime +RUN aspnetcore_version=0.0.0 \ + && wget --header="Authorization: Basic `echo $ACCESSTOKEN:$ACCESSTOKEN | base64 -w 0`" -O dotnet.tar.gz "https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-composite-$aspnetcore_version-linux-musl-x64.tar.gz" \ + && dotnet_sha512='{sha512_placeholder}' \ + && echo "$dotnet_sha512 dotnet.tar.gz" | sha512sum -c - \ + && mkdir -p /dotnet \ + && tar -oxzf dotnet.tar.gz -C /dotnet \ + && rm dotnet.tar.gz + + +# ASP.NET Composite Image +FROM $REPO:0.0.0-alpine3.XX-amd64 + +ENV \ + # .NET Runtime version + DOTNET_VERSION=0.0.0 \ + # ASP.NET Core version + ASPNET_VERSION=0.0.0 + +COPY --from=installer ["/dotnet", "/usr/share/dotnet"] +RUN ln -s /usr/share/dotnet/dotnet /usr/bin/dotnet diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/alpine3.21-composite/arm32v7/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/alpine3.21-composite/arm32v7/Dockerfile.verified.noextension new file mode 100644 index 0000000000..85b613e224 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/alpine3.21-composite/arm32v7/Dockerfile.verified.noextension @@ -0,0 +1,28 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime-deps + +# Installer image +FROM $REPO:0.0.0-alpine3.XX-arm32v7 AS installer + +ARG ACCESSTOKEN + +# Retrieve ASP.NET Composite Runtime +RUN aspnetcore_version=0.0.0 \ + && wget --header="Authorization: Basic `echo $ACCESSTOKEN:$ACCESSTOKEN | base64 -w 0`" -O dotnet.tar.gz "https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-composite-$aspnetcore_version-linux-musl-arm.tar.gz" \ + && dotnet_sha512='{sha512_placeholder}' \ + && echo "$dotnet_sha512 dotnet.tar.gz" | sha512sum -c - \ + && mkdir -p /dotnet \ + && tar -oxzf dotnet.tar.gz -C /dotnet \ + && rm dotnet.tar.gz + + +# ASP.NET Composite Image +FROM $REPO:0.0.0-alpine3.XX-arm32v7 + +ENV \ + # .NET Runtime version + DOTNET_VERSION=0.0.0 \ + # ASP.NET Core version + ASPNET_VERSION=0.0.0 + +COPY --from=installer ["/dotnet", "/usr/share/dotnet"] +RUN ln -s /usr/share/dotnet/dotnet /usr/bin/dotnet diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/alpine3.21-composite/arm64v8/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/alpine3.21-composite/arm64v8/Dockerfile.verified.noextension new file mode 100644 index 0000000000..e380a7238a --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/alpine3.21-composite/arm64v8/Dockerfile.verified.noextension @@ -0,0 +1,28 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime-deps + +# Installer image +FROM $REPO:0.0.0-alpine3.XX-arm64v8 AS installer + +ARG ACCESSTOKEN + +# Retrieve ASP.NET Composite Runtime +RUN aspnetcore_version=0.0.0 \ + && wget --header="Authorization: Basic `echo $ACCESSTOKEN:$ACCESSTOKEN | base64 -w 0`" -O dotnet.tar.gz "https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-composite-$aspnetcore_version-linux-musl-arm64.tar.gz" \ + && dotnet_sha512='{sha512_placeholder}' \ + && echo "$dotnet_sha512 dotnet.tar.gz" | sha512sum -c - \ + && mkdir -p /dotnet \ + && tar -oxzf dotnet.tar.gz -C /dotnet \ + && rm dotnet.tar.gz + + +# ASP.NET Composite Image +FROM $REPO:0.0.0-alpine3.XX-arm64v8 + +ENV \ + # .NET Runtime version + DOTNET_VERSION=0.0.0 \ + # ASP.NET Core version + ASPNET_VERSION=0.0.0 + +COPY --from=installer ["/dotnet", "/usr/share/dotnet"] +RUN ln -s /usr/share/dotnet/dotnet /usr/bin/dotnet diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/alpine3.21/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/alpine3.21/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..2df648204c --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/alpine3.21/amd64/Dockerfile.verified.noextension @@ -0,0 +1,23 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime + +# Installer image +FROM $REPO:0.0.0-alpine3.XX-amd64 AS installer + +ARG ACCESSTOKEN + +# Retrieve ASP.NET Core +RUN aspnetcore_version=0.0.0 \ + && wget --header="Authorization: Basic `echo $ACCESSTOKEN:$ACCESSTOKEN | base64 -w 0`" -O aspnetcore.tar.gz "https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-musl-x64.tar.gz" \ + && aspnetcore_sha512='{sha512_placeholder}' \ + && echo "$aspnetcore_sha512 aspnetcore.tar.gz" | sha512sum -c - \ + && tar -oxzf aspnetcore.tar.gz ./shared/Microsoft.AspNetCore.App \ + && rm aspnetcore.tar.gz + + +# ASP.NET Core image +FROM $REPO:0.0.0-alpine3.XX-amd64 + +# ASP.NET Core version +ENV ASPNET_VERSION=0.0.0 + +COPY --from=installer ["/shared/Microsoft.AspNetCore.App", "/usr/share/dotnet/shared/Microsoft.AspNetCore.App"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/alpine3.21/arm32v7/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/alpine3.21/arm32v7/Dockerfile.verified.noextension new file mode 100644 index 0000000000..4fdc858e79 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/alpine3.21/arm32v7/Dockerfile.verified.noextension @@ -0,0 +1,23 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime + +# Installer image +FROM $REPO:0.0.0-alpine3.XX-arm32v7 AS installer + +ARG ACCESSTOKEN + +# Retrieve ASP.NET Core +RUN aspnetcore_version=0.0.0 \ + && wget --header="Authorization: Basic `echo $ACCESSTOKEN:$ACCESSTOKEN | base64 -w 0`" -O aspnetcore.tar.gz "https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-musl-arm.tar.gz" \ + && aspnetcore_sha512='{sha512_placeholder}' \ + && echo "$aspnetcore_sha512 aspnetcore.tar.gz" | sha512sum -c - \ + && tar -oxzf aspnetcore.tar.gz ./shared/Microsoft.AspNetCore.App \ + && rm aspnetcore.tar.gz + + +# ASP.NET Core image +FROM $REPO:0.0.0-alpine3.XX-arm32v7 + +# ASP.NET Core version +ENV ASPNET_VERSION=0.0.0 + +COPY --from=installer ["/shared/Microsoft.AspNetCore.App", "/usr/share/dotnet/shared/Microsoft.AspNetCore.App"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/alpine3.21/arm64v8/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/alpine3.21/arm64v8/Dockerfile.verified.noextension new file mode 100644 index 0000000000..4da6c28a8d --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/alpine3.21/arm64v8/Dockerfile.verified.noextension @@ -0,0 +1,23 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime + +# Installer image +FROM $REPO:0.0.0-alpine3.XX-arm64v8 AS installer + +ARG ACCESSTOKEN + +# Retrieve ASP.NET Core +RUN aspnetcore_version=0.0.0 \ + && wget --header="Authorization: Basic `echo $ACCESSTOKEN:$ACCESSTOKEN | base64 -w 0`" -O aspnetcore.tar.gz "https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-musl-arm64.tar.gz" \ + && aspnetcore_sha512='{sha512_placeholder}' \ + && echo "$aspnetcore_sha512 aspnetcore.tar.gz" | sha512sum -c - \ + && tar -oxzf aspnetcore.tar.gz ./shared/Microsoft.AspNetCore.App \ + && rm aspnetcore.tar.gz + + +# ASP.NET Core image +FROM $REPO:0.0.0-alpine3.XX-arm64v8 + +# ASP.NET Core version +ENV ASPNET_VERSION=0.0.0 + +COPY --from=installer ["/shared/Microsoft.AspNetCore.App", "/usr/share/dotnet/shared/Microsoft.AspNetCore.App"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/azurelinux3.0-distroless-composite-extra/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/azurelinux3.0-distroless-composite-extra/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..8441739e71 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/azurelinux3.0-distroless-composite-extra/amd64/Dockerfile.verified.noextension @@ -0,0 +1,40 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime-deps + +# Installer image +FROM mcr.microsoft.com/azurelinux/base/core:3.0 AS installer + +ARG ACCESSTOKEN + +RUN tdnf install -y \ + ca-certificates \ + gzip \ + tar \ + && tdnf clean all + +# Retrieve ASP.NET Composite Runtime +RUN aspnetcore_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output dotnet.tar.gz "https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-composite-$aspnetcore_version-linux-x64.tar.gz" \ + && dotnet_sha512='{sha512_placeholder}' \ + && echo "$dotnet_sha512 dotnet.tar.gz" | sha512sum -c - \ + && mkdir -p /usr/share/dotnet \ + && tar -oxzf dotnet.tar.gz -C /usr/share/dotnet \ + && rm dotnet.tar.gz + +RUN mkdir /dotnet-symlink \ + && ln -s /usr/share/dotnet/dotnet /dotnet-symlink/dotnet + + +# ASP.NET Composite Image +FROM $REPO:0.0.0-azurelinux3.0-distroless-extra-amd64 + +ENV \ + # .NET Runtime version + DOTNET_VERSION=0.0.0 \ + # ASP.NET Core version + ASPNET_VERSION=0.0.0 + +COPY --from=installer ["/usr/share/dotnet", "/usr/share/dotnet"] +COPY --from=installer ["/dotnet-symlink", "/usr/bin"] + +ENTRYPOINT ["/usr/bin/dotnet"] +CMD ["--info"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/azurelinux3.0-distroless-composite-extra/arm64v8/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/azurelinux3.0-distroless-composite-extra/arm64v8/Dockerfile.verified.noextension new file mode 100644 index 0000000000..57b6ebd595 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/azurelinux3.0-distroless-composite-extra/arm64v8/Dockerfile.verified.noextension @@ -0,0 +1,40 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime-deps + +# Installer image +FROM mcr.microsoft.com/azurelinux/base/core:3.0 AS installer + +ARG ACCESSTOKEN + +RUN tdnf install -y \ + ca-certificates \ + gzip \ + tar \ + && tdnf clean all + +# Retrieve ASP.NET Composite Runtime +RUN aspnetcore_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output dotnet.tar.gz "https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-composite-$aspnetcore_version-linux-arm64.tar.gz" \ + && dotnet_sha512='{sha512_placeholder}' \ + && echo "$dotnet_sha512 dotnet.tar.gz" | sha512sum -c - \ + && mkdir -p /usr/share/dotnet \ + && tar -oxzf dotnet.tar.gz -C /usr/share/dotnet \ + && rm dotnet.tar.gz + +RUN mkdir /dotnet-symlink \ + && ln -s /usr/share/dotnet/dotnet /dotnet-symlink/dotnet + + +# ASP.NET Composite Image +FROM $REPO:0.0.0-azurelinux3.0-distroless-extra-arm64v8 + +ENV \ + # .NET Runtime version + DOTNET_VERSION=0.0.0 \ + # ASP.NET Core version + ASPNET_VERSION=0.0.0 + +COPY --from=installer ["/usr/share/dotnet", "/usr/share/dotnet"] +COPY --from=installer ["/dotnet-symlink", "/usr/bin"] + +ENTRYPOINT ["/usr/bin/dotnet"] +CMD ["--info"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/azurelinux3.0-distroless-composite/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/azurelinux3.0-distroless-composite/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..aa14f9bfe5 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/azurelinux3.0-distroless-composite/amd64/Dockerfile.verified.noextension @@ -0,0 +1,40 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime-deps + +# Installer image +FROM mcr.microsoft.com/azurelinux/base/core:3.0 AS installer + +ARG ACCESSTOKEN + +RUN tdnf install -y \ + ca-certificates \ + gzip \ + tar \ + && tdnf clean all + +# Retrieve ASP.NET Composite Runtime +RUN aspnetcore_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output dotnet.tar.gz "https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-composite-$aspnetcore_version-linux-x64.tar.gz" \ + && dotnet_sha512='{sha512_placeholder}' \ + && echo "$dotnet_sha512 dotnet.tar.gz" | sha512sum -c - \ + && mkdir -p /usr/share/dotnet \ + && tar -oxzf dotnet.tar.gz -C /usr/share/dotnet \ + && rm dotnet.tar.gz + +RUN mkdir /dotnet-symlink \ + && ln -s /usr/share/dotnet/dotnet /dotnet-symlink/dotnet + + +# ASP.NET Composite Image +FROM $REPO:0.0.0-azurelinux3.0-distroless-amd64 + +ENV \ + # .NET Runtime version + DOTNET_VERSION=0.0.0 \ + # ASP.NET Core version + ASPNET_VERSION=0.0.0 + +COPY --from=installer ["/usr/share/dotnet", "/usr/share/dotnet"] +COPY --from=installer ["/dotnet-symlink", "/usr/bin"] + +ENTRYPOINT ["/usr/bin/dotnet"] +CMD ["--info"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/azurelinux3.0-distroless-composite/arm64v8/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/azurelinux3.0-distroless-composite/arm64v8/Dockerfile.verified.noextension new file mode 100644 index 0000000000..4329cc5df5 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/azurelinux3.0-distroless-composite/arm64v8/Dockerfile.verified.noextension @@ -0,0 +1,40 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime-deps + +# Installer image +FROM mcr.microsoft.com/azurelinux/base/core:3.0 AS installer + +ARG ACCESSTOKEN + +RUN tdnf install -y \ + ca-certificates \ + gzip \ + tar \ + && tdnf clean all + +# Retrieve ASP.NET Composite Runtime +RUN aspnetcore_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output dotnet.tar.gz "https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-composite-$aspnetcore_version-linux-arm64.tar.gz" \ + && dotnet_sha512='{sha512_placeholder}' \ + && echo "$dotnet_sha512 dotnet.tar.gz" | sha512sum -c - \ + && mkdir -p /usr/share/dotnet \ + && tar -oxzf dotnet.tar.gz -C /usr/share/dotnet \ + && rm dotnet.tar.gz + +RUN mkdir /dotnet-symlink \ + && ln -s /usr/share/dotnet/dotnet /dotnet-symlink/dotnet + + +# ASP.NET Composite Image +FROM $REPO:0.0.0-azurelinux3.0-distroless-arm64v8 + +ENV \ + # .NET Runtime version + DOTNET_VERSION=0.0.0 \ + # ASP.NET Core version + ASPNET_VERSION=0.0.0 + +COPY --from=installer ["/usr/share/dotnet", "/usr/share/dotnet"] +COPY --from=installer ["/dotnet-symlink", "/usr/bin"] + +ENTRYPOINT ["/usr/bin/dotnet"] +CMD ["--info"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/azurelinux3.0-distroless-extra/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/azurelinux3.0-distroless-extra/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..b9e24512fd --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/azurelinux3.0-distroless-extra/amd64/Dockerfile.verified.noextension @@ -0,0 +1,30 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime + +# Installer image +FROM mcr.microsoft.com/azurelinux/base/core:3.0 AS installer + +ARG ACCESSTOKEN + +RUN tdnf install -y \ + ca-certificates \ + gzip \ + tar \ + && tdnf clean all + +# Retrieve ASP.NET Core +RUN aspnetcore_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output aspnetcore.tar.gz "https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-x64.tar.gz" \ + && aspnetcore_sha512='{sha512_placeholder}' \ + && echo "$aspnetcore_sha512 aspnetcore.tar.gz" | sha512sum -c - \ + && mkdir -p /dotnet \ + && tar -oxzf aspnetcore.tar.gz -C /dotnet ./shared/Microsoft.AspNetCore.App \ + && rm aspnetcore.tar.gz + + +# ASP.NET Core image +FROM $REPO:0.0.0-azurelinux3.0-distroless-extra-amd64 + +# ASP.NET Core version +ENV ASPNET_VERSION=0.0.0 + +COPY --from=installer ["/dotnet", "/usr/share/dotnet"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/azurelinux3.0-distroless-extra/arm64v8/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/azurelinux3.0-distroless-extra/arm64v8/Dockerfile.verified.noextension new file mode 100644 index 0000000000..01d6fe3706 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/azurelinux3.0-distroless-extra/arm64v8/Dockerfile.verified.noextension @@ -0,0 +1,30 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime + +# Installer image +FROM mcr.microsoft.com/azurelinux/base/core:3.0 AS installer + +ARG ACCESSTOKEN + +RUN tdnf install -y \ + ca-certificates \ + gzip \ + tar \ + && tdnf clean all + +# Retrieve ASP.NET Core +RUN aspnetcore_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output aspnetcore.tar.gz "https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-arm64.tar.gz" \ + && aspnetcore_sha512='{sha512_placeholder}' \ + && echo "$aspnetcore_sha512 aspnetcore.tar.gz" | sha512sum -c - \ + && mkdir -p /dotnet \ + && tar -oxzf aspnetcore.tar.gz -C /dotnet ./shared/Microsoft.AspNetCore.App \ + && rm aspnetcore.tar.gz + + +# ASP.NET Core image +FROM $REPO:0.0.0-azurelinux3.0-distroless-extra-arm64v8 + +# ASP.NET Core version +ENV ASPNET_VERSION=0.0.0 + +COPY --from=installer ["/dotnet", "/usr/share/dotnet"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/azurelinux3.0-distroless/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/azurelinux3.0-distroless/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..1ee172a6c0 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/azurelinux3.0-distroless/amd64/Dockerfile.verified.noextension @@ -0,0 +1,30 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime + +# Installer image +FROM mcr.microsoft.com/azurelinux/base/core:3.0 AS installer + +ARG ACCESSTOKEN + +RUN tdnf install -y \ + ca-certificates \ + gzip \ + tar \ + && tdnf clean all + +# Retrieve ASP.NET Core +RUN aspnetcore_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output aspnetcore.tar.gz "https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-x64.tar.gz" \ + && aspnetcore_sha512='{sha512_placeholder}' \ + && echo "$aspnetcore_sha512 aspnetcore.tar.gz" | sha512sum -c - \ + && mkdir -p /dotnet \ + && tar -oxzf aspnetcore.tar.gz -C /dotnet ./shared/Microsoft.AspNetCore.App \ + && rm aspnetcore.tar.gz + + +# ASP.NET Core image +FROM $REPO:0.0.0-azurelinux3.0-distroless-amd64 + +# ASP.NET Core version +ENV ASPNET_VERSION=0.0.0 + +COPY --from=installer ["/dotnet", "/usr/share/dotnet"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/azurelinux3.0-distroless/arm64v8/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/azurelinux3.0-distroless/arm64v8/Dockerfile.verified.noextension new file mode 100644 index 0000000000..b8a0c77c7a --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/azurelinux3.0-distroless/arm64v8/Dockerfile.verified.noextension @@ -0,0 +1,30 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime + +# Installer image +FROM mcr.microsoft.com/azurelinux/base/core:3.0 AS installer + +ARG ACCESSTOKEN + +RUN tdnf install -y \ + ca-certificates \ + gzip \ + tar \ + && tdnf clean all + +# Retrieve ASP.NET Core +RUN aspnetcore_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output aspnetcore.tar.gz "https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-arm64.tar.gz" \ + && aspnetcore_sha512='{sha512_placeholder}' \ + && echo "$aspnetcore_sha512 aspnetcore.tar.gz" | sha512sum -c - \ + && mkdir -p /dotnet \ + && tar -oxzf aspnetcore.tar.gz -C /dotnet ./shared/Microsoft.AspNetCore.App \ + && rm aspnetcore.tar.gz + + +# ASP.NET Core image +FROM $REPO:0.0.0-azurelinux3.0-distroless-arm64v8 + +# ASP.NET Core version +ENV ASPNET_VERSION=0.0.0 + +COPY --from=installer ["/dotnet", "/usr/share/dotnet"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/azurelinux3.0/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/azurelinux3.0/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..ee3ef5ccce --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/azurelinux3.0/amd64/Dockerfile.verified.noextension @@ -0,0 +1,27 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime + +# Installer image +FROM $REPO:0.0.0-azurelinux3.0-amd64 AS installer + +ARG ACCESSTOKEN + +RUN tdnf install -y \ + tar \ + && tdnf clean all + +# Retrieve ASP.NET Core +RUN aspnetcore_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output aspnetcore.tar.gz "https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-x64.tar.gz" \ + && aspnetcore_sha512='{sha512_placeholder}' \ + && echo "$aspnetcore_sha512 aspnetcore.tar.gz" | sha512sum -c - \ + && tar -oxzf aspnetcore.tar.gz ./shared/Microsoft.AspNetCore.App \ + && rm aspnetcore.tar.gz + + +# ASP.NET Core image +FROM $REPO:0.0.0-azurelinux3.0-amd64 + +# ASP.NET Core version +ENV ASPNET_VERSION=0.0.0 + +COPY --from=installer ["/shared/Microsoft.AspNetCore.App", "/usr/share/dotnet/shared/Microsoft.AspNetCore.App"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/azurelinux3.0/arm64v8/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/azurelinux3.0/arm64v8/Dockerfile.verified.noextension new file mode 100644 index 0000000000..7d5a6de8e8 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/azurelinux3.0/arm64v8/Dockerfile.verified.noextension @@ -0,0 +1,27 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime + +# Installer image +FROM $REPO:0.0.0-azurelinux3.0-arm64v8 AS installer + +ARG ACCESSTOKEN + +RUN tdnf install -y \ + tar \ + && tdnf clean all + +# Retrieve ASP.NET Core +RUN aspnetcore_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output aspnetcore.tar.gz "https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-arm64.tar.gz" \ + && aspnetcore_sha512='{sha512_placeholder}' \ + && echo "$aspnetcore_sha512 aspnetcore.tar.gz" | sha512sum -c - \ + && tar -oxzf aspnetcore.tar.gz ./shared/Microsoft.AspNetCore.App \ + && rm aspnetcore.tar.gz + + +# ASP.NET Core image +FROM $REPO:0.0.0-azurelinux3.0-arm64v8 + +# ASP.NET Core version +ENV ASPNET_VERSION=0.0.0 + +COPY --from=installer ["/shared/Microsoft.AspNetCore.App", "/usr/share/dotnet/shared/Microsoft.AspNetCore.App"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/bookworm-slim/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/bookworm-slim/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..38d561d1d9 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/bookworm-slim/amd64/Dockerfile.verified.noextension @@ -0,0 +1,23 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime + +# Installer image +FROM amd64/buildpack-deps:bookworm-curl AS installer + +ARG ACCESSTOKEN + +# Retrieve ASP.NET Core +RUN aspnetcore_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output aspnetcore.tar.gz "https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-x64.tar.gz" \ + && aspnetcore_sha512='{sha512_placeholder}' \ + && echo "$aspnetcore_sha512 aspnetcore.tar.gz" | sha512sum -c - \ + && tar -oxzf aspnetcore.tar.gz ./shared/Microsoft.AspNetCore.App \ + && rm aspnetcore.tar.gz + + +# ASP.NET Core image +FROM $REPO:0.0.0-bookworm-slim-amd64 + +# ASP.NET Core version +ENV ASPNET_VERSION=0.0.0 + +COPY --from=installer ["/shared/Microsoft.AspNetCore.App", "/usr/share/dotnet/shared/Microsoft.AspNetCore.App"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/bookworm-slim/arm32v7/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/bookworm-slim/arm32v7/Dockerfile.verified.noextension new file mode 100644 index 0000000000..52b50f6d9e --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/bookworm-slim/arm32v7/Dockerfile.verified.noextension @@ -0,0 +1,23 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime + +# Installer image +FROM arm32v7/buildpack-deps:bookworm-curl AS installer + +ARG ACCESSTOKEN + +# Retrieve ASP.NET Core +RUN aspnetcore_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output aspnetcore.tar.gz "https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-arm.tar.gz" \ + && aspnetcore_sha512='{sha512_placeholder}' \ + && echo "$aspnetcore_sha512 aspnetcore.tar.gz" | sha512sum -c - \ + && tar -oxzf aspnetcore.tar.gz ./shared/Microsoft.AspNetCore.App \ + && rm aspnetcore.tar.gz + + +# ASP.NET Core image +FROM $REPO:0.0.0-bookworm-slim-arm32v7 + +# ASP.NET Core version +ENV ASPNET_VERSION=0.0.0 + +COPY --from=installer ["/shared/Microsoft.AspNetCore.App", "/usr/share/dotnet/shared/Microsoft.AspNetCore.App"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/bookworm-slim/arm64v8/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/bookworm-slim/arm64v8/Dockerfile.verified.noextension new file mode 100644 index 0000000000..d9b6c4677e --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/bookworm-slim/arm64v8/Dockerfile.verified.noextension @@ -0,0 +1,23 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime + +# Installer image +FROM arm64v8/buildpack-deps:bookworm-curl AS installer + +ARG ACCESSTOKEN + +# Retrieve ASP.NET Core +RUN aspnetcore_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output aspnetcore.tar.gz "https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-arm64.tar.gz" \ + && aspnetcore_sha512='{sha512_placeholder}' \ + && echo "$aspnetcore_sha512 aspnetcore.tar.gz" | sha512sum -c - \ + && tar -oxzf aspnetcore.tar.gz ./shared/Microsoft.AspNetCore.App \ + && rm aspnetcore.tar.gz + + +# ASP.NET Core image +FROM $REPO:0.0.0-bookworm-slim-arm64v8 + +# ASP.NET Core version +ENV ASPNET_VERSION=0.0.0 + +COPY --from=installer ["/shared/Microsoft.AspNetCore.App", "/usr/share/dotnet/shared/Microsoft.AspNetCore.App"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/nanoserver-1809/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/nanoserver-1809/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..d57c5db4fd --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/nanoserver-1809/amd64/Dockerfile.verified.noextension @@ -0,0 +1,38 @@ +# escape=` + +ARG REPO=mcr.microsoft.com/dotnet/runtime + +# Installer image +FROM mcr.microsoft.com/windows/servercore:1809-amd64 AS installer + +ARG ACCESSTOKEN + +# Install ASP.NET Core Runtime +RUN powershell -Command ` + $ErrorActionPreference = 'Stop'; ` + $ProgressPreference = 'SilentlyContinue'; ` + ` + $aspnetcore_version = '0.0.0'; ` + ` + $Base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(\":$($Env:ACCESSTOKEN)\")); ` + $Headers = @{Authorization = \"Basic $Base64AuthInfo\"}; ` + Invoke-WebRequest -OutFile aspnetcore.zip \"https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-win-x64.zip\" -Headers $Headers; ` + ` + $aspnetcore_sha512 = '{sha512_placeholder}'; ` + if ((Get-FileHash aspnetcore.zip -Algorithm sha512).Hash -ne $aspnetcore_sha512) { ` + Write-Host 'CHECKSUM VERIFICATION FAILED!'; ` + exit 1; ` + }; ` + ` + mkdir dotnet/shared/Microsoft.AspNetCore.App; ` + tar -oxzf aspnetcore.zip -C dotnet ./shared/Microsoft.AspNetCore.App; ` + Remove-Item -Force aspnetcore.zip + + +# ASP.NET Core image +FROM $REPO:0.0.0-nanoserver-1809 + +# ASP.NET Core version +ENV ASPNET_VERSION=0.0.0 + +COPY --from=installer ["/dotnet/shared/Microsoft.AspNetCore.App", "/Program Files/dotnet/shared/Microsoft.AspNetCore.App"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/nanoserver-ltsc2022/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/nanoserver-ltsc2022/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..0102a24532 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/nanoserver-ltsc2022/amd64/Dockerfile.verified.noextension @@ -0,0 +1,38 @@ +# escape=` + +ARG REPO=mcr.microsoft.com/dotnet/runtime + +# Installer image +FROM mcr.microsoft.com/windows/servercore:ltsc2022-amd64 AS installer + +ARG ACCESSTOKEN + +# Install ASP.NET Core Runtime +RUN powershell -Command ` + $ErrorActionPreference = 'Stop'; ` + $ProgressPreference = 'SilentlyContinue'; ` + ` + $aspnetcore_version = '0.0.0'; ` + ` + $Base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(\":$($Env:ACCESSTOKEN)\")); ` + $Headers = @{Authorization = \"Basic $Base64AuthInfo\"}; ` + Invoke-WebRequest -OutFile aspnetcore.zip \"https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-win-x64.zip\" -Headers $Headers; ` + ` + $aspnetcore_sha512 = '{sha512_placeholder}'; ` + if ((Get-FileHash aspnetcore.zip -Algorithm sha512).Hash -ne $aspnetcore_sha512) { ` + Write-Host 'CHECKSUM VERIFICATION FAILED!'; ` + exit 1; ` + }; ` + ` + mkdir dotnet/shared/Microsoft.AspNetCore.App; ` + tar -oxzf aspnetcore.zip -C dotnet ./shared/Microsoft.AspNetCore.App; ` + Remove-Item -Force aspnetcore.zip + + +# ASP.NET Core image +FROM $REPO:0.0.0-nanoserver-ltsc2022 + +# ASP.NET Core version +ENV ASPNET_VERSION=0.0.0 + +COPY --from=installer ["/dotnet/shared/Microsoft.AspNetCore.App", "/Program Files/dotnet/shared/Microsoft.AspNetCore.App"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/nanoserver-ltsc2025/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/nanoserver-ltsc2025/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..2498539409 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/nanoserver-ltsc2025/amd64/Dockerfile.verified.noextension @@ -0,0 +1,38 @@ +# escape=` + +ARG REPO=mcr.microsoft.com/dotnet/runtime + +# Installer image +FROM mcr.microsoft.com/windows/servercore:ltsc2025-amd64 AS installer + +ARG ACCESSTOKEN + +# Install ASP.NET Core Runtime +RUN powershell -Command ` + $ErrorActionPreference = 'Stop'; ` + $ProgressPreference = 'SilentlyContinue'; ` + ` + $aspnetcore_version = '0.0.0'; ` + ` + $Base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(\":$($Env:ACCESSTOKEN)\")); ` + $Headers = @{Authorization = \"Basic $Base64AuthInfo\"}; ` + Invoke-WebRequest -OutFile aspnetcore.zip \"https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-win-x64.zip\" -Headers $Headers; ` + ` + $aspnetcore_sha512 = '{sha512_placeholder}'; ` + if ((Get-FileHash aspnetcore.zip -Algorithm sha512).Hash -ne $aspnetcore_sha512) { ` + Write-Host 'CHECKSUM VERIFICATION FAILED!'; ` + exit 1; ` + }; ` + ` + mkdir dotnet/shared/Microsoft.AspNetCore.App; ` + tar -oxzf aspnetcore.zip -C dotnet ./shared/Microsoft.AspNetCore.App; ` + Remove-Item -Force aspnetcore.zip + + +# ASP.NET Core image +FROM $REPO:0.0.0-nanoserver-ltsc2025 + +# ASP.NET Core version +ENV ASPNET_VERSION=0.0.0 + +COPY --from=installer ["/dotnet/shared/Microsoft.AspNetCore.App", "/Program Files/dotnet/shared/Microsoft.AspNetCore.App"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/noble-chiseled-composite-extra/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/noble-chiseled-composite-extra/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..969083ea69 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/noble-chiseled-composite-extra/amd64/Dockerfile.verified.noextension @@ -0,0 +1,34 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime-deps + +# Installer image +FROM amd64/buildpack-deps:noble-curl AS installer + +ARG ACCESSTOKEN + +# Retrieve ASP.NET Composite Runtime +RUN aspnetcore_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output dotnet.tar.gz "https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-composite-$aspnetcore_version-linux-x64.tar.gz" \ + && dotnet_sha512='{sha512_placeholder}' \ + && echo "$dotnet_sha512 dotnet.tar.gz" | sha512sum -c - \ + && mkdir -p /usr/share/dotnet \ + && tar -oxzf dotnet.tar.gz -C /usr/share/dotnet \ + && rm dotnet.tar.gz + +RUN mkdir /dotnet-symlink \ + && ln -s /usr/share/dotnet/dotnet /dotnet-symlink/dotnet + + +# ASP.NET Composite Image +FROM $REPO:0.0.0-noble-chiseled-extra-amd64 + +ENV \ + # .NET Runtime version + DOTNET_VERSION=0.0.0 \ + # ASP.NET Core version + ASPNET_VERSION=0.0.0 + +COPY --from=installer ["/usr/share/dotnet", "/usr/share/dotnet"] +COPY --from=installer ["/dotnet-symlink", "/usr/bin"] + +ENTRYPOINT ["/usr/bin/dotnet"] +CMD ["--info"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/noble-chiseled-composite-extra/arm32v7/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/noble-chiseled-composite-extra/arm32v7/Dockerfile.verified.noextension new file mode 100644 index 0000000000..83a3d50b3d --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/noble-chiseled-composite-extra/arm32v7/Dockerfile.verified.noextension @@ -0,0 +1,34 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime-deps + +# Installer image +FROM arm32v7/buildpack-deps:jammy-curl AS installer + +ARG ACCESSTOKEN + +# Retrieve ASP.NET Composite Runtime +RUN aspnetcore_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output dotnet.tar.gz "https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-composite-$aspnetcore_version-linux-arm.tar.gz" \ + && dotnet_sha512='{sha512_placeholder}' \ + && echo "$dotnet_sha512 dotnet.tar.gz" | sha512sum -c - \ + && mkdir -p /usr/share/dotnet \ + && tar -oxzf dotnet.tar.gz -C /usr/share/dotnet \ + && rm dotnet.tar.gz + +RUN mkdir /dotnet-symlink \ + && ln -s /usr/share/dotnet/dotnet /dotnet-symlink/dotnet + + +# ASP.NET Composite Image +FROM $REPO:0.0.0-noble-chiseled-extra-arm32v7 + +ENV \ + # .NET Runtime version + DOTNET_VERSION=0.0.0 \ + # ASP.NET Core version + ASPNET_VERSION=0.0.0 + +COPY --from=installer ["/usr/share/dotnet", "/usr/share/dotnet"] +COPY --from=installer ["/dotnet-symlink", "/usr/bin"] + +ENTRYPOINT ["/usr/bin/dotnet"] +CMD ["--info"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/noble-chiseled-composite-extra/arm64v8/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/noble-chiseled-composite-extra/arm64v8/Dockerfile.verified.noextension new file mode 100644 index 0000000000..338d0a1b95 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/noble-chiseled-composite-extra/arm64v8/Dockerfile.verified.noextension @@ -0,0 +1,34 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime-deps + +# Installer image +FROM arm64v8/buildpack-deps:noble-curl AS installer + +ARG ACCESSTOKEN + +# Retrieve ASP.NET Composite Runtime +RUN aspnetcore_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output dotnet.tar.gz "https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-composite-$aspnetcore_version-linux-arm64.tar.gz" \ + && dotnet_sha512='{sha512_placeholder}' \ + && echo "$dotnet_sha512 dotnet.tar.gz" | sha512sum -c - \ + && mkdir -p /usr/share/dotnet \ + && tar -oxzf dotnet.tar.gz -C /usr/share/dotnet \ + && rm dotnet.tar.gz + +RUN mkdir /dotnet-symlink \ + && ln -s /usr/share/dotnet/dotnet /dotnet-symlink/dotnet + + +# ASP.NET Composite Image +FROM $REPO:0.0.0-noble-chiseled-extra-arm64v8 + +ENV \ + # .NET Runtime version + DOTNET_VERSION=0.0.0 \ + # ASP.NET Core version + ASPNET_VERSION=0.0.0 + +COPY --from=installer ["/usr/share/dotnet", "/usr/share/dotnet"] +COPY --from=installer ["/dotnet-symlink", "/usr/bin"] + +ENTRYPOINT ["/usr/bin/dotnet"] +CMD ["--info"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/noble-chiseled-composite/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/noble-chiseled-composite/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..d6d78d145f --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/noble-chiseled-composite/amd64/Dockerfile.verified.noextension @@ -0,0 +1,34 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime-deps + +# Installer image +FROM amd64/buildpack-deps:noble-curl AS installer + +ARG ACCESSTOKEN + +# Retrieve ASP.NET Composite Runtime +RUN aspnetcore_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output dotnet.tar.gz "https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-composite-$aspnetcore_version-linux-x64.tar.gz" \ + && dotnet_sha512='{sha512_placeholder}' \ + && echo "$dotnet_sha512 dotnet.tar.gz" | sha512sum -c - \ + && mkdir -p /usr/share/dotnet \ + && tar -oxzf dotnet.tar.gz -C /usr/share/dotnet \ + && rm dotnet.tar.gz + +RUN mkdir /dotnet-symlink \ + && ln -s /usr/share/dotnet/dotnet /dotnet-symlink/dotnet + + +# ASP.NET Composite Image +FROM $REPO:0.0.0-noble-chiseled-amd64 + +ENV \ + # .NET Runtime version + DOTNET_VERSION=0.0.0 \ + # ASP.NET Core version + ASPNET_VERSION=0.0.0 + +COPY --from=installer ["/usr/share/dotnet", "/usr/share/dotnet"] +COPY --from=installer ["/dotnet-symlink", "/usr/bin"] + +ENTRYPOINT ["/usr/bin/dotnet"] +CMD ["--info"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/noble-chiseled-composite/arm32v7/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/noble-chiseled-composite/arm32v7/Dockerfile.verified.noextension new file mode 100644 index 0000000000..c54f82ba8c --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/noble-chiseled-composite/arm32v7/Dockerfile.verified.noextension @@ -0,0 +1,34 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime-deps + +# Installer image +FROM arm32v7/buildpack-deps:jammy-curl AS installer + +ARG ACCESSTOKEN + +# Retrieve ASP.NET Composite Runtime +RUN aspnetcore_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output dotnet.tar.gz "https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-composite-$aspnetcore_version-linux-arm.tar.gz" \ + && dotnet_sha512='{sha512_placeholder}' \ + && echo "$dotnet_sha512 dotnet.tar.gz" | sha512sum -c - \ + && mkdir -p /usr/share/dotnet \ + && tar -oxzf dotnet.tar.gz -C /usr/share/dotnet \ + && rm dotnet.tar.gz + +RUN mkdir /dotnet-symlink \ + && ln -s /usr/share/dotnet/dotnet /dotnet-symlink/dotnet + + +# ASP.NET Composite Image +FROM $REPO:0.0.0-noble-chiseled-arm32v7 + +ENV \ + # .NET Runtime version + DOTNET_VERSION=0.0.0 \ + # ASP.NET Core version + ASPNET_VERSION=0.0.0 + +COPY --from=installer ["/usr/share/dotnet", "/usr/share/dotnet"] +COPY --from=installer ["/dotnet-symlink", "/usr/bin"] + +ENTRYPOINT ["/usr/bin/dotnet"] +CMD ["--info"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/noble-chiseled-composite/arm64v8/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/noble-chiseled-composite/arm64v8/Dockerfile.verified.noextension new file mode 100644 index 0000000000..152413d76f --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/noble-chiseled-composite/arm64v8/Dockerfile.verified.noextension @@ -0,0 +1,34 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime-deps + +# Installer image +FROM arm64v8/buildpack-deps:noble-curl AS installer + +ARG ACCESSTOKEN + +# Retrieve ASP.NET Composite Runtime +RUN aspnetcore_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output dotnet.tar.gz "https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-composite-$aspnetcore_version-linux-arm64.tar.gz" \ + && dotnet_sha512='{sha512_placeholder}' \ + && echo "$dotnet_sha512 dotnet.tar.gz" | sha512sum -c - \ + && mkdir -p /usr/share/dotnet \ + && tar -oxzf dotnet.tar.gz -C /usr/share/dotnet \ + && rm dotnet.tar.gz + +RUN mkdir /dotnet-symlink \ + && ln -s /usr/share/dotnet/dotnet /dotnet-symlink/dotnet + + +# ASP.NET Composite Image +FROM $REPO:0.0.0-noble-chiseled-arm64v8 + +ENV \ + # .NET Runtime version + DOTNET_VERSION=0.0.0 \ + # ASP.NET Core version + ASPNET_VERSION=0.0.0 + +COPY --from=installer ["/usr/share/dotnet", "/usr/share/dotnet"] +COPY --from=installer ["/dotnet-symlink", "/usr/bin"] + +ENTRYPOINT ["/usr/bin/dotnet"] +CMD ["--info"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/noble-chiseled-extra/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/noble-chiseled-extra/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..fb71a00daf --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/noble-chiseled-extra/amd64/Dockerfile.verified.noextension @@ -0,0 +1,24 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime + +# Installer image +FROM amd64/buildpack-deps:noble-curl AS installer + +ARG ACCESSTOKEN + +# Retrieve ASP.NET Core +RUN aspnetcore_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output aspnetcore.tar.gz "https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-x64.tar.gz" \ + && aspnetcore_sha512='{sha512_placeholder}' \ + && echo "$aspnetcore_sha512 aspnetcore.tar.gz" | sha512sum -c - \ + && mkdir -p /dotnet \ + && tar -oxzf aspnetcore.tar.gz -C /dotnet ./shared/Microsoft.AspNetCore.App \ + && rm aspnetcore.tar.gz + + +# ASP.NET Core image +FROM $REPO:0.0.0-noble-chiseled-extra-amd64 + +# ASP.NET Core version +ENV ASPNET_VERSION=0.0.0 + +COPY --from=installer ["/dotnet", "/usr/share/dotnet"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/noble-chiseled-extra/arm32v7/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/noble-chiseled-extra/arm32v7/Dockerfile.verified.noextension new file mode 100644 index 0000000000..fd7659a2ba --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/noble-chiseled-extra/arm32v7/Dockerfile.verified.noextension @@ -0,0 +1,24 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime + +# Installer image +FROM arm32v7/buildpack-deps:jammy-curl AS installer + +ARG ACCESSTOKEN + +# Retrieve ASP.NET Core +RUN aspnetcore_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output aspnetcore.tar.gz "https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-arm.tar.gz" \ + && aspnetcore_sha512='{sha512_placeholder}' \ + && echo "$aspnetcore_sha512 aspnetcore.tar.gz" | sha512sum -c - \ + && mkdir -p /dotnet \ + && tar -oxzf aspnetcore.tar.gz -C /dotnet ./shared/Microsoft.AspNetCore.App \ + && rm aspnetcore.tar.gz + + +# ASP.NET Core image +FROM $REPO:0.0.0-noble-chiseled-extra-arm32v7 + +# ASP.NET Core version +ENV ASPNET_VERSION=0.0.0 + +COPY --from=installer ["/dotnet", "/usr/share/dotnet"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/noble-chiseled-extra/arm64v8/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/noble-chiseled-extra/arm64v8/Dockerfile.verified.noextension new file mode 100644 index 0000000000..69a007f8a1 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/noble-chiseled-extra/arm64v8/Dockerfile.verified.noextension @@ -0,0 +1,24 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime + +# Installer image +FROM arm64v8/buildpack-deps:noble-curl AS installer + +ARG ACCESSTOKEN + +# Retrieve ASP.NET Core +RUN aspnetcore_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output aspnetcore.tar.gz "https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-arm64.tar.gz" \ + && aspnetcore_sha512='{sha512_placeholder}' \ + && echo "$aspnetcore_sha512 aspnetcore.tar.gz" | sha512sum -c - \ + && mkdir -p /dotnet \ + && tar -oxzf aspnetcore.tar.gz -C /dotnet ./shared/Microsoft.AspNetCore.App \ + && rm aspnetcore.tar.gz + + +# ASP.NET Core image +FROM $REPO:0.0.0-noble-chiseled-extra-arm64v8 + +# ASP.NET Core version +ENV ASPNET_VERSION=0.0.0 + +COPY --from=installer ["/dotnet", "/usr/share/dotnet"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/noble-chiseled/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/noble-chiseled/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..a1d98bb1b5 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/noble-chiseled/amd64/Dockerfile.verified.noextension @@ -0,0 +1,24 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime + +# Installer image +FROM amd64/buildpack-deps:noble-curl AS installer + +ARG ACCESSTOKEN + +# Retrieve ASP.NET Core +RUN aspnetcore_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output aspnetcore.tar.gz "https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-x64.tar.gz" \ + && aspnetcore_sha512='{sha512_placeholder}' \ + && echo "$aspnetcore_sha512 aspnetcore.tar.gz" | sha512sum -c - \ + && mkdir -p /dotnet \ + && tar -oxzf aspnetcore.tar.gz -C /dotnet ./shared/Microsoft.AspNetCore.App \ + && rm aspnetcore.tar.gz + + +# ASP.NET Core image +FROM $REPO:0.0.0-noble-chiseled-amd64 + +# ASP.NET Core version +ENV ASPNET_VERSION=0.0.0 + +COPY --from=installer ["/dotnet", "/usr/share/dotnet"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/noble-chiseled/arm32v7/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/noble-chiseled/arm32v7/Dockerfile.verified.noextension new file mode 100644 index 0000000000..e04d53b20a --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/noble-chiseled/arm32v7/Dockerfile.verified.noextension @@ -0,0 +1,24 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime + +# Installer image +FROM arm32v7/buildpack-deps:jammy-curl AS installer + +ARG ACCESSTOKEN + +# Retrieve ASP.NET Core +RUN aspnetcore_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output aspnetcore.tar.gz "https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-arm.tar.gz" \ + && aspnetcore_sha512='{sha512_placeholder}' \ + && echo "$aspnetcore_sha512 aspnetcore.tar.gz" | sha512sum -c - \ + && mkdir -p /dotnet \ + && tar -oxzf aspnetcore.tar.gz -C /dotnet ./shared/Microsoft.AspNetCore.App \ + && rm aspnetcore.tar.gz + + +# ASP.NET Core image +FROM $REPO:0.0.0-noble-chiseled-arm32v7 + +# ASP.NET Core version +ENV ASPNET_VERSION=0.0.0 + +COPY --from=installer ["/dotnet", "/usr/share/dotnet"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/noble-chiseled/arm64v8/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/noble-chiseled/arm64v8/Dockerfile.verified.noextension new file mode 100644 index 0000000000..14de976a36 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/noble-chiseled/arm64v8/Dockerfile.verified.noextension @@ -0,0 +1,24 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime + +# Installer image +FROM arm64v8/buildpack-deps:noble-curl AS installer + +ARG ACCESSTOKEN + +# Retrieve ASP.NET Core +RUN aspnetcore_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output aspnetcore.tar.gz "https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-arm64.tar.gz" \ + && aspnetcore_sha512='{sha512_placeholder}' \ + && echo "$aspnetcore_sha512 aspnetcore.tar.gz" | sha512sum -c - \ + && mkdir -p /dotnet \ + && tar -oxzf aspnetcore.tar.gz -C /dotnet ./shared/Microsoft.AspNetCore.App \ + && rm aspnetcore.tar.gz + + +# ASP.NET Core image +FROM $REPO:0.0.0-noble-chiseled-arm64v8 + +# ASP.NET Core version +ENV ASPNET_VERSION=0.0.0 + +COPY --from=installer ["/dotnet", "/usr/share/dotnet"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/noble/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/noble/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..f9512e57e1 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/noble/amd64/Dockerfile.verified.noextension @@ -0,0 +1,23 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime + +# Installer image +FROM amd64/buildpack-deps:noble-curl AS installer + +ARG ACCESSTOKEN + +# Retrieve ASP.NET Core +RUN aspnetcore_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output aspnetcore.tar.gz "https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-x64.tar.gz" \ + && aspnetcore_sha512='{sha512_placeholder}' \ + && echo "$aspnetcore_sha512 aspnetcore.tar.gz" | sha512sum -c - \ + && tar -oxzf aspnetcore.tar.gz ./shared/Microsoft.AspNetCore.App \ + && rm aspnetcore.tar.gz + + +# ASP.NET Core image +FROM $REPO:0.0.0-noble-amd64 + +# ASP.NET Core version +ENV ASPNET_VERSION=0.0.0 + +COPY --from=installer ["/shared/Microsoft.AspNetCore.App", "/usr/share/dotnet/shared/Microsoft.AspNetCore.App"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/noble/arm32v7/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/noble/arm32v7/Dockerfile.verified.noextension new file mode 100644 index 0000000000..1a2cd8ae61 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/noble/arm32v7/Dockerfile.verified.noextension @@ -0,0 +1,23 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime + +# Installer image +FROM arm32v7/buildpack-deps:jammy-curl AS installer + +ARG ACCESSTOKEN + +# Retrieve ASP.NET Core +RUN aspnetcore_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output aspnetcore.tar.gz "https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-arm.tar.gz" \ + && aspnetcore_sha512='{sha512_placeholder}' \ + && echo "$aspnetcore_sha512 aspnetcore.tar.gz" | sha512sum -c - \ + && tar -oxzf aspnetcore.tar.gz ./shared/Microsoft.AspNetCore.App \ + && rm aspnetcore.tar.gz + + +# ASP.NET Core image +FROM $REPO:0.0.0-noble-arm32v7 + +# ASP.NET Core version +ENV ASPNET_VERSION=0.0.0 + +COPY --from=installer ["/shared/Microsoft.AspNetCore.App", "/usr/share/dotnet/shared/Microsoft.AspNetCore.App"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/noble/arm64v8/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/noble/arm64v8/Dockerfile.verified.noextension new file mode 100644 index 0000000000..32c1ae9132 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/noble/arm64v8/Dockerfile.verified.noextension @@ -0,0 +1,23 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime + +# Installer image +FROM arm64v8/buildpack-deps:noble-curl AS installer + +ARG ACCESSTOKEN + +# Retrieve ASP.NET Core +RUN aspnetcore_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output aspnetcore.tar.gz "https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-arm64.tar.gz" \ + && aspnetcore_sha512='{sha512_placeholder}' \ + && echo "$aspnetcore_sha512 aspnetcore.tar.gz" | sha512sum -c - \ + && tar -oxzf aspnetcore.tar.gz ./shared/Microsoft.AspNetCore.App \ + && rm aspnetcore.tar.gz + + +# ASP.NET Core image +FROM $REPO:0.0.0-noble-arm64v8 + +# ASP.NET Core version +ENV ASPNET_VERSION=0.0.0 + +COPY --from=installer ["/shared/Microsoft.AspNetCore.App", "/usr/share/dotnet/shared/Microsoft.AspNetCore.App"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/windowsservercore-ltsc2019/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/windowsservercore-ltsc2019/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..da6268fe32 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/windowsservercore-ltsc2019/amd64/Dockerfile.verified.noextension @@ -0,0 +1,38 @@ +# escape=` + +ARG REPO=mcr.microsoft.com/dotnet/runtime + +# Installer image +FROM mcr.microsoft.com/windows/servercore:ltsc2019-amd64 AS installer + +ARG ACCESSTOKEN + +# Install ASP.NET Core Runtime +RUN powershell -Command ` + $ErrorActionPreference = 'Stop'; ` + $ProgressPreference = 'SilentlyContinue'; ` + ` + $aspnetcore_version = '0.0.0'; ` + ` + $Base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(\":$($Env:ACCESSTOKEN)\")); ` + $Headers = @{Authorization = \"Basic $Base64AuthInfo\"}; ` + Invoke-WebRequest -OutFile aspnetcore.zip \"https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-win-x64.zip\" -Headers $Headers; ` + ` + $aspnetcore_sha512 = '{sha512_placeholder}'; ` + if ((Get-FileHash aspnetcore.zip -Algorithm sha512).Hash -ne $aspnetcore_sha512) { ` + Write-Host 'CHECKSUM VERIFICATION FAILED!'; ` + exit 1; ` + }; ` + ` + mkdir dotnet/shared/Microsoft.AspNetCore.App; ` + tar -oxzf aspnetcore.zip -C dotnet ./shared/Microsoft.AspNetCore.App; ` + Remove-Item -Force aspnetcore.zip + + +# ASP.NET Core image +FROM $REPO:0.0.0-windowsservercore-ltsc2019 + +# ASP.NET Core version +ENV ASPNET_VERSION=0.0.0 + +COPY --from=installer ["/dotnet/shared/Microsoft.AspNetCore.App", "/Program Files/dotnet/shared/Microsoft.AspNetCore.App"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/windowsservercore-ltsc2022/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/windowsservercore-ltsc2022/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..6326069e59 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/windowsservercore-ltsc2022/amd64/Dockerfile.verified.noextension @@ -0,0 +1,38 @@ +# escape=` + +ARG REPO=mcr.microsoft.com/dotnet/runtime + +# Installer image +FROM mcr.microsoft.com/windows/servercore:ltsc2022-amd64 AS installer + +ARG ACCESSTOKEN + +# Install ASP.NET Core Runtime +RUN powershell -Command ` + $ErrorActionPreference = 'Stop'; ` + $ProgressPreference = 'SilentlyContinue'; ` + ` + $aspnetcore_version = '0.0.0'; ` + ` + $Base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(\":$($Env:ACCESSTOKEN)\")); ` + $Headers = @{Authorization = \"Basic $Base64AuthInfo\"}; ` + Invoke-WebRequest -OutFile aspnetcore.zip \"https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-win-x64.zip\" -Headers $Headers; ` + ` + $aspnetcore_sha512 = '{sha512_placeholder}'; ` + if ((Get-FileHash aspnetcore.zip -Algorithm sha512).Hash -ne $aspnetcore_sha512) { ` + Write-Host 'CHECKSUM VERIFICATION FAILED!'; ` + exit 1; ` + }; ` + ` + mkdir dotnet/shared/Microsoft.AspNetCore.App; ` + tar -oxzf aspnetcore.zip -C dotnet ./shared/Microsoft.AspNetCore.App; ` + Remove-Item -Force aspnetcore.zip + + +# ASP.NET Core image +FROM $REPO:0.0.0-windowsservercore-ltsc2022 + +# ASP.NET Core version +ENV ASPNET_VERSION=0.0.0 + +COPY --from=installer ["/dotnet/shared/Microsoft.AspNetCore.App", "/Program Files/dotnet/shared/Microsoft.AspNetCore.App"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/windowsservercore-ltsc2025/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/windowsservercore-ltsc2025/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..c5521636ab --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/aspnet/9.0/windowsservercore-ltsc2025/amd64/Dockerfile.verified.noextension @@ -0,0 +1,38 @@ +# escape=` + +ARG REPO=mcr.microsoft.com/dotnet/runtime + +# Installer image +FROM mcr.microsoft.com/windows/servercore:ltsc2025-amd64 AS installer + +ARG ACCESSTOKEN + +# Install ASP.NET Core Runtime +RUN powershell -Command ` + $ErrorActionPreference = 'Stop'; ` + $ProgressPreference = 'SilentlyContinue'; ` + ` + $aspnetcore_version = '0.0.0'; ` + ` + $Base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(\":$($Env:ACCESSTOKEN)\")); ` + $Headers = @{Authorization = \"Basic $Base64AuthInfo\"}; ` + Invoke-WebRequest -OutFile aspnetcore.zip \"https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-win-x64.zip\" -Headers $Headers; ` + ` + $aspnetcore_sha512 = '{sha512_placeholder}'; ` + if ((Get-FileHash aspnetcore.zip -Algorithm sha512).Hash -ne $aspnetcore_sha512) { ` + Write-Host 'CHECKSUM VERIFICATION FAILED!'; ` + exit 1; ` + }; ` + ` + mkdir dotnet/shared/Microsoft.AspNetCore.App; ` + tar -oxzf aspnetcore.zip -C dotnet ./shared/Microsoft.AspNetCore.App; ` + Remove-Item -Force aspnetcore.zip + + +# ASP.NET Core image +FROM $REPO:0.0.0-windowsservercore-ltsc2025 + +# ASP.NET Core version +ENV ASPNET_VERSION=0.0.0 + +COPY --from=installer ["/dotnet/shared/Microsoft.AspNetCore.App", "/Program Files/dotnet/shared/Microsoft.AspNetCore.App"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/monitor-base/8.0/cbl-mariner-distroless/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/monitor-base/8.0/cbl-mariner-distroless/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..bce18a5c4d --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/monitor-base/8.0/cbl-mariner-distroless/amd64/Dockerfile.verified.noextension @@ -0,0 +1,50 @@ +ARG REPO=mcr.microsoft.com/dotnet/aspnet + +# Installer image +FROM mcr.microsoft.com/cbl-mariner/base/core:2.0 AS installer + +RUN tdnf install -y \ + ca-certificates \ + gzip \ + tar \ + && tdnf clean all + +# Retrieve .NET Monitor Base +RUN dotnet_monitor_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output dotnet-monitor-base.tar.gz "https://builds.dotnet.microsoft.com/dotnet/diagnostics/monitor/$dotnet_monitor_version/dotnet-monitor-base-$dotnet_monitor_version-linux-x64.tar.gz" \ + && dotnet_monitor_base_sha512='{sha512_placeholder}' \ + && echo "$dotnet_monitor_base_sha512 dotnet-monitor-base.tar.gz" | sha512sum -c - \ + && mkdir -p /app \ + && tar -oxzf dotnet-monitor-base.tar.gz -C /app \ + && rm dotnet-monitor-base.tar.gz + + +# .NET Monitor Base image +FROM $REPO:0.0.0-cbl-mariner2.0-distroless-amd64 + +WORKDIR /app +COPY --from=installer /app . + +ENV \ + # Unset ASPNETCORE_HTTP_PORTS from aspnet base image + ASPNETCORE_HTTP_PORTS= \ + # Disable debugger and profiler diagnostics to avoid diagnosing self. + COMPlus_EnableDiagnostics=0 \ + # Default Filter + DefaultProcess__Filters__0__Key=ProcessId \ + DefaultProcess__Filters__0__Value=1 \ + # Remove Unix Domain Socket before starting diagnostic port server + DiagnosticPort__DeleteEndpointOnStartup=true \ + # Server GC mode + DOTNET_gcServer=1 \ + # Logging: JSON format so that analytic platforms can get discrete entry information + Logging__Console__FormatterName=json \ + # Logging: Use round-trip date/time format without timezone information (always logged in UTC) + Logging__Console__FormatterOptions__TimestampFormat=yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffffff'Z' \ + # Logging: Write timestamps using UTC offset (+0:00) + Logging__Console__FormatterOptions__UseUtcTimestamp=true \ + # Add dotnet-monitor path to front of PATH for easier, prioritized execution + PATH="/app:${PATH}" + +ENTRYPOINT [ "dotnet-monitor" ] +CMD [ "collect", "--urls", "https://+:52323", "--metricUrls", "http://+:52325" ] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/monitor-base/8.0/cbl-mariner-distroless/arm64v8/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/monitor-base/8.0/cbl-mariner-distroless/arm64v8/Dockerfile.verified.noextension new file mode 100644 index 0000000000..02ec1c85fb --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/monitor-base/8.0/cbl-mariner-distroless/arm64v8/Dockerfile.verified.noextension @@ -0,0 +1,50 @@ +ARG REPO=mcr.microsoft.com/dotnet/aspnet + +# Installer image +FROM mcr.microsoft.com/cbl-mariner/base/core:2.0 AS installer + +RUN tdnf install -y \ + ca-certificates \ + gzip \ + tar \ + && tdnf clean all + +# Retrieve .NET Monitor Base +RUN dotnet_monitor_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output dotnet-monitor-base.tar.gz "https://builds.dotnet.microsoft.com/dotnet/diagnostics/monitor/$dotnet_monitor_version/dotnet-monitor-base-$dotnet_monitor_version-linux-arm64.tar.gz" \ + && dotnet_monitor_base_sha512='{sha512_placeholder}' \ + && echo "$dotnet_monitor_base_sha512 dotnet-monitor-base.tar.gz" | sha512sum -c - \ + && mkdir -p /app \ + && tar -oxzf dotnet-monitor-base.tar.gz -C /app \ + && rm dotnet-monitor-base.tar.gz + + +# .NET Monitor Base image +FROM $REPO:0.0.0-cbl-mariner2.0-distroless-arm64v8 + +WORKDIR /app +COPY --from=installer /app . + +ENV \ + # Unset ASPNETCORE_HTTP_PORTS from aspnet base image + ASPNETCORE_HTTP_PORTS= \ + # Disable debugger and profiler diagnostics to avoid diagnosing self. + COMPlus_EnableDiagnostics=0 \ + # Default Filter + DefaultProcess__Filters__0__Key=ProcessId \ + DefaultProcess__Filters__0__Value=1 \ + # Remove Unix Domain Socket before starting diagnostic port server + DiagnosticPort__DeleteEndpointOnStartup=true \ + # Server GC mode + DOTNET_gcServer=1 \ + # Logging: JSON format so that analytic platforms can get discrete entry information + Logging__Console__FormatterName=json \ + # Logging: Use round-trip date/time format without timezone information (always logged in UTC) + Logging__Console__FormatterOptions__TimestampFormat=yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffffff'Z' \ + # Logging: Write timestamps using UTC offset (+0:00) + Logging__Console__FormatterOptions__UseUtcTimestamp=true \ + # Add dotnet-monitor path to front of PATH for easier, prioritized execution + PATH="/app:${PATH}" + +ENTRYPOINT [ "dotnet-monitor" ] +CMD [ "collect", "--urls", "https://+:52323", "--metricUrls", "http://+:52325" ] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/monitor-base/8.0/ubuntu-chiseled/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/monitor-base/8.0/ubuntu-chiseled/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..2933e31154 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/monitor-base/8.0/ubuntu-chiseled/amd64/Dockerfile.verified.noextension @@ -0,0 +1,44 @@ +ARG REPO=mcr.microsoft.com/dotnet/aspnet + +# Installer image +FROM amd64/buildpack-deps:jammy-curl AS installer + +# Retrieve .NET Monitor Base +RUN dotnet_monitor_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output dotnet-monitor-base.tar.gz "https://builds.dotnet.microsoft.com/dotnet/diagnostics/monitor/$dotnet_monitor_version/dotnet-monitor-base-$dotnet_monitor_version-linux-x64.tar.gz" \ + && dotnet_monitor_base_sha512='{sha512_placeholder}' \ + && echo "$dotnet_monitor_base_sha512 dotnet-monitor-base.tar.gz" | sha512sum -c - \ + && mkdir -p /app \ + && tar -oxzf dotnet-monitor-base.tar.gz -C /app \ + && rm dotnet-monitor-base.tar.gz + + +# .NET Monitor Base image +FROM $REPO:0.0.0-jammy-chiseled-amd64 + +WORKDIR /app +COPY --from=installer /app . + +ENV \ + # Unset ASPNETCORE_HTTP_PORTS from aspnet base image + ASPNETCORE_HTTP_PORTS= \ + # Disable debugger and profiler diagnostics to avoid diagnosing self. + COMPlus_EnableDiagnostics=0 \ + # Default Filter + DefaultProcess__Filters__0__Key=ProcessId \ + DefaultProcess__Filters__0__Value=1 \ + # Remove Unix Domain Socket before starting diagnostic port server + DiagnosticPort__DeleteEndpointOnStartup=true \ + # Server GC mode + DOTNET_gcServer=1 \ + # Logging: JSON format so that analytic platforms can get discrete entry information + Logging__Console__FormatterName=json \ + # Logging: Use round-trip date/time format without timezone information (always logged in UTC) + Logging__Console__FormatterOptions__TimestampFormat=yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffffff'Z' \ + # Logging: Write timestamps using UTC offset (+0:00) + Logging__Console__FormatterOptions__UseUtcTimestamp=true \ + # Add dotnet-monitor path to front of PATH for easier, prioritized execution + PATH="/app:${PATH}" + +ENTRYPOINT [ "dotnet-monitor" ] +CMD [ "collect", "--urls", "https://+:52323", "--metricUrls", "http://+:52325" ] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/monitor-base/8.0/ubuntu-chiseled/arm64v8/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/monitor-base/8.0/ubuntu-chiseled/arm64v8/Dockerfile.verified.noextension new file mode 100644 index 0000000000..66fb2ca47e --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/monitor-base/8.0/ubuntu-chiseled/arm64v8/Dockerfile.verified.noextension @@ -0,0 +1,44 @@ +ARG REPO=mcr.microsoft.com/dotnet/aspnet + +# Installer image +FROM arm64v8/buildpack-deps:jammy-curl AS installer + +# Retrieve .NET Monitor Base +RUN dotnet_monitor_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output dotnet-monitor-base.tar.gz "https://builds.dotnet.microsoft.com/dotnet/diagnostics/monitor/$dotnet_monitor_version/dotnet-monitor-base-$dotnet_monitor_version-linux-arm64.tar.gz" \ + && dotnet_monitor_base_sha512='{sha512_placeholder}' \ + && echo "$dotnet_monitor_base_sha512 dotnet-monitor-base.tar.gz" | sha512sum -c - \ + && mkdir -p /app \ + && tar -oxzf dotnet-monitor-base.tar.gz -C /app \ + && rm dotnet-monitor-base.tar.gz + + +# .NET Monitor Base image +FROM $REPO:0.0.0-jammy-chiseled-arm64v8 + +WORKDIR /app +COPY --from=installer /app . + +ENV \ + # Unset ASPNETCORE_HTTP_PORTS from aspnet base image + ASPNETCORE_HTTP_PORTS= \ + # Disable debugger and profiler diagnostics to avoid diagnosing self. + COMPlus_EnableDiagnostics=0 \ + # Default Filter + DefaultProcess__Filters__0__Key=ProcessId \ + DefaultProcess__Filters__0__Value=1 \ + # Remove Unix Domain Socket before starting diagnostic port server + DiagnosticPort__DeleteEndpointOnStartup=true \ + # Server GC mode + DOTNET_gcServer=1 \ + # Logging: JSON format so that analytic platforms can get discrete entry information + Logging__Console__FormatterName=json \ + # Logging: Use round-trip date/time format without timezone information (always logged in UTC) + Logging__Console__FormatterOptions__TimestampFormat=yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffffff'Z' \ + # Logging: Write timestamps using UTC offset (+0:00) + Logging__Console__FormatterOptions__UseUtcTimestamp=true \ + # Add dotnet-monitor path to front of PATH for easier, prioritized execution + PATH="/app:${PATH}" + +ENTRYPOINT [ "dotnet-monitor" ] +CMD [ "collect", "--urls", "https://+:52323", "--metricUrls", "http://+:52325" ] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/monitor-base/8.1/cbl-mariner-distroless/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/monitor-base/8.1/cbl-mariner-distroless/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..5c3de28ed0 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/monitor-base/8.1/cbl-mariner-distroless/amd64/Dockerfile.verified.noextension @@ -0,0 +1,50 @@ +ARG REPO=mcr.microsoft.com/dotnet/aspnet + +# Installer image +FROM mcr.microsoft.com/cbl-mariner/base/core:2.0 AS installer + +RUN tdnf install -y \ + ca-certificates \ + gzip \ + tar \ + && tdnf clean all + +# Retrieve .NET Monitor Base +RUN dotnet_monitor_version=0.0.0-alpha.0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output dotnet-monitor-base.tar.gz "https://ci.dot.net/public/diagnostics/monitor/$dotnet_monitor_version/dotnet-monitor-base-$dotnet_monitor_version-linux-x64.tar.gz" \ + && dotnet_monitor_base_sha512='{sha512_placeholder}' \ + && echo "$dotnet_monitor_base_sha512 dotnet-monitor-base.tar.gz" | sha512sum -c - \ + && mkdir -p /app \ + && tar -oxzf dotnet-monitor-base.tar.gz -C /app \ + && rm dotnet-monitor-base.tar.gz + + +# .NET Monitor Base image +FROM $REPO:0.0.0-cbl-mariner2.0-distroless-amd64 + +WORKDIR /app +COPY --from=installer /app . + +ENV \ + # Unset ASPNETCORE_HTTP_PORTS from aspnet base image + ASPNETCORE_HTTP_PORTS= \ + # Disable debugger and profiler diagnostics to avoid diagnosing self. + COMPlus_EnableDiagnostics=0 \ + # Default Filter + DefaultProcess__Filters__0__Key=ProcessId \ + DefaultProcess__Filters__0__Value=1 \ + # Remove Unix Domain Socket before starting diagnostic port server + DiagnosticPort__DeleteEndpointOnStartup=true \ + # Server GC mode + DOTNET_gcServer=1 \ + # Logging: JSON format so that analytic platforms can get discrete entry information + Logging__Console__FormatterName=json \ + # Logging: Use round-trip date/time format without timezone information (always logged in UTC) + Logging__Console__FormatterOptions__TimestampFormat=yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffffff'Z' \ + # Logging: Write timestamps using UTC offset (+0:00) + Logging__Console__FormatterOptions__UseUtcTimestamp=true \ + # Add dotnet-monitor path to front of PATH for easier, prioritized execution + PATH="/app:${PATH}" + +ENTRYPOINT [ "dotnet-monitor" ] +CMD [ "collect", "--urls", "https://+:52323", "--metricUrls", "http://+:52325" ] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/monitor-base/8.1/cbl-mariner-distroless/arm64v8/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/monitor-base/8.1/cbl-mariner-distroless/arm64v8/Dockerfile.verified.noextension new file mode 100644 index 0000000000..f27c1d3f53 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/monitor-base/8.1/cbl-mariner-distroless/arm64v8/Dockerfile.verified.noextension @@ -0,0 +1,50 @@ +ARG REPO=mcr.microsoft.com/dotnet/aspnet + +# Installer image +FROM mcr.microsoft.com/cbl-mariner/base/core:2.0 AS installer + +RUN tdnf install -y \ + ca-certificates \ + gzip \ + tar \ + && tdnf clean all + +# Retrieve .NET Monitor Base +RUN dotnet_monitor_version=0.0.0-alpha.0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output dotnet-monitor-base.tar.gz "https://ci.dot.net/public/diagnostics/monitor/$dotnet_monitor_version/dotnet-monitor-base-$dotnet_monitor_version-linux-arm64.tar.gz" \ + && dotnet_monitor_base_sha512='{sha512_placeholder}' \ + && echo "$dotnet_monitor_base_sha512 dotnet-monitor-base.tar.gz" | sha512sum -c - \ + && mkdir -p /app \ + && tar -oxzf dotnet-monitor-base.tar.gz -C /app \ + && rm dotnet-monitor-base.tar.gz + + +# .NET Monitor Base image +FROM $REPO:0.0.0-cbl-mariner2.0-distroless-arm64v8 + +WORKDIR /app +COPY --from=installer /app . + +ENV \ + # Unset ASPNETCORE_HTTP_PORTS from aspnet base image + ASPNETCORE_HTTP_PORTS= \ + # Disable debugger and profiler diagnostics to avoid diagnosing self. + COMPlus_EnableDiagnostics=0 \ + # Default Filter + DefaultProcess__Filters__0__Key=ProcessId \ + DefaultProcess__Filters__0__Value=1 \ + # Remove Unix Domain Socket before starting diagnostic port server + DiagnosticPort__DeleteEndpointOnStartup=true \ + # Server GC mode + DOTNET_gcServer=1 \ + # Logging: JSON format so that analytic platforms can get discrete entry information + Logging__Console__FormatterName=json \ + # Logging: Use round-trip date/time format without timezone information (always logged in UTC) + Logging__Console__FormatterOptions__TimestampFormat=yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffffff'Z' \ + # Logging: Write timestamps using UTC offset (+0:00) + Logging__Console__FormatterOptions__UseUtcTimestamp=true \ + # Add dotnet-monitor path to front of PATH for easier, prioritized execution + PATH="/app:${PATH}" + +ENTRYPOINT [ "dotnet-monitor" ] +CMD [ "collect", "--urls", "https://+:52323", "--metricUrls", "http://+:52325" ] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/monitor-base/8.1/ubuntu-chiseled/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/monitor-base/8.1/ubuntu-chiseled/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..01d8892a32 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/monitor-base/8.1/ubuntu-chiseled/amd64/Dockerfile.verified.noextension @@ -0,0 +1,44 @@ +ARG REPO=mcr.microsoft.com/dotnet/aspnet + +# Installer image +FROM amd64/buildpack-deps:jammy-curl AS installer + +# Retrieve .NET Monitor Base +RUN dotnet_monitor_version=0.0.0-alpha.0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output dotnet-monitor-base.tar.gz "https://ci.dot.net/public/diagnostics/monitor/$dotnet_monitor_version/dotnet-monitor-base-$dotnet_monitor_version-linux-x64.tar.gz" \ + && dotnet_monitor_base_sha512='{sha512_placeholder}' \ + && echo "$dotnet_monitor_base_sha512 dotnet-monitor-base.tar.gz" | sha512sum -c - \ + && mkdir -p /app \ + && tar -oxzf dotnet-monitor-base.tar.gz -C /app \ + && rm dotnet-monitor-base.tar.gz + + +# .NET Monitor Base image +FROM $REPO:0.0.0-jammy-chiseled-amd64 + +WORKDIR /app +COPY --from=installer /app . + +ENV \ + # Unset ASPNETCORE_HTTP_PORTS from aspnet base image + ASPNETCORE_HTTP_PORTS= \ + # Disable debugger and profiler diagnostics to avoid diagnosing self. + COMPlus_EnableDiagnostics=0 \ + # Default Filter + DefaultProcess__Filters__0__Key=ProcessId \ + DefaultProcess__Filters__0__Value=1 \ + # Remove Unix Domain Socket before starting diagnostic port server + DiagnosticPort__DeleteEndpointOnStartup=true \ + # Server GC mode + DOTNET_gcServer=1 \ + # Logging: JSON format so that analytic platforms can get discrete entry information + Logging__Console__FormatterName=json \ + # Logging: Use round-trip date/time format without timezone information (always logged in UTC) + Logging__Console__FormatterOptions__TimestampFormat=yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffffff'Z' \ + # Logging: Write timestamps using UTC offset (+0:00) + Logging__Console__FormatterOptions__UseUtcTimestamp=true \ + # Add dotnet-monitor path to front of PATH for easier, prioritized execution + PATH="/app:${PATH}" + +ENTRYPOINT [ "dotnet-monitor" ] +CMD [ "collect", "--urls", "https://+:52323", "--metricUrls", "http://+:52325" ] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/monitor-base/8.1/ubuntu-chiseled/arm64v8/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/monitor-base/8.1/ubuntu-chiseled/arm64v8/Dockerfile.verified.noextension new file mode 100644 index 0000000000..2c4733f97e --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/monitor-base/8.1/ubuntu-chiseled/arm64v8/Dockerfile.verified.noextension @@ -0,0 +1,44 @@ +ARG REPO=mcr.microsoft.com/dotnet/aspnet + +# Installer image +FROM arm64v8/buildpack-deps:jammy-curl AS installer + +# Retrieve .NET Monitor Base +RUN dotnet_monitor_version=0.0.0-alpha.0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output dotnet-monitor-base.tar.gz "https://ci.dot.net/public/diagnostics/monitor/$dotnet_monitor_version/dotnet-monitor-base-$dotnet_monitor_version-linux-arm64.tar.gz" \ + && dotnet_monitor_base_sha512='{sha512_placeholder}' \ + && echo "$dotnet_monitor_base_sha512 dotnet-monitor-base.tar.gz" | sha512sum -c - \ + && mkdir -p /app \ + && tar -oxzf dotnet-monitor-base.tar.gz -C /app \ + && rm dotnet-monitor-base.tar.gz + + +# .NET Monitor Base image +FROM $REPO:0.0.0-jammy-chiseled-arm64v8 + +WORKDIR /app +COPY --from=installer /app . + +ENV \ + # Unset ASPNETCORE_HTTP_PORTS from aspnet base image + ASPNETCORE_HTTP_PORTS= \ + # Disable debugger and profiler diagnostics to avoid diagnosing self. + COMPlus_EnableDiagnostics=0 \ + # Default Filter + DefaultProcess__Filters__0__Key=ProcessId \ + DefaultProcess__Filters__0__Value=1 \ + # Remove Unix Domain Socket before starting diagnostic port server + DiagnosticPort__DeleteEndpointOnStartup=true \ + # Server GC mode + DOTNET_gcServer=1 \ + # Logging: JSON format so that analytic platforms can get discrete entry information + Logging__Console__FormatterName=json \ + # Logging: Use round-trip date/time format without timezone information (always logged in UTC) + Logging__Console__FormatterOptions__TimestampFormat=yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffffff'Z' \ + # Logging: Write timestamps using UTC offset (+0:00) + Logging__Console__FormatterOptions__UseUtcTimestamp=true \ + # Add dotnet-monitor path to front of PATH for easier, prioritized execution + PATH="/app:${PATH}" + +ENTRYPOINT [ "dotnet-monitor" ] +CMD [ "collect", "--urls", "https://+:52323", "--metricUrls", "http://+:52325" ] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/monitor-base/9.0/azurelinux-distroless/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/monitor-base/9.0/azurelinux-distroless/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..ae65790f1c --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/monitor-base/9.0/azurelinux-distroless/amd64/Dockerfile.verified.noextension @@ -0,0 +1,50 @@ +ARG REPO=mcr.microsoft.com/dotnet/aspnet + +# Installer image +FROM mcr.microsoft.com/azurelinux/base/core:3.0 AS installer + +RUN tdnf install -y \ + ca-certificates \ + gzip \ + tar \ + && tdnf clean all + +# Retrieve .NET Monitor Base +RUN dotnet_monitor_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output dotnet-monitor-base.tar.gz "https://builds.dotnet.microsoft.com/dotnet/diagnostics/monitor/$dotnet_monitor_version/dotnet-monitor-base-$dotnet_monitor_version-linux-x64.tar.gz" \ + && dotnet_monitor_base_sha512='{sha512_placeholder}' \ + && echo "$dotnet_monitor_base_sha512 dotnet-monitor-base.tar.gz" | sha512sum -c - \ + && mkdir -p /app \ + && tar -oxzf dotnet-monitor-base.tar.gz -C /app \ + && rm dotnet-monitor-base.tar.gz + + +# .NET Monitor Base image +FROM $REPO:0.0.0-azurelinux3.0-distroless-amd64 + +WORKDIR /app +COPY --from=installer /app . + +ENV \ + # Unset ASPNETCORE_HTTP_PORTS from aspnet base image + ASPNETCORE_HTTP_PORTS= \ + # Disable debugger and profiler diagnostics to avoid diagnosing self. + COMPlus_EnableDiagnostics=0 \ + # Default Filter + DefaultProcess__Filters__0__Key=ProcessId \ + DefaultProcess__Filters__0__Value=1 \ + # Remove Unix Domain Socket before starting diagnostic port server + DiagnosticPort__DeleteEndpointOnStartup=true \ + # Server GC mode + DOTNET_gcServer=1 \ + # Logging: JSON format so that analytic platforms can get discrete entry information + Logging__Console__FormatterName=json \ + # Logging: Use round-trip date/time format without timezone information (always logged in UTC) + Logging__Console__FormatterOptions__TimestampFormat=yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffffff'Z' \ + # Logging: Write timestamps using UTC offset (+0:00) + Logging__Console__FormatterOptions__UseUtcTimestamp=true \ + # Add dotnet-monitor path to front of PATH for easier, prioritized execution + PATH="/app:${PATH}" + +ENTRYPOINT [ "dotnet-monitor" ] +CMD [ "collect", "--urls", "https://+:52323", "--metricUrls", "http://+:52325" ] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/monitor-base/9.0/azurelinux-distroless/arm64v8/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/monitor-base/9.0/azurelinux-distroless/arm64v8/Dockerfile.verified.noextension new file mode 100644 index 0000000000..a9f7a339fb --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/monitor-base/9.0/azurelinux-distroless/arm64v8/Dockerfile.verified.noextension @@ -0,0 +1,50 @@ +ARG REPO=mcr.microsoft.com/dotnet/aspnet + +# Installer image +FROM mcr.microsoft.com/azurelinux/base/core:3.0 AS installer + +RUN tdnf install -y \ + ca-certificates \ + gzip \ + tar \ + && tdnf clean all + +# Retrieve .NET Monitor Base +RUN dotnet_monitor_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output dotnet-monitor-base.tar.gz "https://builds.dotnet.microsoft.com/dotnet/diagnostics/monitor/$dotnet_monitor_version/dotnet-monitor-base-$dotnet_monitor_version-linux-arm64.tar.gz" \ + && dotnet_monitor_base_sha512='{sha512_placeholder}' \ + && echo "$dotnet_monitor_base_sha512 dotnet-monitor-base.tar.gz" | sha512sum -c - \ + && mkdir -p /app \ + && tar -oxzf dotnet-monitor-base.tar.gz -C /app \ + && rm dotnet-monitor-base.tar.gz + + +# .NET Monitor Base image +FROM $REPO:0.0.0-azurelinux3.0-distroless-arm64v8 + +WORKDIR /app +COPY --from=installer /app . + +ENV \ + # Unset ASPNETCORE_HTTP_PORTS from aspnet base image + ASPNETCORE_HTTP_PORTS= \ + # Disable debugger and profiler diagnostics to avoid diagnosing self. + COMPlus_EnableDiagnostics=0 \ + # Default Filter + DefaultProcess__Filters__0__Key=ProcessId \ + DefaultProcess__Filters__0__Value=1 \ + # Remove Unix Domain Socket before starting diagnostic port server + DiagnosticPort__DeleteEndpointOnStartup=true \ + # Server GC mode + DOTNET_gcServer=1 \ + # Logging: JSON format so that analytic platforms can get discrete entry information + Logging__Console__FormatterName=json \ + # Logging: Use round-trip date/time format without timezone information (always logged in UTC) + Logging__Console__FormatterOptions__TimestampFormat=yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffffff'Z' \ + # Logging: Write timestamps using UTC offset (+0:00) + Logging__Console__FormatterOptions__UseUtcTimestamp=true \ + # Add dotnet-monitor path to front of PATH for easier, prioritized execution + PATH="/app:${PATH}" + +ENTRYPOINT [ "dotnet-monitor" ] +CMD [ "collect", "--urls", "https://+:52323", "--metricUrls", "http://+:52325" ] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/monitor/8.0/cbl-mariner-distroless/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/monitor/8.0/cbl-mariner-distroless/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..dc70745927 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/monitor/8.0/cbl-mariner-distroless/amd64/Dockerfile.verified.noextension @@ -0,0 +1,32 @@ +ARG REPO=mcr.microsoft.com/dotnet/monitor/base + +# Installer image +FROM mcr.microsoft.com/cbl-mariner/base/core:2.0 AS installer + +RUN tdnf install -y \ + ca-certificates \ + gzip \ + tar \ + && tdnf clean all + +# Retrieve .NET Monitor extensions +RUN dotnet_monitor_extension_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output dotnet-monitor-egress-azureblobstorage.tar.gz "https://builds.dotnet.microsoft.com/dotnet/diagnostics/monitor/$dotnet_monitor_extension_version/dotnet-monitor-egress-azureblobstorage-$dotnet_monitor_extension_version-linux-x64.tar.gz" \ + && dotnet_monitor_extension_sha512='{sha512_placeholder}' \ + && echo "$dotnet_monitor_extension_sha512 dotnet-monitor-egress-azureblobstorage.tar.gz" | sha512sum -c - \ + \ + && curl -u :$ACCESSTOKEN --basic -fSL --output dotnet-monitor-egress-s3storage.tar.gz "https://builds.dotnet.microsoft.com/dotnet/diagnostics/monitor/$dotnet_monitor_extension_version/dotnet-monitor-egress-s3storage-$dotnet_monitor_extension_version-linux-x64.tar.gz" \ + && dotnet_monitor_extension_sha512='{sha512_placeholder}' \ + && echo "$dotnet_monitor_extension_sha512 dotnet-monitor-egress-s3storage.tar.gz" | sha512sum -c - \ + \ + && mkdir -p /app \ + && tar -oxzf dotnet-monitor-egress-azureblobstorage.tar.gz -C /app \ + && rm dotnet-monitor-egress-azureblobstorage.tar.gz \ + && tar -oxzf dotnet-monitor-egress-s3storage.tar.gz -C /app \ + && rm dotnet-monitor-egress-s3storage.tar.gz + + +# .NET Monitor image +FROM $REPO:0.0.0-cbl-mariner-distroless-amd64 + +COPY --from=installer ["/app", "/app"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/monitor/8.0/cbl-mariner-distroless/arm64v8/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/monitor/8.0/cbl-mariner-distroless/arm64v8/Dockerfile.verified.noextension new file mode 100644 index 0000000000..49ae8c9537 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/monitor/8.0/cbl-mariner-distroless/arm64v8/Dockerfile.verified.noextension @@ -0,0 +1,32 @@ +ARG REPO=mcr.microsoft.com/dotnet/monitor/base + +# Installer image +FROM mcr.microsoft.com/cbl-mariner/base/core:2.0 AS installer + +RUN tdnf install -y \ + ca-certificates \ + gzip \ + tar \ + && tdnf clean all + +# Retrieve .NET Monitor extensions +RUN dotnet_monitor_extension_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output dotnet-monitor-egress-azureblobstorage.tar.gz "https://builds.dotnet.microsoft.com/dotnet/diagnostics/monitor/$dotnet_monitor_extension_version/dotnet-monitor-egress-azureblobstorage-$dotnet_monitor_extension_version-linux-arm64.tar.gz" \ + && dotnet_monitor_extension_sha512='{sha512_placeholder}' \ + && echo "$dotnet_monitor_extension_sha512 dotnet-monitor-egress-azureblobstorage.tar.gz" | sha512sum -c - \ + \ + && curl -u :$ACCESSTOKEN --basic -fSL --output dotnet-monitor-egress-s3storage.tar.gz "https://builds.dotnet.microsoft.com/dotnet/diagnostics/monitor/$dotnet_monitor_extension_version/dotnet-monitor-egress-s3storage-$dotnet_monitor_extension_version-linux-arm64.tar.gz" \ + && dotnet_monitor_extension_sha512='{sha512_placeholder}' \ + && echo "$dotnet_monitor_extension_sha512 dotnet-monitor-egress-s3storage.tar.gz" | sha512sum -c - \ + \ + && mkdir -p /app \ + && tar -oxzf dotnet-monitor-egress-azureblobstorage.tar.gz -C /app \ + && rm dotnet-monitor-egress-azureblobstorage.tar.gz \ + && tar -oxzf dotnet-monitor-egress-s3storage.tar.gz -C /app \ + && rm dotnet-monitor-egress-s3storage.tar.gz + + +# .NET Monitor image +FROM $REPO:0.0.0-cbl-mariner-distroless-arm64v8 + +COPY --from=installer ["/app", "/app"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/monitor/8.0/ubuntu-chiseled/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/monitor/8.0/ubuntu-chiseled/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..38df5fd407 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/monitor/8.0/ubuntu-chiseled/amd64/Dockerfile.verified.noextension @@ -0,0 +1,26 @@ +ARG REPO=mcr.microsoft.com/dotnet/monitor/base + +# Installer image +FROM amd64/buildpack-deps:jammy-curl AS installer + +# Retrieve .NET Monitor extensions +RUN dotnet_monitor_extension_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output dotnet-monitor-egress-azureblobstorage.tar.gz "https://builds.dotnet.microsoft.com/dotnet/diagnostics/monitor/$dotnet_monitor_extension_version/dotnet-monitor-egress-azureblobstorage-$dotnet_monitor_extension_version-linux-x64.tar.gz" \ + && dotnet_monitor_extension_sha512='{sha512_placeholder}' \ + && echo "$dotnet_monitor_extension_sha512 dotnet-monitor-egress-azureblobstorage.tar.gz" | sha512sum -c - \ + \ + && curl -u :$ACCESSTOKEN --basic -fSL --output dotnet-monitor-egress-s3storage.tar.gz "https://builds.dotnet.microsoft.com/dotnet/diagnostics/monitor/$dotnet_monitor_extension_version/dotnet-monitor-egress-s3storage-$dotnet_monitor_extension_version-linux-x64.tar.gz" \ + && dotnet_monitor_extension_sha512='{sha512_placeholder}' \ + && echo "$dotnet_monitor_extension_sha512 dotnet-monitor-egress-s3storage.tar.gz" | sha512sum -c - \ + \ + && mkdir -p /app \ + && tar -oxzf dotnet-monitor-egress-azureblobstorage.tar.gz -C /app \ + && rm dotnet-monitor-egress-azureblobstorage.tar.gz \ + && tar -oxzf dotnet-monitor-egress-s3storage.tar.gz -C /app \ + && rm dotnet-monitor-egress-s3storage.tar.gz + + +# .NET Monitor image +FROM $REPO:0.0.0-ubuntu-chiseled-amd64 + +COPY --from=installer ["/app", "/app"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/monitor/8.0/ubuntu-chiseled/arm64v8/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/monitor/8.0/ubuntu-chiseled/arm64v8/Dockerfile.verified.noextension new file mode 100644 index 0000000000..65a4b90422 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/monitor/8.0/ubuntu-chiseled/arm64v8/Dockerfile.verified.noextension @@ -0,0 +1,26 @@ +ARG REPO=mcr.microsoft.com/dotnet/monitor/base + +# Installer image +FROM arm64v8/buildpack-deps:jammy-curl AS installer + +# Retrieve .NET Monitor extensions +RUN dotnet_monitor_extension_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output dotnet-monitor-egress-azureblobstorage.tar.gz "https://builds.dotnet.microsoft.com/dotnet/diagnostics/monitor/$dotnet_monitor_extension_version/dotnet-monitor-egress-azureblobstorage-$dotnet_monitor_extension_version-linux-arm64.tar.gz" \ + && dotnet_monitor_extension_sha512='{sha512_placeholder}' \ + && echo "$dotnet_monitor_extension_sha512 dotnet-monitor-egress-azureblobstorage.tar.gz" | sha512sum -c - \ + \ + && curl -u :$ACCESSTOKEN --basic -fSL --output dotnet-monitor-egress-s3storage.tar.gz "https://builds.dotnet.microsoft.com/dotnet/diagnostics/monitor/$dotnet_monitor_extension_version/dotnet-monitor-egress-s3storage-$dotnet_monitor_extension_version-linux-arm64.tar.gz" \ + && dotnet_monitor_extension_sha512='{sha512_placeholder}' \ + && echo "$dotnet_monitor_extension_sha512 dotnet-monitor-egress-s3storage.tar.gz" | sha512sum -c - \ + \ + && mkdir -p /app \ + && tar -oxzf dotnet-monitor-egress-azureblobstorage.tar.gz -C /app \ + && rm dotnet-monitor-egress-azureblobstorage.tar.gz \ + && tar -oxzf dotnet-monitor-egress-s3storage.tar.gz -C /app \ + && rm dotnet-monitor-egress-s3storage.tar.gz + + +# .NET Monitor image +FROM $REPO:0.0.0-ubuntu-chiseled-arm64v8 + +COPY --from=installer ["/app", "/app"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/monitor/8.1/cbl-mariner-distroless/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/monitor/8.1/cbl-mariner-distroless/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..d6070ea536 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/monitor/8.1/cbl-mariner-distroless/amd64/Dockerfile.verified.noextension @@ -0,0 +1,32 @@ +ARG REPO=mcr.microsoft.com/dotnet/monitor/base + +# Installer image +FROM mcr.microsoft.com/cbl-mariner/base/core:2.0 AS installer + +RUN tdnf install -y \ + ca-certificates \ + gzip \ + tar \ + && tdnf clean all + +# Retrieve .NET Monitor extensions +RUN dotnet_monitor_extension_version=0.0.0-alpha.0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output dotnet-monitor-egress-azureblobstorage.tar.gz "https://ci.dot.net/public/diagnostics/monitor/$dotnet_monitor_extension_version/dotnet-monitor-egress-azureblobstorage-$dotnet_monitor_extension_version-linux-x64.tar.gz" \ + && dotnet_monitor_extension_sha512='{sha512_placeholder}' \ + && echo "$dotnet_monitor_extension_sha512 dotnet-monitor-egress-azureblobstorage.tar.gz" | sha512sum -c - \ + \ + && curl -u :$ACCESSTOKEN --basic -fSL --output dotnet-monitor-egress-s3storage.tar.gz "https://ci.dot.net/public/diagnostics/monitor/$dotnet_monitor_extension_version/dotnet-monitor-egress-s3storage-$dotnet_monitor_extension_version-linux-x64.tar.gz" \ + && dotnet_monitor_extension_sha512='{sha512_placeholder}' \ + && echo "$dotnet_monitor_extension_sha512 dotnet-monitor-egress-s3storage.tar.gz" | sha512sum -c - \ + \ + && mkdir -p /app \ + && tar -oxzf dotnet-monitor-egress-azureblobstorage.tar.gz -C /app \ + && rm dotnet-monitor-egress-azureblobstorage.tar.gz \ + && tar -oxzf dotnet-monitor-egress-s3storage.tar.gz -C /app \ + && rm dotnet-monitor-egress-s3storage.tar.gz + + +# .NET Monitor image +FROM $REPO:0.0.0-alpha.1-cbl-mariner-distroless-amd64 + +COPY --from=installer ["/app", "/app"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/monitor/8.1/cbl-mariner-distroless/arm64v8/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/monitor/8.1/cbl-mariner-distroless/arm64v8/Dockerfile.verified.noextension new file mode 100644 index 0000000000..20237c5dd0 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/monitor/8.1/cbl-mariner-distroless/arm64v8/Dockerfile.verified.noextension @@ -0,0 +1,32 @@ +ARG REPO=mcr.microsoft.com/dotnet/monitor/base + +# Installer image +FROM mcr.microsoft.com/cbl-mariner/base/core:2.0 AS installer + +RUN tdnf install -y \ + ca-certificates \ + gzip \ + tar \ + && tdnf clean all + +# Retrieve .NET Monitor extensions +RUN dotnet_monitor_extension_version=0.0.0-alpha.0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output dotnet-monitor-egress-azureblobstorage.tar.gz "https://ci.dot.net/public/diagnostics/monitor/$dotnet_monitor_extension_version/dotnet-monitor-egress-azureblobstorage-$dotnet_monitor_extension_version-linux-arm64.tar.gz" \ + && dotnet_monitor_extension_sha512='{sha512_placeholder}' \ + && echo "$dotnet_monitor_extension_sha512 dotnet-monitor-egress-azureblobstorage.tar.gz" | sha512sum -c - \ + \ + && curl -u :$ACCESSTOKEN --basic -fSL --output dotnet-monitor-egress-s3storage.tar.gz "https://ci.dot.net/public/diagnostics/monitor/$dotnet_monitor_extension_version/dotnet-monitor-egress-s3storage-$dotnet_monitor_extension_version-linux-arm64.tar.gz" \ + && dotnet_monitor_extension_sha512='{sha512_placeholder}' \ + && echo "$dotnet_monitor_extension_sha512 dotnet-monitor-egress-s3storage.tar.gz" | sha512sum -c - \ + \ + && mkdir -p /app \ + && tar -oxzf dotnet-monitor-egress-azureblobstorage.tar.gz -C /app \ + && rm dotnet-monitor-egress-azureblobstorage.tar.gz \ + && tar -oxzf dotnet-monitor-egress-s3storage.tar.gz -C /app \ + && rm dotnet-monitor-egress-s3storage.tar.gz + + +# .NET Monitor image +FROM $REPO:0.0.0-alpha.1-cbl-mariner-distroless-arm64v8 + +COPY --from=installer ["/app", "/app"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/monitor/8.1/ubuntu-chiseled/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/monitor/8.1/ubuntu-chiseled/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..5490265eb0 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/monitor/8.1/ubuntu-chiseled/amd64/Dockerfile.verified.noextension @@ -0,0 +1,26 @@ +ARG REPO=mcr.microsoft.com/dotnet/monitor/base + +# Installer image +FROM amd64/buildpack-deps:jammy-curl AS installer + +# Retrieve .NET Monitor extensions +RUN dotnet_monitor_extension_version=0.0.0-alpha.0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output dotnet-monitor-egress-azureblobstorage.tar.gz "https://ci.dot.net/public/diagnostics/monitor/$dotnet_monitor_extension_version/dotnet-monitor-egress-azureblobstorage-$dotnet_monitor_extension_version-linux-x64.tar.gz" \ + && dotnet_monitor_extension_sha512='{sha512_placeholder}' \ + && echo "$dotnet_monitor_extension_sha512 dotnet-monitor-egress-azureblobstorage.tar.gz" | sha512sum -c - \ + \ + && curl -u :$ACCESSTOKEN --basic -fSL --output dotnet-monitor-egress-s3storage.tar.gz "https://ci.dot.net/public/diagnostics/monitor/$dotnet_monitor_extension_version/dotnet-monitor-egress-s3storage-$dotnet_monitor_extension_version-linux-x64.tar.gz" \ + && dotnet_monitor_extension_sha512='{sha512_placeholder}' \ + && echo "$dotnet_monitor_extension_sha512 dotnet-monitor-egress-s3storage.tar.gz" | sha512sum -c - \ + \ + && mkdir -p /app \ + && tar -oxzf dotnet-monitor-egress-azureblobstorage.tar.gz -C /app \ + && rm dotnet-monitor-egress-azureblobstorage.tar.gz \ + && tar -oxzf dotnet-monitor-egress-s3storage.tar.gz -C /app \ + && rm dotnet-monitor-egress-s3storage.tar.gz + + +# .NET Monitor image +FROM $REPO:0.0.0-alpha.1-ubuntu-chiseled-amd64 + +COPY --from=installer ["/app", "/app"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/monitor/8.1/ubuntu-chiseled/arm64v8/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/monitor/8.1/ubuntu-chiseled/arm64v8/Dockerfile.verified.noextension new file mode 100644 index 0000000000..3f5fb4f98e --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/monitor/8.1/ubuntu-chiseled/arm64v8/Dockerfile.verified.noextension @@ -0,0 +1,26 @@ +ARG REPO=mcr.microsoft.com/dotnet/monitor/base + +# Installer image +FROM arm64v8/buildpack-deps:jammy-curl AS installer + +# Retrieve .NET Monitor extensions +RUN dotnet_monitor_extension_version=0.0.0-alpha.0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output dotnet-monitor-egress-azureblobstorage.tar.gz "https://ci.dot.net/public/diagnostics/monitor/$dotnet_monitor_extension_version/dotnet-monitor-egress-azureblobstorage-$dotnet_monitor_extension_version-linux-arm64.tar.gz" \ + && dotnet_monitor_extension_sha512='{sha512_placeholder}' \ + && echo "$dotnet_monitor_extension_sha512 dotnet-monitor-egress-azureblobstorage.tar.gz" | sha512sum -c - \ + \ + && curl -u :$ACCESSTOKEN --basic -fSL --output dotnet-monitor-egress-s3storage.tar.gz "https://ci.dot.net/public/diagnostics/monitor/$dotnet_monitor_extension_version/dotnet-monitor-egress-s3storage-$dotnet_monitor_extension_version-linux-arm64.tar.gz" \ + && dotnet_monitor_extension_sha512='{sha512_placeholder}' \ + && echo "$dotnet_monitor_extension_sha512 dotnet-monitor-egress-s3storage.tar.gz" | sha512sum -c - \ + \ + && mkdir -p /app \ + && tar -oxzf dotnet-monitor-egress-azureblobstorage.tar.gz -C /app \ + && rm dotnet-monitor-egress-azureblobstorage.tar.gz \ + && tar -oxzf dotnet-monitor-egress-s3storage.tar.gz -C /app \ + && rm dotnet-monitor-egress-s3storage.tar.gz + + +# .NET Monitor image +FROM $REPO:0.0.0-alpha.1-ubuntu-chiseled-arm64v8 + +COPY --from=installer ["/app", "/app"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/monitor/9.0/azurelinux-distroless/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/monitor/9.0/azurelinux-distroless/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..5c5d2606c2 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/monitor/9.0/azurelinux-distroless/amd64/Dockerfile.verified.noextension @@ -0,0 +1,32 @@ +ARG REPO=mcr.microsoft.com/dotnet/monitor/base + +# Installer image +FROM mcr.microsoft.com/azurelinux/base/core:3.0 AS installer + +RUN tdnf install -y \ + ca-certificates \ + gzip \ + tar \ + && tdnf clean all + +# Retrieve .NET Monitor extensions +RUN dotnet_monitor_extension_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output dotnet-monitor-egress-azureblobstorage.tar.gz "https://builds.dotnet.microsoft.com/dotnet/diagnostics/monitor/$dotnet_monitor_extension_version/dotnet-monitor-egress-azureblobstorage-$dotnet_monitor_extension_version-linux-x64.tar.gz" \ + && dotnet_monitor_extension_sha512='{sha512_placeholder}' \ + && echo "$dotnet_monitor_extension_sha512 dotnet-monitor-egress-azureblobstorage.tar.gz" | sha512sum -c - \ + \ + && curl -u :$ACCESSTOKEN --basic -fSL --output dotnet-monitor-egress-s3storage.tar.gz "https://builds.dotnet.microsoft.com/dotnet/diagnostics/monitor/$dotnet_monitor_extension_version/dotnet-monitor-egress-s3storage-$dotnet_monitor_extension_version-linux-x64.tar.gz" \ + && dotnet_monitor_extension_sha512='{sha512_placeholder}' \ + && echo "$dotnet_monitor_extension_sha512 dotnet-monitor-egress-s3storage.tar.gz" | sha512sum -c - \ + \ + && mkdir -p /app \ + && tar -oxzf dotnet-monitor-egress-azureblobstorage.tar.gz -C /app \ + && rm dotnet-monitor-egress-azureblobstorage.tar.gz \ + && tar -oxzf dotnet-monitor-egress-s3storage.tar.gz -C /app \ + && rm dotnet-monitor-egress-s3storage.tar.gz + + +# .NET Monitor image +FROM $REPO:0.0.0-amd64 + +COPY --from=installer ["/app", "/app"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/monitor/9.0/azurelinux-distroless/arm64v8/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/monitor/9.0/azurelinux-distroless/arm64v8/Dockerfile.verified.noextension new file mode 100644 index 0000000000..143b3f3bf3 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/monitor/9.0/azurelinux-distroless/arm64v8/Dockerfile.verified.noextension @@ -0,0 +1,32 @@ +ARG REPO=mcr.microsoft.com/dotnet/monitor/base + +# Installer image +FROM mcr.microsoft.com/azurelinux/base/core:3.0 AS installer + +RUN tdnf install -y \ + ca-certificates \ + gzip \ + tar \ + && tdnf clean all + +# Retrieve .NET Monitor extensions +RUN dotnet_monitor_extension_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output dotnet-monitor-egress-azureblobstorage.tar.gz "https://builds.dotnet.microsoft.com/dotnet/diagnostics/monitor/$dotnet_monitor_extension_version/dotnet-monitor-egress-azureblobstorage-$dotnet_monitor_extension_version-linux-arm64.tar.gz" \ + && dotnet_monitor_extension_sha512='{sha512_placeholder}' \ + && echo "$dotnet_monitor_extension_sha512 dotnet-monitor-egress-azureblobstorage.tar.gz" | sha512sum -c - \ + \ + && curl -u :$ACCESSTOKEN --basic -fSL --output dotnet-monitor-egress-s3storage.tar.gz "https://builds.dotnet.microsoft.com/dotnet/diagnostics/monitor/$dotnet_monitor_extension_version/dotnet-monitor-egress-s3storage-$dotnet_monitor_extension_version-linux-arm64.tar.gz" \ + && dotnet_monitor_extension_sha512='{sha512_placeholder}' \ + && echo "$dotnet_monitor_extension_sha512 dotnet-monitor-egress-s3storage.tar.gz" | sha512sum -c - \ + \ + && mkdir -p /app \ + && tar -oxzf dotnet-monitor-egress-azureblobstorage.tar.gz -C /app \ + && rm dotnet-monitor-egress-azureblobstorage.tar.gz \ + && tar -oxzf dotnet-monitor-egress-s3storage.tar.gz -C /app \ + && rm dotnet-monitor-egress-s3storage.tar.gz + + +# .NET Monitor image +FROM $REPO:0.0.0-arm64v8 + +COPY --from=installer ["/app", "/app"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/alpine3.20-aot/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/alpine3.20-aot/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..a41ee6a055 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/alpine3.20-aot/amd64/Dockerfile.verified.noextension @@ -0,0 +1,47 @@ +FROM amd64/alpine:3.20 AS base + +ENV \ + # UID of the non-root user 'app' + APP_UID=1654 \ + # Configure web servers to bind to port 8080 when present + ASPNETCORE_HTTP_PORTS=8080 \ + # Enable detection of running in a container + DOTNET_RUNNING_IN_CONTAINER=true \ + # Set the invariant mode since ICU package isn't included (see https://github.com/dotnet/announcements/issues/20) + DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=true + +RUN apk add --upgrade --no-cache \ + ca-certificates-bundle \ + \ + # .NET dependencies + libgcc \ + libssl3 \ + zlib + + +FROM base AS installer + +RUN apk add --upgrade --no-cache \ + +# Create a non-root user and group +RUN addgroup \ + --gid=$APP_UID \ + app \ + && adduser \ + --uid=$APP_UID \ + --ingroup=app \ + --no-create-home \ + --disabled-password \ + app \ + && mkdir -p "/staging/etc" \ + # Copy user/group info to staging + && cp /etc/passwd /staging/etc/passwd \ + && cp /etc/group /staging/etc/group + + +# Final image +FROM base + +COPY --from=installer /staging/ / + +RUN install -d -m 0755 -o $APP_UID -g $APP_UID "/home/app" diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/alpine3.20-aot/arm32v7/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/alpine3.20-aot/arm32v7/Dockerfile.verified.noextension new file mode 100644 index 0000000000..b96ed6e46d --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/alpine3.20-aot/arm32v7/Dockerfile.verified.noextension @@ -0,0 +1,47 @@ +FROM arm32v7/alpine:3.20 AS base + +ENV \ + # UID of the non-root user 'app' + APP_UID=1654 \ + # Configure web servers to bind to port 8080 when present + ASPNETCORE_HTTP_PORTS=8080 \ + # Enable detection of running in a container + DOTNET_RUNNING_IN_CONTAINER=true \ + # Set the invariant mode since ICU package isn't included (see https://github.com/dotnet/announcements/issues/20) + DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=true + +RUN apk add --upgrade --no-cache \ + ca-certificates-bundle \ + \ + # .NET dependencies + libgcc \ + libssl3 \ + zlib + + +FROM base AS installer + +RUN apk add --upgrade --no-cache \ + +# Create a non-root user and group +RUN addgroup \ + --gid=$APP_UID \ + app \ + && adduser \ + --uid=$APP_UID \ + --ingroup=app \ + --no-create-home \ + --disabled-password \ + app \ + && mkdir -p "/staging/etc" \ + # Copy user/group info to staging + && cp /etc/passwd /staging/etc/passwd \ + && cp /etc/group /staging/etc/group + + +# Final image +FROM base + +COPY --from=installer /staging/ / + +RUN install -d -m 0755 -o $APP_UID -g $APP_UID "/home/app" diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/alpine3.20-aot/arm64v8/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/alpine3.20-aot/arm64v8/Dockerfile.verified.noextension new file mode 100644 index 0000000000..b194539658 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/alpine3.20-aot/arm64v8/Dockerfile.verified.noextension @@ -0,0 +1,47 @@ +FROM arm64v8/alpine:3.20 AS base + +ENV \ + # UID of the non-root user 'app' + APP_UID=1654 \ + # Configure web servers to bind to port 8080 when present + ASPNETCORE_HTTP_PORTS=8080 \ + # Enable detection of running in a container + DOTNET_RUNNING_IN_CONTAINER=true \ + # Set the invariant mode since ICU package isn't included (see https://github.com/dotnet/announcements/issues/20) + DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=true + +RUN apk add --upgrade --no-cache \ + ca-certificates-bundle \ + \ + # .NET dependencies + libgcc \ + libssl3 \ + zlib + + +FROM base AS installer + +RUN apk add --upgrade --no-cache \ + +# Create a non-root user and group +RUN addgroup \ + --gid=$APP_UID \ + app \ + && adduser \ + --uid=$APP_UID \ + --ingroup=app \ + --no-create-home \ + --disabled-password \ + app \ + && mkdir -p "/staging/etc" \ + # Copy user/group info to staging + && cp /etc/passwd /staging/etc/passwd \ + && cp /etc/group /staging/etc/group + + +# Final image +FROM base + +COPY --from=installer /staging/ / + +RUN install -d -m 0755 -o $APP_UID -g $APP_UID "/home/app" diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/alpine3.20-extra/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/alpine3.20-extra/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..05f1087e7f --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/alpine3.20-extra/amd64/Dockerfile.verified.noextension @@ -0,0 +1,49 @@ +FROM amd64/alpine:3.20 AS base + +ENV \ + # UID of the non-root user 'app' + APP_UID=1654 \ + # Configure web servers to bind to port 8080 when present + ASPNETCORE_HTTP_PORTS=8080 \ + # Enable detection of running in a container + DOTNET_RUNNING_IN_CONTAINER=true + +RUN apk add --upgrade --no-cache \ + ca-certificates-bundle \ + \ + # .NET dependencies + icu-data-full \ + icu-libs \ + libgcc \ + libssl3 \ + libstdc++ \ + tzdata \ + zlib + + +FROM base AS installer + +RUN apk add --upgrade --no-cache \ + +# Create a non-root user and group +RUN addgroup \ + --gid=$APP_UID \ + app \ + && adduser \ + --uid=$APP_UID \ + --ingroup=app \ + --no-create-home \ + --disabled-password \ + app \ + && mkdir -p "/staging/etc" \ + # Copy user/group info to staging + && cp /etc/passwd /staging/etc/passwd \ + && cp /etc/group /staging/etc/group + + +# Final image +FROM base + +COPY --from=installer /staging/ / + +RUN install -d -m 0755 -o $APP_UID -g $APP_UID "/home/app" diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/alpine3.20-extra/arm32v7/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/alpine3.20-extra/arm32v7/Dockerfile.verified.noextension new file mode 100644 index 0000000000..b8909f4e08 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/alpine3.20-extra/arm32v7/Dockerfile.verified.noextension @@ -0,0 +1,49 @@ +FROM arm32v7/alpine:3.20 AS base + +ENV \ + # UID of the non-root user 'app' + APP_UID=1654 \ + # Configure web servers to bind to port 8080 when present + ASPNETCORE_HTTP_PORTS=8080 \ + # Enable detection of running in a container + DOTNET_RUNNING_IN_CONTAINER=true + +RUN apk add --upgrade --no-cache \ + ca-certificates-bundle \ + \ + # .NET dependencies + icu-data-full \ + icu-libs \ + libgcc \ + libssl3 \ + libstdc++ \ + tzdata \ + zlib + + +FROM base AS installer + +RUN apk add --upgrade --no-cache \ + +# Create a non-root user and group +RUN addgroup \ + --gid=$APP_UID \ + app \ + && adduser \ + --uid=$APP_UID \ + --ingroup=app \ + --no-create-home \ + --disabled-password \ + app \ + && mkdir -p "/staging/etc" \ + # Copy user/group info to staging + && cp /etc/passwd /staging/etc/passwd \ + && cp /etc/group /staging/etc/group + + +# Final image +FROM base + +COPY --from=installer /staging/ / + +RUN install -d -m 0755 -o $APP_UID -g $APP_UID "/home/app" diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/alpine3.20-extra/arm64v8/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/alpine3.20-extra/arm64v8/Dockerfile.verified.noextension new file mode 100644 index 0000000000..0d14e5362c --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/alpine3.20-extra/arm64v8/Dockerfile.verified.noextension @@ -0,0 +1,49 @@ +FROM arm64v8/alpine:3.20 AS base + +ENV \ + # UID of the non-root user 'app' + APP_UID=1654 \ + # Configure web servers to bind to port 8080 when present + ASPNETCORE_HTTP_PORTS=8080 \ + # Enable detection of running in a container + DOTNET_RUNNING_IN_CONTAINER=true + +RUN apk add --upgrade --no-cache \ + ca-certificates-bundle \ + \ + # .NET dependencies + icu-data-full \ + icu-libs \ + libgcc \ + libssl3 \ + libstdc++ \ + tzdata \ + zlib + + +FROM base AS installer + +RUN apk add --upgrade --no-cache \ + +# Create a non-root user and group +RUN addgroup \ + --gid=$APP_UID \ + app \ + && adduser \ + --uid=$APP_UID \ + --ingroup=app \ + --no-create-home \ + --disabled-password \ + app \ + && mkdir -p "/staging/etc" \ + # Copy user/group info to staging + && cp /etc/passwd /staging/etc/passwd \ + && cp /etc/group /staging/etc/group + + +# Final image +FROM base + +COPY --from=installer /staging/ / + +RUN install -d -m 0755 -o $APP_UID -g $APP_UID "/home/app" diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/alpine3.20/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/alpine3.20/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..4647aeb38f --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/alpine3.20/amd64/Dockerfile.verified.noextension @@ -0,0 +1,48 @@ +FROM amd64/alpine:3.20 AS base + +ENV \ + # UID of the non-root user 'app' + APP_UID=1654 \ + # Configure web servers to bind to port 8080 when present + ASPNETCORE_HTTP_PORTS=8080 \ + # Enable detection of running in a container + DOTNET_RUNNING_IN_CONTAINER=true \ + # Set the invariant mode since ICU package isn't included (see https://github.com/dotnet/announcements/issues/20) + DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=true + +RUN apk add --upgrade --no-cache \ + ca-certificates-bundle \ + \ + # .NET dependencies + libgcc \ + libssl3 \ + libstdc++ \ + zlib + + +FROM base AS installer + +RUN apk add --upgrade --no-cache \ + +# Create a non-root user and group +RUN addgroup \ + --gid=$APP_UID \ + app \ + && adduser \ + --uid=$APP_UID \ + --ingroup=app \ + --no-create-home \ + --disabled-password \ + app \ + && mkdir -p "/staging/etc" \ + # Copy user/group info to staging + && cp /etc/passwd /staging/etc/passwd \ + && cp /etc/group /staging/etc/group + + +# Final image +FROM base + +COPY --from=installer /staging/ / + +RUN install -d -m 0755 -o $APP_UID -g $APP_UID "/home/app" diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/alpine3.20/arm32v7/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/alpine3.20/arm32v7/Dockerfile.verified.noextension new file mode 100644 index 0000000000..3c1663703c --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/alpine3.20/arm32v7/Dockerfile.verified.noextension @@ -0,0 +1,48 @@ +FROM arm32v7/alpine:3.20 AS base + +ENV \ + # UID of the non-root user 'app' + APP_UID=1654 \ + # Configure web servers to bind to port 8080 when present + ASPNETCORE_HTTP_PORTS=8080 \ + # Enable detection of running in a container + DOTNET_RUNNING_IN_CONTAINER=true \ + # Set the invariant mode since ICU package isn't included (see https://github.com/dotnet/announcements/issues/20) + DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=true + +RUN apk add --upgrade --no-cache \ + ca-certificates-bundle \ + \ + # .NET dependencies + libgcc \ + libssl3 \ + libstdc++ \ + zlib + + +FROM base AS installer + +RUN apk add --upgrade --no-cache \ + +# Create a non-root user and group +RUN addgroup \ + --gid=$APP_UID \ + app \ + && adduser \ + --uid=$APP_UID \ + --ingroup=app \ + --no-create-home \ + --disabled-password \ + app \ + && mkdir -p "/staging/etc" \ + # Copy user/group info to staging + && cp /etc/passwd /staging/etc/passwd \ + && cp /etc/group /staging/etc/group + + +# Final image +FROM base + +COPY --from=installer /staging/ / + +RUN install -d -m 0755 -o $APP_UID -g $APP_UID "/home/app" diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/alpine3.20/arm64v8/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/alpine3.20/arm64v8/Dockerfile.verified.noextension new file mode 100644 index 0000000000..1a57182e03 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/alpine3.20/arm64v8/Dockerfile.verified.noextension @@ -0,0 +1,48 @@ +FROM arm64v8/alpine:3.20 AS base + +ENV \ + # UID of the non-root user 'app' + APP_UID=1654 \ + # Configure web servers to bind to port 8080 when present + ASPNETCORE_HTTP_PORTS=8080 \ + # Enable detection of running in a container + DOTNET_RUNNING_IN_CONTAINER=true \ + # Set the invariant mode since ICU package isn't included (see https://github.com/dotnet/announcements/issues/20) + DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=true + +RUN apk add --upgrade --no-cache \ + ca-certificates-bundle \ + \ + # .NET dependencies + libgcc \ + libssl3 \ + libstdc++ \ + zlib + + +FROM base AS installer + +RUN apk add --upgrade --no-cache \ + +# Create a non-root user and group +RUN addgroup \ + --gid=$APP_UID \ + app \ + && adduser \ + --uid=$APP_UID \ + --ingroup=app \ + --no-create-home \ + --disabled-password \ + app \ + && mkdir -p "/staging/etc" \ + # Copy user/group info to staging + && cp /etc/passwd /staging/etc/passwd \ + && cp /etc/group /staging/etc/group + + +# Final image +FROM base + +COPY --from=installer /staging/ / + +RUN install -d -m 0755 -o $APP_UID -g $APP_UID "/home/app" diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/alpine3.21-aot/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/alpine3.21-aot/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..c03be98037 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/alpine3.21-aot/amd64/Dockerfile.verified.noextension @@ -0,0 +1,47 @@ +FROM amd64/alpine:3.21 AS base + +ENV \ + # UID of the non-root user 'app' + APP_UID=1654 \ + # Configure web servers to bind to port 8080 when present + ASPNETCORE_HTTP_PORTS=8080 \ + # Enable detection of running in a container + DOTNET_RUNNING_IN_CONTAINER=true \ + # Set the invariant mode since ICU package isn't included (see https://github.com/dotnet/announcements/issues/20) + DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=true + +RUN apk add --upgrade --no-cache \ + ca-certificates-bundle \ + \ + # .NET dependencies + libgcc \ + libssl3 \ + zlib + + +FROM base AS installer + +RUN apk add --upgrade --no-cache \ + +# Create a non-root user and group +RUN addgroup \ + --gid=$APP_UID \ + app \ + && adduser \ + --uid=$APP_UID \ + --ingroup=app \ + --no-create-home \ + --disabled-password \ + app \ + && mkdir -p "/staging/etc" \ + # Copy user/group info to staging + && cp /etc/passwd /staging/etc/passwd \ + && cp /etc/group /staging/etc/group + + +# Final image +FROM base + +COPY --from=installer /staging/ / + +RUN install -d -m 0755 -o $APP_UID -g $APP_UID "/home/app" diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/alpine3.21-aot/arm32v7/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/alpine3.21-aot/arm32v7/Dockerfile.verified.noextension new file mode 100644 index 0000000000..bfbd83e059 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/alpine3.21-aot/arm32v7/Dockerfile.verified.noextension @@ -0,0 +1,47 @@ +FROM arm32v7/alpine:3.21 AS base + +ENV \ + # UID of the non-root user 'app' + APP_UID=1654 \ + # Configure web servers to bind to port 8080 when present + ASPNETCORE_HTTP_PORTS=8080 \ + # Enable detection of running in a container + DOTNET_RUNNING_IN_CONTAINER=true \ + # Set the invariant mode since ICU package isn't included (see https://github.com/dotnet/announcements/issues/20) + DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=true + +RUN apk add --upgrade --no-cache \ + ca-certificates-bundle \ + \ + # .NET dependencies + libgcc \ + libssl3 \ + zlib + + +FROM base AS installer + +RUN apk add --upgrade --no-cache \ + +# Create a non-root user and group +RUN addgroup \ + --gid=$APP_UID \ + app \ + && adduser \ + --uid=$APP_UID \ + --ingroup=app \ + --no-create-home \ + --disabled-password \ + app \ + && mkdir -p "/staging/etc" \ + # Copy user/group info to staging + && cp /etc/passwd /staging/etc/passwd \ + && cp /etc/group /staging/etc/group + + +# Final image +FROM base + +COPY --from=installer /staging/ / + +RUN install -d -m 0755 -o $APP_UID -g $APP_UID "/home/app" diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/alpine3.21-aot/arm64v8/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/alpine3.21-aot/arm64v8/Dockerfile.verified.noextension new file mode 100644 index 0000000000..36f755ee9c --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/alpine3.21-aot/arm64v8/Dockerfile.verified.noextension @@ -0,0 +1,47 @@ +FROM arm64v8/alpine:3.21 AS base + +ENV \ + # UID of the non-root user 'app' + APP_UID=1654 \ + # Configure web servers to bind to port 8080 when present + ASPNETCORE_HTTP_PORTS=8080 \ + # Enable detection of running in a container + DOTNET_RUNNING_IN_CONTAINER=true \ + # Set the invariant mode since ICU package isn't included (see https://github.com/dotnet/announcements/issues/20) + DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=true + +RUN apk add --upgrade --no-cache \ + ca-certificates-bundle \ + \ + # .NET dependencies + libgcc \ + libssl3 \ + zlib + + +FROM base AS installer + +RUN apk add --upgrade --no-cache \ + +# Create a non-root user and group +RUN addgroup \ + --gid=$APP_UID \ + app \ + && adduser \ + --uid=$APP_UID \ + --ingroup=app \ + --no-create-home \ + --disabled-password \ + app \ + && mkdir -p "/staging/etc" \ + # Copy user/group info to staging + && cp /etc/passwd /staging/etc/passwd \ + && cp /etc/group /staging/etc/group + + +# Final image +FROM base + +COPY --from=installer /staging/ / + +RUN install -d -m 0755 -o $APP_UID -g $APP_UID "/home/app" diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/alpine3.21-extra/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/alpine3.21-extra/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..bd1f956323 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/alpine3.21-extra/amd64/Dockerfile.verified.noextension @@ -0,0 +1,49 @@ +FROM amd64/alpine:3.21 AS base + +ENV \ + # UID of the non-root user 'app' + APP_UID=1654 \ + # Configure web servers to bind to port 8080 when present + ASPNETCORE_HTTP_PORTS=8080 \ + # Enable detection of running in a container + DOTNET_RUNNING_IN_CONTAINER=true + +RUN apk add --upgrade --no-cache \ + ca-certificates-bundle \ + \ + # .NET dependencies + icu-data-full \ + icu-libs \ + libgcc \ + libssl3 \ + libstdc++ \ + tzdata \ + zlib + + +FROM base AS installer + +RUN apk add --upgrade --no-cache \ + +# Create a non-root user and group +RUN addgroup \ + --gid=$APP_UID \ + app \ + && adduser \ + --uid=$APP_UID \ + --ingroup=app \ + --no-create-home \ + --disabled-password \ + app \ + && mkdir -p "/staging/etc" \ + # Copy user/group info to staging + && cp /etc/passwd /staging/etc/passwd \ + && cp /etc/group /staging/etc/group + + +# Final image +FROM base + +COPY --from=installer /staging/ / + +RUN install -d -m 0755 -o $APP_UID -g $APP_UID "/home/app" diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/alpine3.21-extra/arm32v7/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/alpine3.21-extra/arm32v7/Dockerfile.verified.noextension new file mode 100644 index 0000000000..37351daedf --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/alpine3.21-extra/arm32v7/Dockerfile.verified.noextension @@ -0,0 +1,49 @@ +FROM arm32v7/alpine:3.21 AS base + +ENV \ + # UID of the non-root user 'app' + APP_UID=1654 \ + # Configure web servers to bind to port 8080 when present + ASPNETCORE_HTTP_PORTS=8080 \ + # Enable detection of running in a container + DOTNET_RUNNING_IN_CONTAINER=true + +RUN apk add --upgrade --no-cache \ + ca-certificates-bundle \ + \ + # .NET dependencies + icu-data-full \ + icu-libs \ + libgcc \ + libssl3 \ + libstdc++ \ + tzdata \ + zlib + + +FROM base AS installer + +RUN apk add --upgrade --no-cache \ + +# Create a non-root user and group +RUN addgroup \ + --gid=$APP_UID \ + app \ + && adduser \ + --uid=$APP_UID \ + --ingroup=app \ + --no-create-home \ + --disabled-password \ + app \ + && mkdir -p "/staging/etc" \ + # Copy user/group info to staging + && cp /etc/passwd /staging/etc/passwd \ + && cp /etc/group /staging/etc/group + + +# Final image +FROM base + +COPY --from=installer /staging/ / + +RUN install -d -m 0755 -o $APP_UID -g $APP_UID "/home/app" diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/alpine3.21-extra/arm64v8/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/alpine3.21-extra/arm64v8/Dockerfile.verified.noextension new file mode 100644 index 0000000000..bffc927059 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/alpine3.21-extra/arm64v8/Dockerfile.verified.noextension @@ -0,0 +1,49 @@ +FROM arm64v8/alpine:3.21 AS base + +ENV \ + # UID of the non-root user 'app' + APP_UID=1654 \ + # Configure web servers to bind to port 8080 when present + ASPNETCORE_HTTP_PORTS=8080 \ + # Enable detection of running in a container + DOTNET_RUNNING_IN_CONTAINER=true + +RUN apk add --upgrade --no-cache \ + ca-certificates-bundle \ + \ + # .NET dependencies + icu-data-full \ + icu-libs \ + libgcc \ + libssl3 \ + libstdc++ \ + tzdata \ + zlib + + +FROM base AS installer + +RUN apk add --upgrade --no-cache \ + +# Create a non-root user and group +RUN addgroup \ + --gid=$APP_UID \ + app \ + && adduser \ + --uid=$APP_UID \ + --ingroup=app \ + --no-create-home \ + --disabled-password \ + app \ + && mkdir -p "/staging/etc" \ + # Copy user/group info to staging + && cp /etc/passwd /staging/etc/passwd \ + && cp /etc/group /staging/etc/group + + +# Final image +FROM base + +COPY --from=installer /staging/ / + +RUN install -d -m 0755 -o $APP_UID -g $APP_UID "/home/app" diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/alpine3.21/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/alpine3.21/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..9e028b4aa6 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/alpine3.21/amd64/Dockerfile.verified.noextension @@ -0,0 +1,48 @@ +FROM amd64/alpine:3.21 AS base + +ENV \ + # UID of the non-root user 'app' + APP_UID=1654 \ + # Configure web servers to bind to port 8080 when present + ASPNETCORE_HTTP_PORTS=8080 \ + # Enable detection of running in a container + DOTNET_RUNNING_IN_CONTAINER=true \ + # Set the invariant mode since ICU package isn't included (see https://github.com/dotnet/announcements/issues/20) + DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=true + +RUN apk add --upgrade --no-cache \ + ca-certificates-bundle \ + \ + # .NET dependencies + libgcc \ + libssl3 \ + libstdc++ \ + zlib + + +FROM base AS installer + +RUN apk add --upgrade --no-cache \ + +# Create a non-root user and group +RUN addgroup \ + --gid=$APP_UID \ + app \ + && adduser \ + --uid=$APP_UID \ + --ingroup=app \ + --no-create-home \ + --disabled-password \ + app \ + && mkdir -p "/staging/etc" \ + # Copy user/group info to staging + && cp /etc/passwd /staging/etc/passwd \ + && cp /etc/group /staging/etc/group + + +# Final image +FROM base + +COPY --from=installer /staging/ / + +RUN install -d -m 0755 -o $APP_UID -g $APP_UID "/home/app" diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/alpine3.21/arm32v7/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/alpine3.21/arm32v7/Dockerfile.verified.noextension new file mode 100644 index 0000000000..a8d939f287 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/alpine3.21/arm32v7/Dockerfile.verified.noextension @@ -0,0 +1,48 @@ +FROM arm32v7/alpine:3.21 AS base + +ENV \ + # UID of the non-root user 'app' + APP_UID=1654 \ + # Configure web servers to bind to port 8080 when present + ASPNETCORE_HTTP_PORTS=8080 \ + # Enable detection of running in a container + DOTNET_RUNNING_IN_CONTAINER=true \ + # Set the invariant mode since ICU package isn't included (see https://github.com/dotnet/announcements/issues/20) + DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=true + +RUN apk add --upgrade --no-cache \ + ca-certificates-bundle \ + \ + # .NET dependencies + libgcc \ + libssl3 \ + libstdc++ \ + zlib + + +FROM base AS installer + +RUN apk add --upgrade --no-cache \ + +# Create a non-root user and group +RUN addgroup \ + --gid=$APP_UID \ + app \ + && adduser \ + --uid=$APP_UID \ + --ingroup=app \ + --no-create-home \ + --disabled-password \ + app \ + && mkdir -p "/staging/etc" \ + # Copy user/group info to staging + && cp /etc/passwd /staging/etc/passwd \ + && cp /etc/group /staging/etc/group + + +# Final image +FROM base + +COPY --from=installer /staging/ / + +RUN install -d -m 0755 -o $APP_UID -g $APP_UID "/home/app" diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/alpine3.21/arm64v8/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/alpine3.21/arm64v8/Dockerfile.verified.noextension new file mode 100644 index 0000000000..3d997e264a --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/alpine3.21/arm64v8/Dockerfile.verified.noextension @@ -0,0 +1,48 @@ +FROM arm64v8/alpine:3.21 AS base + +ENV \ + # UID of the non-root user 'app' + APP_UID=1654 \ + # Configure web servers to bind to port 8080 when present + ASPNETCORE_HTTP_PORTS=8080 \ + # Enable detection of running in a container + DOTNET_RUNNING_IN_CONTAINER=true \ + # Set the invariant mode since ICU package isn't included (see https://github.com/dotnet/announcements/issues/20) + DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=true + +RUN apk add --upgrade --no-cache \ + ca-certificates-bundle \ + \ + # .NET dependencies + libgcc \ + libssl3 \ + libstdc++ \ + zlib + + +FROM base AS installer + +RUN apk add --upgrade --no-cache \ + +# Create a non-root user and group +RUN addgroup \ + --gid=$APP_UID \ + app \ + && adduser \ + --uid=$APP_UID \ + --ingroup=app \ + --no-create-home \ + --disabled-password \ + app \ + && mkdir -p "/staging/etc" \ + # Copy user/group info to staging + && cp /etc/passwd /staging/etc/passwd \ + && cp /etc/group /staging/etc/group + + +# Final image +FROM base + +COPY --from=installer /staging/ / + +RUN install -d -m 0755 -o $APP_UID -g $APP_UID "/home/app" diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/azurelinux3.0-distroless-aot/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/azurelinux3.0-distroless-aot/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..ac13a469c2 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/azurelinux3.0-distroless-aot/amd64/Dockerfile.verified.noextension @@ -0,0 +1,72 @@ +# Installer image +FROM mcr.microsoft.com/azurelinux/base/core:3.0 AS installer + +RUN tdnf install -y \ + gawk \ + shadow-utils \ + && tdnf clean all + +# Install .NET's dependencies into a staging location +RUN mkdir /staging \ + && tdnf install -y --releasever=3.0 --installroot /staging \ + prebuilt-ca-certificates \ + \ + # .NET dependencies + glibc \ + libgcc \ + openssl-libs \ + zlib \ + && tdnf clean all --releasever=3.0 --installroot /staging + +# Generate RPM manifest file by appending to the original manifest file from base distroless image +COPY --from=mcr.microsoft.com/azurelinux/distroless/minimal:3.0 /var/lib/rpmmanifest/container-manifest-2 /tmp/rpmmanifest +RUN tmpManifestPath="/tmp/rpmmanifest" \ + && rpm --query --all --queryformat "%{NAME}\t%{VERSION}-%{RELEASE}\t%{INSTALLTIME}\t%{BUILDTIME}\t%{VENDOR}\t%{EPOCH}\t%{SIZE}\t%{ARCH}\t%{EPOCHNUM}\t%{SOURCERPM}\n" --root /staging | grep -v gpg-pubkey >> $tmpManifestPath \ + && mkdir -p /staging/var/lib/rpmmanifest \ + # Remove duplicates that match on the first field (package name) + && tac $tmpManifestPath | gawk '!x[$1]++' | sort > /staging/var/lib/rpmmanifest/container-manifest-2 + +# Create a non-root user and group +RUN groupadd \ + --gid=1654 \ + app \ + && useradd -l \ + --uid=1654 \ + --gid=1654 \ + --shell /bin/false \ + --create-home \ + app \ + && install -d -m 0755 -o 1654 -g 1654 "/staging/home/app" \ + && rootOrAppRegex='^\(root\|app\):' \ + && cat /etc/passwd | grep $rootOrAppRegex > "/staging/etc/passwd" \ + && cat /etc/group | grep $rootOrAppRegex > "/staging/etc/group" + +# Clean up staging +RUN rm -rf /staging/etc/tdnf \ + && rm -rf /staging/run/* \ + && rm -rf /staging/var/cache/tdnf \ + && rm -rf /staging/var/lib/rpm \ + && rm -rf /staging/usr/share/doc \ + && rm -rf /staging/usr/share/man \ + && find /staging/var/log -type f -size +0 -delete + + +# .NET runtime-deps image +FROM mcr.microsoft.com/azurelinux/distroless/minimal:3.0 + +ENV \ + # UID of the non-root user 'app' + APP_UID=1654 \ + # Configure web servers to bind to port 8080 when present + ASPNETCORE_HTTP_PORTS=8080 \ + # Enable detection of running in a container + DOTNET_RUNNING_IN_CONTAINER=true \ + # Set the invariant mode since ICU package isn't included (see https://github.com/dotnet/announcements/issues/20) + DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=true + +COPY --from=installer /staging/ / + +# Workaround for https://github.com/moby/moby/issues/38710 +COPY --from=installer --chown=1654:1654 /staging/home/app /home/app + +USER $APP_UID diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/azurelinux3.0-distroless-aot/arm64v8/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/azurelinux3.0-distroless-aot/arm64v8/Dockerfile.verified.noextension new file mode 100644 index 0000000000..ac13a469c2 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/azurelinux3.0-distroless-aot/arm64v8/Dockerfile.verified.noextension @@ -0,0 +1,72 @@ +# Installer image +FROM mcr.microsoft.com/azurelinux/base/core:3.0 AS installer + +RUN tdnf install -y \ + gawk \ + shadow-utils \ + && tdnf clean all + +# Install .NET's dependencies into a staging location +RUN mkdir /staging \ + && tdnf install -y --releasever=3.0 --installroot /staging \ + prebuilt-ca-certificates \ + \ + # .NET dependencies + glibc \ + libgcc \ + openssl-libs \ + zlib \ + && tdnf clean all --releasever=3.0 --installroot /staging + +# Generate RPM manifest file by appending to the original manifest file from base distroless image +COPY --from=mcr.microsoft.com/azurelinux/distroless/minimal:3.0 /var/lib/rpmmanifest/container-manifest-2 /tmp/rpmmanifest +RUN tmpManifestPath="/tmp/rpmmanifest" \ + && rpm --query --all --queryformat "%{NAME}\t%{VERSION}-%{RELEASE}\t%{INSTALLTIME}\t%{BUILDTIME}\t%{VENDOR}\t%{EPOCH}\t%{SIZE}\t%{ARCH}\t%{EPOCHNUM}\t%{SOURCERPM}\n" --root /staging | grep -v gpg-pubkey >> $tmpManifestPath \ + && mkdir -p /staging/var/lib/rpmmanifest \ + # Remove duplicates that match on the first field (package name) + && tac $tmpManifestPath | gawk '!x[$1]++' | sort > /staging/var/lib/rpmmanifest/container-manifest-2 + +# Create a non-root user and group +RUN groupadd \ + --gid=1654 \ + app \ + && useradd -l \ + --uid=1654 \ + --gid=1654 \ + --shell /bin/false \ + --create-home \ + app \ + && install -d -m 0755 -o 1654 -g 1654 "/staging/home/app" \ + && rootOrAppRegex='^\(root\|app\):' \ + && cat /etc/passwd | grep $rootOrAppRegex > "/staging/etc/passwd" \ + && cat /etc/group | grep $rootOrAppRegex > "/staging/etc/group" + +# Clean up staging +RUN rm -rf /staging/etc/tdnf \ + && rm -rf /staging/run/* \ + && rm -rf /staging/var/cache/tdnf \ + && rm -rf /staging/var/lib/rpm \ + && rm -rf /staging/usr/share/doc \ + && rm -rf /staging/usr/share/man \ + && find /staging/var/log -type f -size +0 -delete + + +# .NET runtime-deps image +FROM mcr.microsoft.com/azurelinux/distroless/minimal:3.0 + +ENV \ + # UID of the non-root user 'app' + APP_UID=1654 \ + # Configure web servers to bind to port 8080 when present + ASPNETCORE_HTTP_PORTS=8080 \ + # Enable detection of running in a container + DOTNET_RUNNING_IN_CONTAINER=true \ + # Set the invariant mode since ICU package isn't included (see https://github.com/dotnet/announcements/issues/20) + DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=true + +COPY --from=installer /staging/ / + +# Workaround for https://github.com/moby/moby/issues/38710 +COPY --from=installer --chown=1654:1654 /staging/home/app /home/app + +USER $APP_UID diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/azurelinux3.0-distroless-extra/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/azurelinux3.0-distroless-extra/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..15a4c72e56 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/azurelinux3.0-distroless-extra/amd64/Dockerfile.verified.noextension @@ -0,0 +1,73 @@ +# Installer image +FROM mcr.microsoft.com/azurelinux/base/core:3.0 AS installer + +RUN tdnf install -y \ + gawk \ + shadow-utils \ + && tdnf clean all + +# Install .NET's dependencies into a staging location +RUN mkdir /staging \ + && tdnf install -y --releasever=3.0 --installroot /staging \ + prebuilt-ca-certificates \ + \ + # .NET dependencies + glibc \ + icu \ + libgcc \ + libstdc++ \ + openssl-libs \ + tzdata \ + zlib \ + && tdnf clean all --releasever=3.0 --installroot /staging + +# Generate RPM manifest file by appending to the original manifest file from base distroless image +COPY --from=mcr.microsoft.com/azurelinux/distroless/minimal:3.0 /var/lib/rpmmanifest/container-manifest-2 /tmp/rpmmanifest +RUN tmpManifestPath="/tmp/rpmmanifest" \ + && rpm --query --all --queryformat "%{NAME}\t%{VERSION}-%{RELEASE}\t%{INSTALLTIME}\t%{BUILDTIME}\t%{VENDOR}\t%{EPOCH}\t%{SIZE}\t%{ARCH}\t%{EPOCHNUM}\t%{SOURCERPM}\n" --root /staging | grep -v gpg-pubkey >> $tmpManifestPath \ + && mkdir -p /staging/var/lib/rpmmanifest \ + # Remove duplicates that match on the first field (package name) + && tac $tmpManifestPath | gawk '!x[$1]++' | sort > /staging/var/lib/rpmmanifest/container-manifest-2 + +# Create a non-root user and group +RUN groupadd \ + --gid=1654 \ + app \ + && useradd -l \ + --uid=1654 \ + --gid=1654 \ + --shell /bin/false \ + --create-home \ + app \ + && install -d -m 0755 -o 1654 -g 1654 "/staging/home/app" \ + && rootOrAppRegex='^\(root\|app\):' \ + && cat /etc/passwd | grep $rootOrAppRegex > "/staging/etc/passwd" \ + && cat /etc/group | grep $rootOrAppRegex > "/staging/etc/group" + +# Clean up staging +RUN rm -rf /staging/etc/tdnf \ + && rm -rf /staging/run/* \ + && rm -rf /staging/var/cache/tdnf \ + && rm -rf /staging/var/lib/rpm \ + && rm -rf /staging/usr/share/doc \ + && rm -rf /staging/usr/share/man \ + && find /staging/var/log -type f -size +0 -delete + + +# .NET runtime-deps image +FROM mcr.microsoft.com/azurelinux/distroless/minimal:3.0 + +ENV \ + # UID of the non-root user 'app' + APP_UID=1654 \ + # Configure web servers to bind to port 8080 when present + ASPNETCORE_HTTP_PORTS=8080 \ + # Enable detection of running in a container + DOTNET_RUNNING_IN_CONTAINER=true + +COPY --from=installer /staging/ / + +# Workaround for https://github.com/moby/moby/issues/38710 +COPY --from=installer --chown=1654:1654 /staging/home/app /home/app + +USER $APP_UID diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/azurelinux3.0-distroless-extra/arm64v8/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/azurelinux3.0-distroless-extra/arm64v8/Dockerfile.verified.noextension new file mode 100644 index 0000000000..15a4c72e56 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/azurelinux3.0-distroless-extra/arm64v8/Dockerfile.verified.noextension @@ -0,0 +1,73 @@ +# Installer image +FROM mcr.microsoft.com/azurelinux/base/core:3.0 AS installer + +RUN tdnf install -y \ + gawk \ + shadow-utils \ + && tdnf clean all + +# Install .NET's dependencies into a staging location +RUN mkdir /staging \ + && tdnf install -y --releasever=3.0 --installroot /staging \ + prebuilt-ca-certificates \ + \ + # .NET dependencies + glibc \ + icu \ + libgcc \ + libstdc++ \ + openssl-libs \ + tzdata \ + zlib \ + && tdnf clean all --releasever=3.0 --installroot /staging + +# Generate RPM manifest file by appending to the original manifest file from base distroless image +COPY --from=mcr.microsoft.com/azurelinux/distroless/minimal:3.0 /var/lib/rpmmanifest/container-manifest-2 /tmp/rpmmanifest +RUN tmpManifestPath="/tmp/rpmmanifest" \ + && rpm --query --all --queryformat "%{NAME}\t%{VERSION}-%{RELEASE}\t%{INSTALLTIME}\t%{BUILDTIME}\t%{VENDOR}\t%{EPOCH}\t%{SIZE}\t%{ARCH}\t%{EPOCHNUM}\t%{SOURCERPM}\n" --root /staging | grep -v gpg-pubkey >> $tmpManifestPath \ + && mkdir -p /staging/var/lib/rpmmanifest \ + # Remove duplicates that match on the first field (package name) + && tac $tmpManifestPath | gawk '!x[$1]++' | sort > /staging/var/lib/rpmmanifest/container-manifest-2 + +# Create a non-root user and group +RUN groupadd \ + --gid=1654 \ + app \ + && useradd -l \ + --uid=1654 \ + --gid=1654 \ + --shell /bin/false \ + --create-home \ + app \ + && install -d -m 0755 -o 1654 -g 1654 "/staging/home/app" \ + && rootOrAppRegex='^\(root\|app\):' \ + && cat /etc/passwd | grep $rootOrAppRegex > "/staging/etc/passwd" \ + && cat /etc/group | grep $rootOrAppRegex > "/staging/etc/group" + +# Clean up staging +RUN rm -rf /staging/etc/tdnf \ + && rm -rf /staging/run/* \ + && rm -rf /staging/var/cache/tdnf \ + && rm -rf /staging/var/lib/rpm \ + && rm -rf /staging/usr/share/doc \ + && rm -rf /staging/usr/share/man \ + && find /staging/var/log -type f -size +0 -delete + + +# .NET runtime-deps image +FROM mcr.microsoft.com/azurelinux/distroless/minimal:3.0 + +ENV \ + # UID of the non-root user 'app' + APP_UID=1654 \ + # Configure web servers to bind to port 8080 when present + ASPNETCORE_HTTP_PORTS=8080 \ + # Enable detection of running in a container + DOTNET_RUNNING_IN_CONTAINER=true + +COPY --from=installer /staging/ / + +# Workaround for https://github.com/moby/moby/issues/38710 +COPY --from=installer --chown=1654:1654 /staging/home/app /home/app + +USER $APP_UID diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/azurelinux3.0-distroless/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/azurelinux3.0-distroless/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..c772d8c559 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/azurelinux3.0-distroless/amd64/Dockerfile.verified.noextension @@ -0,0 +1,73 @@ +# Installer image +FROM mcr.microsoft.com/azurelinux/base/core:3.0 AS installer + +RUN tdnf install -y \ + gawk \ + shadow-utils \ + && tdnf clean all + +# Install .NET's dependencies into a staging location +RUN mkdir /staging \ + && tdnf install -y --releasever=3.0 --installroot /staging \ + prebuilt-ca-certificates \ + \ + # .NET dependencies + glibc \ + libgcc \ + libstdc++ \ + openssl-libs \ + zlib \ + && tdnf clean all --releasever=3.0 --installroot /staging + +# Generate RPM manifest file by appending to the original manifest file from base distroless image +COPY --from=mcr.microsoft.com/azurelinux/distroless/minimal:3.0 /var/lib/rpmmanifest/container-manifest-2 /tmp/rpmmanifest +RUN tmpManifestPath="/tmp/rpmmanifest" \ + && rpm --query --all --queryformat "%{NAME}\t%{VERSION}-%{RELEASE}\t%{INSTALLTIME}\t%{BUILDTIME}\t%{VENDOR}\t%{EPOCH}\t%{SIZE}\t%{ARCH}\t%{EPOCHNUM}\t%{SOURCERPM}\n" --root /staging | grep -v gpg-pubkey >> $tmpManifestPath \ + && mkdir -p /staging/var/lib/rpmmanifest \ + # Remove duplicates that match on the first field (package name) + && tac $tmpManifestPath | gawk '!x[$1]++' | sort > /staging/var/lib/rpmmanifest/container-manifest-2 + +# Create a non-root user and group +RUN groupadd \ + --gid=1654 \ + app \ + && useradd -l \ + --uid=1654 \ + --gid=1654 \ + --shell /bin/false \ + --create-home \ + app \ + && install -d -m 0755 -o 1654 -g 1654 "/staging/home/app" \ + && rootOrAppRegex='^\(root\|app\):' \ + && cat /etc/passwd | grep $rootOrAppRegex > "/staging/etc/passwd" \ + && cat /etc/group | grep $rootOrAppRegex > "/staging/etc/group" + +# Clean up staging +RUN rm -rf /staging/etc/tdnf \ + && rm -rf /staging/run/* \ + && rm -rf /staging/var/cache/tdnf \ + && rm -rf /staging/var/lib/rpm \ + && rm -rf /staging/usr/share/doc \ + && rm -rf /staging/usr/share/man \ + && find /staging/var/log -type f -size +0 -delete + + +# .NET runtime-deps image +FROM mcr.microsoft.com/azurelinux/distroless/minimal:3.0 + +ENV \ + # UID of the non-root user 'app' + APP_UID=1654 \ + # Configure web servers to bind to port 8080 when present + ASPNETCORE_HTTP_PORTS=8080 \ + # Enable detection of running in a container + DOTNET_RUNNING_IN_CONTAINER=true \ + # Set the invariant mode since ICU package isn't included (see https://github.com/dotnet/announcements/issues/20) + DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=true + +COPY --from=installer /staging/ / + +# Workaround for https://github.com/moby/moby/issues/38710 +COPY --from=installer --chown=1654:1654 /staging/home/app /home/app + +USER $APP_UID diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/azurelinux3.0-distroless/arm64v8/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/azurelinux3.0-distroless/arm64v8/Dockerfile.verified.noextension new file mode 100644 index 0000000000..c772d8c559 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/azurelinux3.0-distroless/arm64v8/Dockerfile.verified.noextension @@ -0,0 +1,73 @@ +# Installer image +FROM mcr.microsoft.com/azurelinux/base/core:3.0 AS installer + +RUN tdnf install -y \ + gawk \ + shadow-utils \ + && tdnf clean all + +# Install .NET's dependencies into a staging location +RUN mkdir /staging \ + && tdnf install -y --releasever=3.0 --installroot /staging \ + prebuilt-ca-certificates \ + \ + # .NET dependencies + glibc \ + libgcc \ + libstdc++ \ + openssl-libs \ + zlib \ + && tdnf clean all --releasever=3.0 --installroot /staging + +# Generate RPM manifest file by appending to the original manifest file from base distroless image +COPY --from=mcr.microsoft.com/azurelinux/distroless/minimal:3.0 /var/lib/rpmmanifest/container-manifest-2 /tmp/rpmmanifest +RUN tmpManifestPath="/tmp/rpmmanifest" \ + && rpm --query --all --queryformat "%{NAME}\t%{VERSION}-%{RELEASE}\t%{INSTALLTIME}\t%{BUILDTIME}\t%{VENDOR}\t%{EPOCH}\t%{SIZE}\t%{ARCH}\t%{EPOCHNUM}\t%{SOURCERPM}\n" --root /staging | grep -v gpg-pubkey >> $tmpManifestPath \ + && mkdir -p /staging/var/lib/rpmmanifest \ + # Remove duplicates that match on the first field (package name) + && tac $tmpManifestPath | gawk '!x[$1]++' | sort > /staging/var/lib/rpmmanifest/container-manifest-2 + +# Create a non-root user and group +RUN groupadd \ + --gid=1654 \ + app \ + && useradd -l \ + --uid=1654 \ + --gid=1654 \ + --shell /bin/false \ + --create-home \ + app \ + && install -d -m 0755 -o 1654 -g 1654 "/staging/home/app" \ + && rootOrAppRegex='^\(root\|app\):' \ + && cat /etc/passwd | grep $rootOrAppRegex > "/staging/etc/passwd" \ + && cat /etc/group | grep $rootOrAppRegex > "/staging/etc/group" + +# Clean up staging +RUN rm -rf /staging/etc/tdnf \ + && rm -rf /staging/run/* \ + && rm -rf /staging/var/cache/tdnf \ + && rm -rf /staging/var/lib/rpm \ + && rm -rf /staging/usr/share/doc \ + && rm -rf /staging/usr/share/man \ + && find /staging/var/log -type f -size +0 -delete + + +# .NET runtime-deps image +FROM mcr.microsoft.com/azurelinux/distroless/minimal:3.0 + +ENV \ + # UID of the non-root user 'app' + APP_UID=1654 \ + # Configure web servers to bind to port 8080 when present + ASPNETCORE_HTTP_PORTS=8080 \ + # Enable detection of running in a container + DOTNET_RUNNING_IN_CONTAINER=true \ + # Set the invariant mode since ICU package isn't included (see https://github.com/dotnet/announcements/issues/20) + DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=true + +COPY --from=installer /staging/ / + +# Workaround for https://github.com/moby/moby/issues/38710 +COPY --from=installer --chown=1654:1654 /staging/home/app /home/app + +USER $APP_UID diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/azurelinux3.0/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/azurelinux3.0/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..ce2f506162 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/azurelinux3.0/amd64/Dockerfile.verified.noextension @@ -0,0 +1,56 @@ +FROM mcr.microsoft.com/azurelinux/base/core:3.0 AS base + +ENV \ + # UID of the non-root user 'app' + APP_UID=1654 \ + # Configure web servers to bind to port 8080 when present + ASPNETCORE_HTTP_PORTS=8080 \ + # Enable detection of running in a container + DOTNET_RUNNING_IN_CONTAINER=true + +RUN tdnf install -y \ + ca-certificates \ + \ + # .NET dependencies + glibc \ + icu \ + libgcc \ + libstdc++ \ + openssl-libs \ + tzdata \ + zlib \ + && tdnf clean all + + +FROM base AS installer + +RUN tdnf install -y \ + shadow-utils \ + && tdnf clean all + +# Create a non-root user and group +RUN tdnf install -y \ + shadow-utils \ + && groupadd \ + --gid=$APP_UID \ + app \ + && useradd -l \ + --uid=$APP_UID \ + --gid=$APP_UID \ + --no-create-home \ + app \ + && tdnf autoremove -y \ + shadow-utils \ + && tdnf clean all \ + && mkdir -p "/staging/etc" \ + # Copy user/group info to staging + && cp /etc/passwd /staging/etc/passwd \ + && cp /etc/group /staging/etc/group + + +# Final image +FROM base + +COPY --from=installer /staging/ / + +RUN install -d -m 0755 -o $APP_UID -g $APP_UID "/home/app" diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/azurelinux3.0/arm64v8/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/azurelinux3.0/arm64v8/Dockerfile.verified.noextension new file mode 100644 index 0000000000..ce2f506162 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/azurelinux3.0/arm64v8/Dockerfile.verified.noextension @@ -0,0 +1,56 @@ +FROM mcr.microsoft.com/azurelinux/base/core:3.0 AS base + +ENV \ + # UID of the non-root user 'app' + APP_UID=1654 \ + # Configure web servers to bind to port 8080 when present + ASPNETCORE_HTTP_PORTS=8080 \ + # Enable detection of running in a container + DOTNET_RUNNING_IN_CONTAINER=true + +RUN tdnf install -y \ + ca-certificates \ + \ + # .NET dependencies + glibc \ + icu \ + libgcc \ + libstdc++ \ + openssl-libs \ + tzdata \ + zlib \ + && tdnf clean all + + +FROM base AS installer + +RUN tdnf install -y \ + shadow-utils \ + && tdnf clean all + +# Create a non-root user and group +RUN tdnf install -y \ + shadow-utils \ + && groupadd \ + --gid=$APP_UID \ + app \ + && useradd -l \ + --uid=$APP_UID \ + --gid=$APP_UID \ + --no-create-home \ + app \ + && tdnf autoremove -y \ + shadow-utils \ + && tdnf clean all \ + && mkdir -p "/staging/etc" \ + # Copy user/group info to staging + && cp /etc/passwd /staging/etc/passwd \ + && cp /etc/group /staging/etc/group + + +# Final image +FROM base + +COPY --from=installer /staging/ / + +RUN install -d -m 0755 -o $APP_UID -g $APP_UID "/home/app" diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/bookworm-slim/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/bookworm-slim/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..cec441f623 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/bookworm-slim/amd64/Dockerfile.verified.noextension @@ -0,0 +1,52 @@ +FROM amd64/debian:bookworm-slim AS base + +ENV \ + # UID of the non-root user 'app' + APP_UID=1654 \ + # Configure web servers to bind to port 8080 when present + ASPNETCORE_HTTP_PORTS=8080 \ + # Enable detection of running in a container + DOTNET_RUNNING_IN_CONTAINER=true + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + ca-certificates \ + \ + # .NET dependencies + libc6 \ + libgcc-s1 \ + libicu72 \ + libssl3 \ + libstdc++6 \ + tzdata \ + zlib1g \ + && rm -rf /var/lib/apt/lists/* + + +FROM base AS installer + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + && rm -rf /var/lib/apt/lists/* + +# Create a non-root user and group +RUN groupadd \ + --gid=$APP_UID \ + app \ + && useradd -l \ + --uid=$APP_UID \ + --gid=$APP_UID \ + --no-create-home \ + app \ + && mkdir -p "/staging/etc" \ + # Copy user/group info to staging + && cp /etc/passwd /staging/etc/passwd \ + && cp /etc/group /staging/etc/group + + +# Final image +FROM base + +COPY --from=installer /staging/ / + +RUN install -d -m 0755 -o $APP_UID -g $APP_UID "/home/app" diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/bookworm-slim/arm32v7/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/bookworm-slim/arm32v7/Dockerfile.verified.noextension new file mode 100644 index 0000000000..6df2a91fa7 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/bookworm-slim/arm32v7/Dockerfile.verified.noextension @@ -0,0 +1,52 @@ +FROM arm32v7/debian:bookworm-slim AS base + +ENV \ + # UID of the non-root user 'app' + APP_UID=1654 \ + # Configure web servers to bind to port 8080 when present + ASPNETCORE_HTTP_PORTS=8080 \ + # Enable detection of running in a container + DOTNET_RUNNING_IN_CONTAINER=true + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + ca-certificates \ + \ + # .NET dependencies + libc6 \ + libgcc-s1 \ + libicu72 \ + libssl3 \ + libstdc++6 \ + tzdata \ + zlib1g \ + && rm -rf /var/lib/apt/lists/* + + +FROM base AS installer + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + && rm -rf /var/lib/apt/lists/* + +# Create a non-root user and group +RUN groupadd \ + --gid=$APP_UID \ + app \ + && useradd -l \ + --uid=$APP_UID \ + --gid=$APP_UID \ + --no-create-home \ + app \ + && mkdir -p "/staging/etc" \ + # Copy user/group info to staging + && cp /etc/passwd /staging/etc/passwd \ + && cp /etc/group /staging/etc/group + + +# Final image +FROM base + +COPY --from=installer /staging/ / + +RUN install -d -m 0755 -o $APP_UID -g $APP_UID "/home/app" diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/bookworm-slim/arm64v8/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/bookworm-slim/arm64v8/Dockerfile.verified.noextension new file mode 100644 index 0000000000..a73301187a --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/bookworm-slim/arm64v8/Dockerfile.verified.noextension @@ -0,0 +1,52 @@ +FROM arm64v8/debian:bookworm-slim AS base + +ENV \ + # UID of the non-root user 'app' + APP_UID=1654 \ + # Configure web servers to bind to port 8080 when present + ASPNETCORE_HTTP_PORTS=8080 \ + # Enable detection of running in a container + DOTNET_RUNNING_IN_CONTAINER=true + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + ca-certificates \ + \ + # .NET dependencies + libc6 \ + libgcc-s1 \ + libicu72 \ + libssl3 \ + libstdc++6 \ + tzdata \ + zlib1g \ + && rm -rf /var/lib/apt/lists/* + + +FROM base AS installer + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + && rm -rf /var/lib/apt/lists/* + +# Create a non-root user and group +RUN groupadd \ + --gid=$APP_UID \ + app \ + && useradd -l \ + --uid=$APP_UID \ + --gid=$APP_UID \ + --no-create-home \ + app \ + && mkdir -p "/staging/etc" \ + # Copy user/group info to staging + && cp /etc/passwd /staging/etc/passwd \ + && cp /etc/group /staging/etc/group + + +# Final image +FROM base + +COPY --from=installer /staging/ / + +RUN install -d -m 0755 -o $APP_UID -g $APP_UID "/home/app" diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/cbl-mariner2.0-distroless-aot/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/cbl-mariner2.0-distroless-aot/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..82294df494 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/cbl-mariner2.0-distroless-aot/amd64/Dockerfile.verified.noextension @@ -0,0 +1,72 @@ +# Installer image +FROM mcr.microsoft.com/cbl-mariner/base/core:2.0 AS installer + +RUN tdnf install -y \ + gawk \ + shadow-utils \ + && tdnf clean all + +# Install .NET's dependencies into a staging location +RUN mkdir /staging \ + && tdnf install -y --releasever=2.0 --installroot /staging \ + prebuilt-ca-certificates \ + \ + # .NET dependencies + glibc \ + libgcc \ + openssl-libs \ + zlib \ + && tdnf clean all --releasever=2.0 --installroot /staging + +# Generate RPM manifest file by appending to the original manifest file from base distroless image +COPY --from=mcr.microsoft.com/cbl-mariner/distroless/minimal:2.0 /var/lib/rpmmanifest/container-manifest-2 /tmp/rpmmanifest +RUN tmpManifestPath="/tmp/rpmmanifest" \ + && rpm --query --all --queryformat "%{NAME}\t%{VERSION}-%{RELEASE}\t%{INSTALLTIME}\t%{BUILDTIME}\t%{VENDOR}\t%{EPOCH}\t%{SIZE}\t%{ARCH}\t%{EPOCHNUM}\t%{SOURCERPM}\n" --root /staging | grep -v gpg-pubkey >> $tmpManifestPath \ + && mkdir -p /staging/var/lib/rpmmanifest \ + # Remove duplicates that match on the first field (package name) + && tac $tmpManifestPath | gawk '!x[$1]++' | sort > /staging/var/lib/rpmmanifest/container-manifest-2 + +# Create a non-root user and group +RUN groupadd \ + --gid=1654 \ + app \ + && useradd -l \ + --uid=1654 \ + --gid=1654 \ + --shell /bin/false \ + --create-home \ + app \ + && install -d -m 0755 -o 1654 -g 1654 "/staging/home/app" \ + && rootOrAppRegex='^\(root\|app\):' \ + && cat /etc/passwd | grep $rootOrAppRegex > "/staging/etc/passwd" \ + && cat /etc/group | grep $rootOrAppRegex > "/staging/etc/group" + +# Clean up staging +RUN rm -rf /staging/etc/tdnf \ + && rm -rf /staging/run/* \ + && rm -rf /staging/var/cache/tdnf \ + && rm -rf /staging/var/lib/rpm \ + && rm -rf /staging/usr/share/doc \ + && rm -rf /staging/usr/share/man \ + && find /staging/var/log -type f -size +0 -delete + + +# .NET runtime-deps image +FROM mcr.microsoft.com/cbl-mariner/distroless/minimal:2.0 + +ENV \ + # UID of the non-root user 'app' + APP_UID=1654 \ + # Configure web servers to bind to port 8080 when present + ASPNETCORE_HTTP_PORTS=8080 \ + # Enable detection of running in a container + DOTNET_RUNNING_IN_CONTAINER=true \ + # Set the invariant mode since ICU package isn't included (see https://github.com/dotnet/announcements/issues/20) + DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=true + +COPY --from=installer /staging/ / + +# Workaround for https://github.com/moby/moby/issues/38710 +COPY --from=installer --chown=1654:1654 /staging/home/app /home/app + +USER app diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/cbl-mariner2.0-distroless-aot/arm64v8/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/cbl-mariner2.0-distroless-aot/arm64v8/Dockerfile.verified.noextension new file mode 100644 index 0000000000..82294df494 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/cbl-mariner2.0-distroless-aot/arm64v8/Dockerfile.verified.noextension @@ -0,0 +1,72 @@ +# Installer image +FROM mcr.microsoft.com/cbl-mariner/base/core:2.0 AS installer + +RUN tdnf install -y \ + gawk \ + shadow-utils \ + && tdnf clean all + +# Install .NET's dependencies into a staging location +RUN mkdir /staging \ + && tdnf install -y --releasever=2.0 --installroot /staging \ + prebuilt-ca-certificates \ + \ + # .NET dependencies + glibc \ + libgcc \ + openssl-libs \ + zlib \ + && tdnf clean all --releasever=2.0 --installroot /staging + +# Generate RPM manifest file by appending to the original manifest file from base distroless image +COPY --from=mcr.microsoft.com/cbl-mariner/distroless/minimal:2.0 /var/lib/rpmmanifest/container-manifest-2 /tmp/rpmmanifest +RUN tmpManifestPath="/tmp/rpmmanifest" \ + && rpm --query --all --queryformat "%{NAME}\t%{VERSION}-%{RELEASE}\t%{INSTALLTIME}\t%{BUILDTIME}\t%{VENDOR}\t%{EPOCH}\t%{SIZE}\t%{ARCH}\t%{EPOCHNUM}\t%{SOURCERPM}\n" --root /staging | grep -v gpg-pubkey >> $tmpManifestPath \ + && mkdir -p /staging/var/lib/rpmmanifest \ + # Remove duplicates that match on the first field (package name) + && tac $tmpManifestPath | gawk '!x[$1]++' | sort > /staging/var/lib/rpmmanifest/container-manifest-2 + +# Create a non-root user and group +RUN groupadd \ + --gid=1654 \ + app \ + && useradd -l \ + --uid=1654 \ + --gid=1654 \ + --shell /bin/false \ + --create-home \ + app \ + && install -d -m 0755 -o 1654 -g 1654 "/staging/home/app" \ + && rootOrAppRegex='^\(root\|app\):' \ + && cat /etc/passwd | grep $rootOrAppRegex > "/staging/etc/passwd" \ + && cat /etc/group | grep $rootOrAppRegex > "/staging/etc/group" + +# Clean up staging +RUN rm -rf /staging/etc/tdnf \ + && rm -rf /staging/run/* \ + && rm -rf /staging/var/cache/tdnf \ + && rm -rf /staging/var/lib/rpm \ + && rm -rf /staging/usr/share/doc \ + && rm -rf /staging/usr/share/man \ + && find /staging/var/log -type f -size +0 -delete + + +# .NET runtime-deps image +FROM mcr.microsoft.com/cbl-mariner/distroless/minimal:2.0 + +ENV \ + # UID of the non-root user 'app' + APP_UID=1654 \ + # Configure web servers to bind to port 8080 when present + ASPNETCORE_HTTP_PORTS=8080 \ + # Enable detection of running in a container + DOTNET_RUNNING_IN_CONTAINER=true \ + # Set the invariant mode since ICU package isn't included (see https://github.com/dotnet/announcements/issues/20) + DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=true + +COPY --from=installer /staging/ / + +# Workaround for https://github.com/moby/moby/issues/38710 +COPY --from=installer --chown=1654:1654 /staging/home/app /home/app + +USER app diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/cbl-mariner2.0-distroless-extra/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/cbl-mariner2.0-distroless-extra/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..d6ca54573c --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/cbl-mariner2.0-distroless-extra/amd64/Dockerfile.verified.noextension @@ -0,0 +1,73 @@ +# Installer image +FROM mcr.microsoft.com/cbl-mariner/base/core:2.0 AS installer + +RUN tdnf install -y \ + gawk \ + shadow-utils \ + && tdnf clean all + +# Install .NET's dependencies into a staging location +RUN mkdir /staging \ + && tdnf install -y --releasever=2.0 --installroot /staging \ + prebuilt-ca-certificates \ + \ + # .NET dependencies + glibc \ + icu \ + libgcc \ + libstdc++ \ + openssl-libs \ + tzdata \ + zlib \ + && tdnf clean all --releasever=2.0 --installroot /staging + +# Generate RPM manifest file by appending to the original manifest file from base distroless image +COPY --from=mcr.microsoft.com/cbl-mariner/distroless/minimal:2.0 /var/lib/rpmmanifest/container-manifest-2 /tmp/rpmmanifest +RUN tmpManifestPath="/tmp/rpmmanifest" \ + && rpm --query --all --queryformat "%{NAME}\t%{VERSION}-%{RELEASE}\t%{INSTALLTIME}\t%{BUILDTIME}\t%{VENDOR}\t%{EPOCH}\t%{SIZE}\t%{ARCH}\t%{EPOCHNUM}\t%{SOURCERPM}\n" --root /staging | grep -v gpg-pubkey >> $tmpManifestPath \ + && mkdir -p /staging/var/lib/rpmmanifest \ + # Remove duplicates that match on the first field (package name) + && tac $tmpManifestPath | gawk '!x[$1]++' | sort > /staging/var/lib/rpmmanifest/container-manifest-2 + +# Create a non-root user and group +RUN groupadd \ + --gid=1654 \ + app \ + && useradd -l \ + --uid=1654 \ + --gid=1654 \ + --shell /bin/false \ + --create-home \ + app \ + && install -d -m 0755 -o 1654 -g 1654 "/staging/home/app" \ + && rootOrAppRegex='^\(root\|app\):' \ + && cat /etc/passwd | grep $rootOrAppRegex > "/staging/etc/passwd" \ + && cat /etc/group | grep $rootOrAppRegex > "/staging/etc/group" + +# Clean up staging +RUN rm -rf /staging/etc/tdnf \ + && rm -rf /staging/run/* \ + && rm -rf /staging/var/cache/tdnf \ + && rm -rf /staging/var/lib/rpm \ + && rm -rf /staging/usr/share/doc \ + && rm -rf /staging/usr/share/man \ + && find /staging/var/log -type f -size +0 -delete + + +# .NET runtime-deps image +FROM mcr.microsoft.com/cbl-mariner/distroless/minimal:2.0 + +ENV \ + # UID of the non-root user 'app' + APP_UID=1654 \ + # Configure web servers to bind to port 8080 when present + ASPNETCORE_HTTP_PORTS=8080 \ + # Enable detection of running in a container + DOTNET_RUNNING_IN_CONTAINER=true + +COPY --from=installer /staging/ / + +# Workaround for https://github.com/moby/moby/issues/38710 +COPY --from=installer --chown=1654:1654 /staging/home/app /home/app + +USER app diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/cbl-mariner2.0-distroless-extra/arm64v8/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/cbl-mariner2.0-distroless-extra/arm64v8/Dockerfile.verified.noextension new file mode 100644 index 0000000000..d6ca54573c --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/cbl-mariner2.0-distroless-extra/arm64v8/Dockerfile.verified.noextension @@ -0,0 +1,73 @@ +# Installer image +FROM mcr.microsoft.com/cbl-mariner/base/core:2.0 AS installer + +RUN tdnf install -y \ + gawk \ + shadow-utils \ + && tdnf clean all + +# Install .NET's dependencies into a staging location +RUN mkdir /staging \ + && tdnf install -y --releasever=2.0 --installroot /staging \ + prebuilt-ca-certificates \ + \ + # .NET dependencies + glibc \ + icu \ + libgcc \ + libstdc++ \ + openssl-libs \ + tzdata \ + zlib \ + && tdnf clean all --releasever=2.0 --installroot /staging + +# Generate RPM manifest file by appending to the original manifest file from base distroless image +COPY --from=mcr.microsoft.com/cbl-mariner/distroless/minimal:2.0 /var/lib/rpmmanifest/container-manifest-2 /tmp/rpmmanifest +RUN tmpManifestPath="/tmp/rpmmanifest" \ + && rpm --query --all --queryformat "%{NAME}\t%{VERSION}-%{RELEASE}\t%{INSTALLTIME}\t%{BUILDTIME}\t%{VENDOR}\t%{EPOCH}\t%{SIZE}\t%{ARCH}\t%{EPOCHNUM}\t%{SOURCERPM}\n" --root /staging | grep -v gpg-pubkey >> $tmpManifestPath \ + && mkdir -p /staging/var/lib/rpmmanifest \ + # Remove duplicates that match on the first field (package name) + && tac $tmpManifestPath | gawk '!x[$1]++' | sort > /staging/var/lib/rpmmanifest/container-manifest-2 + +# Create a non-root user and group +RUN groupadd \ + --gid=1654 \ + app \ + && useradd -l \ + --uid=1654 \ + --gid=1654 \ + --shell /bin/false \ + --create-home \ + app \ + && install -d -m 0755 -o 1654 -g 1654 "/staging/home/app" \ + && rootOrAppRegex='^\(root\|app\):' \ + && cat /etc/passwd | grep $rootOrAppRegex > "/staging/etc/passwd" \ + && cat /etc/group | grep $rootOrAppRegex > "/staging/etc/group" + +# Clean up staging +RUN rm -rf /staging/etc/tdnf \ + && rm -rf /staging/run/* \ + && rm -rf /staging/var/cache/tdnf \ + && rm -rf /staging/var/lib/rpm \ + && rm -rf /staging/usr/share/doc \ + && rm -rf /staging/usr/share/man \ + && find /staging/var/log -type f -size +0 -delete + + +# .NET runtime-deps image +FROM mcr.microsoft.com/cbl-mariner/distroless/minimal:2.0 + +ENV \ + # UID of the non-root user 'app' + APP_UID=1654 \ + # Configure web servers to bind to port 8080 when present + ASPNETCORE_HTTP_PORTS=8080 \ + # Enable detection of running in a container + DOTNET_RUNNING_IN_CONTAINER=true + +COPY --from=installer /staging/ / + +# Workaround for https://github.com/moby/moby/issues/38710 +COPY --from=installer --chown=1654:1654 /staging/home/app /home/app + +USER app diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/cbl-mariner2.0-distroless/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/cbl-mariner2.0-distroless/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..746d430677 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/cbl-mariner2.0-distroless/amd64/Dockerfile.verified.noextension @@ -0,0 +1,73 @@ +# Installer image +FROM mcr.microsoft.com/cbl-mariner/base/core:2.0 AS installer + +RUN tdnf install -y \ + gawk \ + shadow-utils \ + && tdnf clean all + +# Install .NET's dependencies into a staging location +RUN mkdir /staging \ + && tdnf install -y --releasever=2.0 --installroot /staging \ + prebuilt-ca-certificates \ + \ + # .NET dependencies + glibc \ + libgcc \ + libstdc++ \ + openssl-libs \ + zlib \ + && tdnf clean all --releasever=2.0 --installroot /staging + +# Generate RPM manifest file by appending to the original manifest file from base distroless image +COPY --from=mcr.microsoft.com/cbl-mariner/distroless/minimal:2.0 /var/lib/rpmmanifest/container-manifest-2 /tmp/rpmmanifest +RUN tmpManifestPath="/tmp/rpmmanifest" \ + && rpm --query --all --queryformat "%{NAME}\t%{VERSION}-%{RELEASE}\t%{INSTALLTIME}\t%{BUILDTIME}\t%{VENDOR}\t%{EPOCH}\t%{SIZE}\t%{ARCH}\t%{EPOCHNUM}\t%{SOURCERPM}\n" --root /staging | grep -v gpg-pubkey >> $tmpManifestPath \ + && mkdir -p /staging/var/lib/rpmmanifest \ + # Remove duplicates that match on the first field (package name) + && tac $tmpManifestPath | gawk '!x[$1]++' | sort > /staging/var/lib/rpmmanifest/container-manifest-2 + +# Create a non-root user and group +RUN groupadd \ + --gid=1654 \ + app \ + && useradd -l \ + --uid=1654 \ + --gid=1654 \ + --shell /bin/false \ + --create-home \ + app \ + && install -d -m 0755 -o 1654 -g 1654 "/staging/home/app" \ + && rootOrAppRegex='^\(root\|app\):' \ + && cat /etc/passwd | grep $rootOrAppRegex > "/staging/etc/passwd" \ + && cat /etc/group | grep $rootOrAppRegex > "/staging/etc/group" + +# Clean up staging +RUN rm -rf /staging/etc/tdnf \ + && rm -rf /staging/run/* \ + && rm -rf /staging/var/cache/tdnf \ + && rm -rf /staging/var/lib/rpm \ + && rm -rf /staging/usr/share/doc \ + && rm -rf /staging/usr/share/man \ + && find /staging/var/log -type f -size +0 -delete + + +# .NET runtime-deps image +FROM mcr.microsoft.com/cbl-mariner/distroless/minimal:2.0 + +ENV \ + # UID of the non-root user 'app' + APP_UID=1654 \ + # Configure web servers to bind to port 8080 when present + ASPNETCORE_HTTP_PORTS=8080 \ + # Enable detection of running in a container + DOTNET_RUNNING_IN_CONTAINER=true \ + # Set the invariant mode since ICU package isn't included (see https://github.com/dotnet/announcements/issues/20) + DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=true + +COPY --from=installer /staging/ / + +# Workaround for https://github.com/moby/moby/issues/38710 +COPY --from=installer --chown=1654:1654 /staging/home/app /home/app + +USER app diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/cbl-mariner2.0-distroless/arm64v8/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/cbl-mariner2.0-distroless/arm64v8/Dockerfile.verified.noextension new file mode 100644 index 0000000000..746d430677 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/cbl-mariner2.0-distroless/arm64v8/Dockerfile.verified.noextension @@ -0,0 +1,73 @@ +# Installer image +FROM mcr.microsoft.com/cbl-mariner/base/core:2.0 AS installer + +RUN tdnf install -y \ + gawk \ + shadow-utils \ + && tdnf clean all + +# Install .NET's dependencies into a staging location +RUN mkdir /staging \ + && tdnf install -y --releasever=2.0 --installroot /staging \ + prebuilt-ca-certificates \ + \ + # .NET dependencies + glibc \ + libgcc \ + libstdc++ \ + openssl-libs \ + zlib \ + && tdnf clean all --releasever=2.0 --installroot /staging + +# Generate RPM manifest file by appending to the original manifest file from base distroless image +COPY --from=mcr.microsoft.com/cbl-mariner/distroless/minimal:2.0 /var/lib/rpmmanifest/container-manifest-2 /tmp/rpmmanifest +RUN tmpManifestPath="/tmp/rpmmanifest" \ + && rpm --query --all --queryformat "%{NAME}\t%{VERSION}-%{RELEASE}\t%{INSTALLTIME}\t%{BUILDTIME}\t%{VENDOR}\t%{EPOCH}\t%{SIZE}\t%{ARCH}\t%{EPOCHNUM}\t%{SOURCERPM}\n" --root /staging | grep -v gpg-pubkey >> $tmpManifestPath \ + && mkdir -p /staging/var/lib/rpmmanifest \ + # Remove duplicates that match on the first field (package name) + && tac $tmpManifestPath | gawk '!x[$1]++' | sort > /staging/var/lib/rpmmanifest/container-manifest-2 + +# Create a non-root user and group +RUN groupadd \ + --gid=1654 \ + app \ + && useradd -l \ + --uid=1654 \ + --gid=1654 \ + --shell /bin/false \ + --create-home \ + app \ + && install -d -m 0755 -o 1654 -g 1654 "/staging/home/app" \ + && rootOrAppRegex='^\(root\|app\):' \ + && cat /etc/passwd | grep $rootOrAppRegex > "/staging/etc/passwd" \ + && cat /etc/group | grep $rootOrAppRegex > "/staging/etc/group" + +# Clean up staging +RUN rm -rf /staging/etc/tdnf \ + && rm -rf /staging/run/* \ + && rm -rf /staging/var/cache/tdnf \ + && rm -rf /staging/var/lib/rpm \ + && rm -rf /staging/usr/share/doc \ + && rm -rf /staging/usr/share/man \ + && find /staging/var/log -type f -size +0 -delete + + +# .NET runtime-deps image +FROM mcr.microsoft.com/cbl-mariner/distroless/minimal:2.0 + +ENV \ + # UID of the non-root user 'app' + APP_UID=1654 \ + # Configure web servers to bind to port 8080 when present + ASPNETCORE_HTTP_PORTS=8080 \ + # Enable detection of running in a container + DOTNET_RUNNING_IN_CONTAINER=true \ + # Set the invariant mode since ICU package isn't included (see https://github.com/dotnet/announcements/issues/20) + DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=true + +COPY --from=installer /staging/ / + +# Workaround for https://github.com/moby/moby/issues/38710 +COPY --from=installer --chown=1654:1654 /staging/home/app /home/app + +USER app diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/cbl-mariner2.0/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/cbl-mariner2.0/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..8dab2d9065 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/cbl-mariner2.0/amd64/Dockerfile.verified.noextension @@ -0,0 +1,51 @@ +FROM mcr.microsoft.com/cbl-mariner/base/core:2.0 AS base + +ENV \ + # UID of the non-root user 'app' + APP_UID=1654 \ + # Configure web servers to bind to port 8080 when present + ASPNETCORE_HTTP_PORTS=8080 \ + # Enable detection of running in a container + DOTNET_RUNNING_IN_CONTAINER=true + +RUN tdnf install -y \ + ca-certificates \ + \ + # .NET dependencies + glibc \ + icu \ + libgcc \ + libstdc++ \ + openssl-libs \ + tzdata \ + zlib \ + && tdnf clean all + + +FROM base AS installer + +RUN tdnf install -y \ + shadow-utils \ + && tdnf clean all + +# Create a non-root user and group +RUN groupadd \ + --gid=$APP_UID \ + app \ + && useradd -l \ + --uid=$APP_UID \ + --gid=$APP_UID \ + --no-create-home \ + app \ + && mkdir -p "/staging/etc" \ + # Copy user/group info to staging + && cp /etc/passwd /staging/etc/passwd \ + && cp /etc/group /staging/etc/group + + +# Final image +FROM base + +COPY --from=installer /staging/ / + +RUN install -d -m 0755 -o $APP_UID -g $APP_UID "/home/app" diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/cbl-mariner2.0/arm64v8/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/cbl-mariner2.0/arm64v8/Dockerfile.verified.noextension new file mode 100644 index 0000000000..8dab2d9065 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/cbl-mariner2.0/arm64v8/Dockerfile.verified.noextension @@ -0,0 +1,51 @@ +FROM mcr.microsoft.com/cbl-mariner/base/core:2.0 AS base + +ENV \ + # UID of the non-root user 'app' + APP_UID=1654 \ + # Configure web servers to bind to port 8080 when present + ASPNETCORE_HTTP_PORTS=8080 \ + # Enable detection of running in a container + DOTNET_RUNNING_IN_CONTAINER=true + +RUN tdnf install -y \ + ca-certificates \ + \ + # .NET dependencies + glibc \ + icu \ + libgcc \ + libstdc++ \ + openssl-libs \ + tzdata \ + zlib \ + && tdnf clean all + + +FROM base AS installer + +RUN tdnf install -y \ + shadow-utils \ + && tdnf clean all + +# Create a non-root user and group +RUN groupadd \ + --gid=$APP_UID \ + app \ + && useradd -l \ + --uid=$APP_UID \ + --gid=$APP_UID \ + --no-create-home \ + app \ + && mkdir -p "/staging/etc" \ + # Copy user/group info to staging + && cp /etc/passwd /staging/etc/passwd \ + && cp /etc/group /staging/etc/group + + +# Final image +FROM base + +COPY --from=installer /staging/ / + +RUN install -d -m 0755 -o $APP_UID -g $APP_UID "/home/app" diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/jammy-chiseled-aot/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/jammy-chiseled-aot/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..196fe01f9a --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/jammy-chiseled-aot/amd64/Dockerfile.verified.noextension @@ -0,0 +1,55 @@ +FROM amd64/buildpack-deps:jammy-curl AS chisel + +RUN apt-get update && apt-get install -y file + +RUN curl -u :$ACCESSTOKEN --basic -fSL --output chisel.tar.gz "https://github.com/canonical/chisel/releases/download/v0.0.0/chisel_v0.0.0_linux_amd64.tar.gz" \ + && chisel_sha384='{sha386_placeholder}' \ + && echo "$chisel_sha384 chisel.tar.gz" | sha384sum -c - \ + && tar -xzf chisel.tar.gz -C /usr/bin/ chisel \ + && curl -u :$ACCESSTOKEN --basic -fSL --output /usr/bin/chisel-wrapper "https://raw.githubusercontent.com/canonical/rocks-toolbox/v0.0.0/chisel-wrapper" \ + && chmod 755 /usr/bin/chisel-wrapper + +RUN groupadd \ + --gid=1654 \ + app \ + && useradd -l \ + --uid=1654 \ + --gid=1654 \ + --shell /bin/false \ + app \ + && install -d -m 0755 -o 1654 -g 1654 "/rootfs/home/app" \ + && mkdir -p "/rootfs/etc" \ + && rootOrAppRegex='^\(root\|app\):' \ + && cat /etc/passwd | grep $rootOrAppRegex > "/rootfs/etc/passwd" \ + && cat /etc/group | grep $rootOrAppRegex > "/rootfs/etc/group" + +RUN mkdir -p /rootfs/var/lib/dpkg/ \ + && chisel-wrapper --generate-dpkg-status /rootfs/var/lib/dpkg/status -- \ + --release ubuntu-22.04 --root /rootfs \ + base-files_base \ + base-files_release-info \ + ca-certificates_data \ + libc6_libs \ + libgcc-s1_libs \ + libssl3_libs \ + zlib1g_libs + + +FROM scratch + +COPY --from=chisel /rootfs / + +ENV \ + # UID of the non-root user 'app' + APP_UID=1654 \ + # Configure web servers to bind to port 8080 when present + ASPNETCORE_HTTP_PORTS=8080 \ + # Enable detection of running in a container + DOTNET_RUNNING_IN_CONTAINER=true \ + # Set the invariant mode since ICU package isn't included (see https://github.com/dotnet/announcements/issues/20) + DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=true + +# Workaround for https://github.com/moby/moby/issues/38710 +COPY --from=chisel --chown=$APP_UID:$APP_UID /rootfs/home/app /home/app + +USER $APP_UID diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/jammy-chiseled-aot/arm32v7/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/jammy-chiseled-aot/arm32v7/Dockerfile.verified.noextension new file mode 100644 index 0000000000..7f9975b7d2 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/jammy-chiseled-aot/arm32v7/Dockerfile.verified.noextension @@ -0,0 +1,55 @@ +FROM arm32v7/buildpack-deps:jammy-curl AS chisel + +RUN apt-get update && apt-get install -y file + +RUN curl -u :$ACCESSTOKEN --basic -fSL --output chisel.tar.gz "https://github.com/canonical/chisel/releases/download/v0.0.0/chisel_v0.0.0_linux_arm.tar.gz" \ + && chisel_sha384='{sha386_placeholder}' \ + && echo "$chisel_sha384 chisel.tar.gz" | sha384sum -c - \ + && tar -xzf chisel.tar.gz -C /usr/bin/ chisel \ + && curl -u :$ACCESSTOKEN --basic -fSL --output /usr/bin/chisel-wrapper "https://raw.githubusercontent.com/canonical/rocks-toolbox/v0.0.0/chisel-wrapper" \ + && chmod 755 /usr/bin/chisel-wrapper + +RUN groupadd \ + --gid=1654 \ + app \ + && useradd -l \ + --uid=1654 \ + --gid=1654 \ + --shell /bin/false \ + app \ + && install -d -m 0755 -o 1654 -g 1654 "/rootfs/home/app" \ + && mkdir -p "/rootfs/etc" \ + && rootOrAppRegex='^\(root\|app\):' \ + && cat /etc/passwd | grep $rootOrAppRegex > "/rootfs/etc/passwd" \ + && cat /etc/group | grep $rootOrAppRegex > "/rootfs/etc/group" + +RUN mkdir -p /rootfs/var/lib/dpkg/ \ + && chisel-wrapper --generate-dpkg-status /rootfs/var/lib/dpkg/status -- \ + --release ubuntu-22.04 --root /rootfs \ + base-files_base \ + base-files_release-info \ + ca-certificates_data \ + libc6_libs \ + libgcc-s1_libs \ + libssl3_libs \ + zlib1g_libs + + +FROM scratch + +COPY --from=chisel /rootfs / + +ENV \ + # UID of the non-root user 'app' + APP_UID=1654 \ + # Configure web servers to bind to port 8080 when present + ASPNETCORE_HTTP_PORTS=8080 \ + # Enable detection of running in a container + DOTNET_RUNNING_IN_CONTAINER=true \ + # Set the invariant mode since ICU package isn't included (see https://github.com/dotnet/announcements/issues/20) + DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=true + +# Workaround for https://github.com/moby/moby/issues/38710 +COPY --from=chisel --chown=$APP_UID:$APP_UID /rootfs/home/app /home/app + +USER $APP_UID diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/jammy-chiseled-aot/arm64v8/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/jammy-chiseled-aot/arm64v8/Dockerfile.verified.noextension new file mode 100644 index 0000000000..1be153ec0e --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/jammy-chiseled-aot/arm64v8/Dockerfile.verified.noextension @@ -0,0 +1,55 @@ +FROM arm64v8/buildpack-deps:jammy-curl AS chisel + +RUN apt-get update && apt-get install -y file + +RUN curl -u :$ACCESSTOKEN --basic -fSL --output chisel.tar.gz "https://github.com/canonical/chisel/releases/download/v0.0.0/chisel_v0.0.0_linux_arm64.tar.gz" \ + && chisel_sha384='{sha386_placeholder}' \ + && echo "$chisel_sha384 chisel.tar.gz" | sha384sum -c - \ + && tar -xzf chisel.tar.gz -C /usr/bin/ chisel \ + && curl -u :$ACCESSTOKEN --basic -fSL --output /usr/bin/chisel-wrapper "https://raw.githubusercontent.com/canonical/rocks-toolbox/v0.0.0/chisel-wrapper" \ + && chmod 755 /usr/bin/chisel-wrapper + +RUN groupadd \ + --gid=1654 \ + app \ + && useradd -l \ + --uid=1654 \ + --gid=1654 \ + --shell /bin/false \ + app \ + && install -d -m 0755 -o 1654 -g 1654 "/rootfs/home/app" \ + && mkdir -p "/rootfs/etc" \ + && rootOrAppRegex='^\(root\|app\):' \ + && cat /etc/passwd | grep $rootOrAppRegex > "/rootfs/etc/passwd" \ + && cat /etc/group | grep $rootOrAppRegex > "/rootfs/etc/group" + +RUN mkdir -p /rootfs/var/lib/dpkg/ \ + && chisel-wrapper --generate-dpkg-status /rootfs/var/lib/dpkg/status -- \ + --release ubuntu-22.04 --root /rootfs \ + base-files_base \ + base-files_release-info \ + ca-certificates_data \ + libc6_libs \ + libgcc-s1_libs \ + libssl3_libs \ + zlib1g_libs + + +FROM scratch + +COPY --from=chisel /rootfs / + +ENV \ + # UID of the non-root user 'app' + APP_UID=1654 \ + # Configure web servers to bind to port 8080 when present + ASPNETCORE_HTTP_PORTS=8080 \ + # Enable detection of running in a container + DOTNET_RUNNING_IN_CONTAINER=true \ + # Set the invariant mode since ICU package isn't included (see https://github.com/dotnet/announcements/issues/20) + DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=true + +# Workaround for https://github.com/moby/moby/issues/38710 +COPY --from=chisel --chown=$APP_UID:$APP_UID /rootfs/home/app /home/app + +USER $APP_UID diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/jammy-chiseled-extra/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/jammy-chiseled-extra/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..13d485a6c8 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/jammy-chiseled-extra/amd64/Dockerfile.verified.noextension @@ -0,0 +1,57 @@ +FROM amd64/buildpack-deps:jammy-curl AS chisel + +RUN apt-get update && apt-get install -y file + +RUN curl -u :$ACCESSTOKEN --basic -fSL --output chisel.tar.gz "https://github.com/canonical/chisel/releases/download/v0.0.0/chisel_v0.0.0_linux_amd64.tar.gz" \ + && chisel_sha384='{sha386_placeholder}' \ + && echo "$chisel_sha384 chisel.tar.gz" | sha384sum -c - \ + && tar -xzf chisel.tar.gz -C /usr/bin/ chisel \ + && curl -u :$ACCESSTOKEN --basic -fSL --output /usr/bin/chisel-wrapper "https://raw.githubusercontent.com/canonical/rocks-toolbox/v0.0.0/chisel-wrapper" \ + && chmod 755 /usr/bin/chisel-wrapper + +RUN groupadd \ + --gid=1654 \ + app \ + && useradd -l \ + --uid=1654 \ + --gid=1654 \ + --shell /bin/false \ + app \ + && install -d -m 0755 -o 1654 -g 1654 "/rootfs/home/app" \ + && mkdir -p "/rootfs/etc" \ + && rootOrAppRegex='^\(root\|app\):' \ + && cat /etc/passwd | grep $rootOrAppRegex > "/rootfs/etc/passwd" \ + && cat /etc/group | grep $rootOrAppRegex > "/rootfs/etc/group" + +RUN mkdir -p /rootfs/var/lib/dpkg/ \ + && chisel-wrapper --generate-dpkg-status /rootfs/var/lib/dpkg/status -- \ + --release ubuntu-22.04 --root /rootfs \ + base-files_base \ + base-files_release-info \ + ca-certificates_data \ + libc6_libs \ + libgcc-s1_libs \ + libicu70_libs \ + libssl3_libs \ + libstdc++6_libs \ + tzdata_zoneinfo \ + tzdata_zoneinfo-icu \ + zlib1g_libs + + +FROM scratch + +COPY --from=chisel /rootfs / + +ENV \ + # UID of the non-root user 'app' + APP_UID=1654 \ + # Configure web servers to bind to port 8080 when present + ASPNETCORE_HTTP_PORTS=8080 \ + # Enable detection of running in a container + DOTNET_RUNNING_IN_CONTAINER=true + +# Workaround for https://github.com/moby/moby/issues/38710 +COPY --from=chisel --chown=$APP_UID:$APP_UID /rootfs/home/app /home/app + +USER $APP_UID diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/jammy-chiseled-extra/arm32v7/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/jammy-chiseled-extra/arm32v7/Dockerfile.verified.noextension new file mode 100644 index 0000000000..773c1a4c1a --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/jammy-chiseled-extra/arm32v7/Dockerfile.verified.noextension @@ -0,0 +1,57 @@ +FROM arm32v7/buildpack-deps:jammy-curl AS chisel + +RUN apt-get update && apt-get install -y file + +RUN curl -u :$ACCESSTOKEN --basic -fSL --output chisel.tar.gz "https://github.com/canonical/chisel/releases/download/v0.0.0/chisel_v0.0.0_linux_arm.tar.gz" \ + && chisel_sha384='{sha386_placeholder}' \ + && echo "$chisel_sha384 chisel.tar.gz" | sha384sum -c - \ + && tar -xzf chisel.tar.gz -C /usr/bin/ chisel \ + && curl -u :$ACCESSTOKEN --basic -fSL --output /usr/bin/chisel-wrapper "https://raw.githubusercontent.com/canonical/rocks-toolbox/v0.0.0/chisel-wrapper" \ + && chmod 755 /usr/bin/chisel-wrapper + +RUN groupadd \ + --gid=1654 \ + app \ + && useradd -l \ + --uid=1654 \ + --gid=1654 \ + --shell /bin/false \ + app \ + && install -d -m 0755 -o 1654 -g 1654 "/rootfs/home/app" \ + && mkdir -p "/rootfs/etc" \ + && rootOrAppRegex='^\(root\|app\):' \ + && cat /etc/passwd | grep $rootOrAppRegex > "/rootfs/etc/passwd" \ + && cat /etc/group | grep $rootOrAppRegex > "/rootfs/etc/group" + +RUN mkdir -p /rootfs/var/lib/dpkg/ \ + && chisel-wrapper --generate-dpkg-status /rootfs/var/lib/dpkg/status -- \ + --release ubuntu-22.04 --root /rootfs \ + base-files_base \ + base-files_release-info \ + ca-certificates_data \ + libc6_libs \ + libgcc-s1_libs \ + libicu70_libs \ + libssl3_libs \ + libstdc++6_libs \ + tzdata_zoneinfo \ + tzdata_zoneinfo-icu \ + zlib1g_libs + + +FROM scratch + +COPY --from=chisel /rootfs / + +ENV \ + # UID of the non-root user 'app' + APP_UID=1654 \ + # Configure web servers to bind to port 8080 when present + ASPNETCORE_HTTP_PORTS=8080 \ + # Enable detection of running in a container + DOTNET_RUNNING_IN_CONTAINER=true + +# Workaround for https://github.com/moby/moby/issues/38710 +COPY --from=chisel --chown=$APP_UID:$APP_UID /rootfs/home/app /home/app + +USER $APP_UID diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/jammy-chiseled-extra/arm64v8/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/jammy-chiseled-extra/arm64v8/Dockerfile.verified.noextension new file mode 100644 index 0000000000..2ed98ef499 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/jammy-chiseled-extra/arm64v8/Dockerfile.verified.noextension @@ -0,0 +1,57 @@ +FROM arm64v8/buildpack-deps:jammy-curl AS chisel + +RUN apt-get update && apt-get install -y file + +RUN curl -u :$ACCESSTOKEN --basic -fSL --output chisel.tar.gz "https://github.com/canonical/chisel/releases/download/v0.0.0/chisel_v0.0.0_linux_arm64.tar.gz" \ + && chisel_sha384='{sha386_placeholder}' \ + && echo "$chisel_sha384 chisel.tar.gz" | sha384sum -c - \ + && tar -xzf chisel.tar.gz -C /usr/bin/ chisel \ + && curl -u :$ACCESSTOKEN --basic -fSL --output /usr/bin/chisel-wrapper "https://raw.githubusercontent.com/canonical/rocks-toolbox/v0.0.0/chisel-wrapper" \ + && chmod 755 /usr/bin/chisel-wrapper + +RUN groupadd \ + --gid=1654 \ + app \ + && useradd -l \ + --uid=1654 \ + --gid=1654 \ + --shell /bin/false \ + app \ + && install -d -m 0755 -o 1654 -g 1654 "/rootfs/home/app" \ + && mkdir -p "/rootfs/etc" \ + && rootOrAppRegex='^\(root\|app\):' \ + && cat /etc/passwd | grep $rootOrAppRegex > "/rootfs/etc/passwd" \ + && cat /etc/group | grep $rootOrAppRegex > "/rootfs/etc/group" + +RUN mkdir -p /rootfs/var/lib/dpkg/ \ + && chisel-wrapper --generate-dpkg-status /rootfs/var/lib/dpkg/status -- \ + --release ubuntu-22.04 --root /rootfs \ + base-files_base \ + base-files_release-info \ + ca-certificates_data \ + libc6_libs \ + libgcc-s1_libs \ + libicu70_libs \ + libssl3_libs \ + libstdc++6_libs \ + tzdata_zoneinfo \ + tzdata_zoneinfo-icu \ + zlib1g_libs + + +FROM scratch + +COPY --from=chisel /rootfs / + +ENV \ + # UID of the non-root user 'app' + APP_UID=1654 \ + # Configure web servers to bind to port 8080 when present + ASPNETCORE_HTTP_PORTS=8080 \ + # Enable detection of running in a container + DOTNET_RUNNING_IN_CONTAINER=true + +# Workaround for https://github.com/moby/moby/issues/38710 +COPY --from=chisel --chown=$APP_UID:$APP_UID /rootfs/home/app /home/app + +USER $APP_UID diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/jammy-chiseled/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/jammy-chiseled/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..8825380b28 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/jammy-chiseled/amd64/Dockerfile.verified.noextension @@ -0,0 +1,56 @@ +FROM amd64/buildpack-deps:jammy-curl AS chisel + +RUN apt-get update && apt-get install -y file + +RUN curl -u :$ACCESSTOKEN --basic -fSL --output chisel.tar.gz "https://github.com/canonical/chisel/releases/download/v0.0.0/chisel_v0.0.0_linux_amd64.tar.gz" \ + && chisel_sha384='{sha386_placeholder}' \ + && echo "$chisel_sha384 chisel.tar.gz" | sha384sum -c - \ + && tar -xzf chisel.tar.gz -C /usr/bin/ chisel \ + && curl -u :$ACCESSTOKEN --basic -fSL --output /usr/bin/chisel-wrapper "https://raw.githubusercontent.com/canonical/rocks-toolbox/v0.0.0/chisel-wrapper" \ + && chmod 755 /usr/bin/chisel-wrapper + +RUN groupadd \ + --gid=1654 \ + app \ + && useradd -l \ + --uid=1654 \ + --gid=1654 \ + --shell /bin/false \ + app \ + && install -d -m 0755 -o 1654 -g 1654 "/rootfs/home/app" \ + && mkdir -p "/rootfs/etc" \ + && rootOrAppRegex='^\(root\|app\):' \ + && cat /etc/passwd | grep $rootOrAppRegex > "/rootfs/etc/passwd" \ + && cat /etc/group | grep $rootOrAppRegex > "/rootfs/etc/group" + +RUN mkdir -p /rootfs/var/lib/dpkg/ \ + && chisel-wrapper --generate-dpkg-status /rootfs/var/lib/dpkg/status -- \ + --release ubuntu-22.04 --root /rootfs \ + base-files_base \ + base-files_release-info \ + ca-certificates_data \ + libc6_libs \ + libgcc-s1_libs \ + libssl3_libs \ + libstdc++6_libs \ + zlib1g_libs + + +FROM scratch + +COPY --from=chisel /rootfs / + +ENV \ + # UID of the non-root user 'app' + APP_UID=1654 \ + # Configure web servers to bind to port 8080 when present + ASPNETCORE_HTTP_PORTS=8080 \ + # Enable detection of running in a container + DOTNET_RUNNING_IN_CONTAINER=true \ + # Set the invariant mode since ICU package isn't included (see https://github.com/dotnet/announcements/issues/20) + DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=true + +# Workaround for https://github.com/moby/moby/issues/38710 +COPY --from=chisel --chown=$APP_UID:$APP_UID /rootfs/home/app /home/app + +USER $APP_UID diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/jammy-chiseled/arm32v7/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/jammy-chiseled/arm32v7/Dockerfile.verified.noextension new file mode 100644 index 0000000000..5110dc7175 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/jammy-chiseled/arm32v7/Dockerfile.verified.noextension @@ -0,0 +1,56 @@ +FROM arm32v7/buildpack-deps:jammy-curl AS chisel + +RUN apt-get update && apt-get install -y file + +RUN curl -u :$ACCESSTOKEN --basic -fSL --output chisel.tar.gz "https://github.com/canonical/chisel/releases/download/v0.0.0/chisel_v0.0.0_linux_arm.tar.gz" \ + && chisel_sha384='{sha386_placeholder}' \ + && echo "$chisel_sha384 chisel.tar.gz" | sha384sum -c - \ + && tar -xzf chisel.tar.gz -C /usr/bin/ chisel \ + && curl -u :$ACCESSTOKEN --basic -fSL --output /usr/bin/chisel-wrapper "https://raw.githubusercontent.com/canonical/rocks-toolbox/v0.0.0/chisel-wrapper" \ + && chmod 755 /usr/bin/chisel-wrapper + +RUN groupadd \ + --gid=1654 \ + app \ + && useradd -l \ + --uid=1654 \ + --gid=1654 \ + --shell /bin/false \ + app \ + && install -d -m 0755 -o 1654 -g 1654 "/rootfs/home/app" \ + && mkdir -p "/rootfs/etc" \ + && rootOrAppRegex='^\(root\|app\):' \ + && cat /etc/passwd | grep $rootOrAppRegex > "/rootfs/etc/passwd" \ + && cat /etc/group | grep $rootOrAppRegex > "/rootfs/etc/group" + +RUN mkdir -p /rootfs/var/lib/dpkg/ \ + && chisel-wrapper --generate-dpkg-status /rootfs/var/lib/dpkg/status -- \ + --release ubuntu-22.04 --root /rootfs \ + base-files_base \ + base-files_release-info \ + ca-certificates_data \ + libc6_libs \ + libgcc-s1_libs \ + libssl3_libs \ + libstdc++6_libs \ + zlib1g_libs + + +FROM scratch + +COPY --from=chisel /rootfs / + +ENV \ + # UID of the non-root user 'app' + APP_UID=1654 \ + # Configure web servers to bind to port 8080 when present + ASPNETCORE_HTTP_PORTS=8080 \ + # Enable detection of running in a container + DOTNET_RUNNING_IN_CONTAINER=true \ + # Set the invariant mode since ICU package isn't included (see https://github.com/dotnet/announcements/issues/20) + DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=true + +# Workaround for https://github.com/moby/moby/issues/38710 +COPY --from=chisel --chown=$APP_UID:$APP_UID /rootfs/home/app /home/app + +USER $APP_UID diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/jammy-chiseled/arm64v8/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/jammy-chiseled/arm64v8/Dockerfile.verified.noextension new file mode 100644 index 0000000000..3aee6e9a13 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/jammy-chiseled/arm64v8/Dockerfile.verified.noextension @@ -0,0 +1,56 @@ +FROM arm64v8/buildpack-deps:jammy-curl AS chisel + +RUN apt-get update && apt-get install -y file + +RUN curl -u :$ACCESSTOKEN --basic -fSL --output chisel.tar.gz "https://github.com/canonical/chisel/releases/download/v0.0.0/chisel_v0.0.0_linux_arm64.tar.gz" \ + && chisel_sha384='{sha386_placeholder}' \ + && echo "$chisel_sha384 chisel.tar.gz" | sha384sum -c - \ + && tar -xzf chisel.tar.gz -C /usr/bin/ chisel \ + && curl -u :$ACCESSTOKEN --basic -fSL --output /usr/bin/chisel-wrapper "https://raw.githubusercontent.com/canonical/rocks-toolbox/v0.0.0/chisel-wrapper" \ + && chmod 755 /usr/bin/chisel-wrapper + +RUN groupadd \ + --gid=1654 \ + app \ + && useradd -l \ + --uid=1654 \ + --gid=1654 \ + --shell /bin/false \ + app \ + && install -d -m 0755 -o 1654 -g 1654 "/rootfs/home/app" \ + && mkdir -p "/rootfs/etc" \ + && rootOrAppRegex='^\(root\|app\):' \ + && cat /etc/passwd | grep $rootOrAppRegex > "/rootfs/etc/passwd" \ + && cat /etc/group | grep $rootOrAppRegex > "/rootfs/etc/group" + +RUN mkdir -p /rootfs/var/lib/dpkg/ \ + && chisel-wrapper --generate-dpkg-status /rootfs/var/lib/dpkg/status -- \ + --release ubuntu-22.04 --root /rootfs \ + base-files_base \ + base-files_release-info \ + ca-certificates_data \ + libc6_libs \ + libgcc-s1_libs \ + libssl3_libs \ + libstdc++6_libs \ + zlib1g_libs + + +FROM scratch + +COPY --from=chisel /rootfs / + +ENV \ + # UID of the non-root user 'app' + APP_UID=1654 \ + # Configure web servers to bind to port 8080 when present + ASPNETCORE_HTTP_PORTS=8080 \ + # Enable detection of running in a container + DOTNET_RUNNING_IN_CONTAINER=true \ + # Set the invariant mode since ICU package isn't included (see https://github.com/dotnet/announcements/issues/20) + DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=true + +# Workaround for https://github.com/moby/moby/issues/38710 +COPY --from=chisel --chown=$APP_UID:$APP_UID /rootfs/home/app /home/app + +USER $APP_UID diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/jammy/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/jammy/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..0615f36e41 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/jammy/amd64/Dockerfile.verified.noextension @@ -0,0 +1,52 @@ +FROM ubuntu.azurecr.io/ubuntu:jammy AS base + +ENV \ + # UID of the non-root user 'app' + APP_UID=1654 \ + # Configure web servers to bind to port 8080 when present + ASPNETCORE_HTTP_PORTS=8080 \ + # Enable detection of running in a container + DOTNET_RUNNING_IN_CONTAINER=true + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + ca-certificates \ + \ + # .NET dependencies + libc6 \ + libgcc-s1 \ + libicu70 \ + libssl3 \ + libstdc++6 \ + tzdata \ + zlib1g \ + && rm -rf /var/lib/apt/lists/* + + +FROM base AS installer + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + && rm -rf /var/lib/apt/lists/* + +# Create a non-root user and group +RUN groupadd \ + --gid=$APP_UID \ + app \ + && useradd -l \ + --uid=$APP_UID \ + --gid=$APP_UID \ + --no-create-home \ + app \ + && mkdir -p "/staging/etc" \ + # Copy user/group info to staging + && cp /etc/passwd /staging/etc/passwd \ + && cp /etc/group /staging/etc/group + + +# Final image +FROM base + +COPY --from=installer /staging/ / + +RUN install -d -m 0755 -o $APP_UID -g $APP_UID "/home/app" diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/jammy/arm32v7/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/jammy/arm32v7/Dockerfile.verified.noextension new file mode 100644 index 0000000000..0615f36e41 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/jammy/arm32v7/Dockerfile.verified.noextension @@ -0,0 +1,52 @@ +FROM ubuntu.azurecr.io/ubuntu:jammy AS base + +ENV \ + # UID of the non-root user 'app' + APP_UID=1654 \ + # Configure web servers to bind to port 8080 when present + ASPNETCORE_HTTP_PORTS=8080 \ + # Enable detection of running in a container + DOTNET_RUNNING_IN_CONTAINER=true + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + ca-certificates \ + \ + # .NET dependencies + libc6 \ + libgcc-s1 \ + libicu70 \ + libssl3 \ + libstdc++6 \ + tzdata \ + zlib1g \ + && rm -rf /var/lib/apt/lists/* + + +FROM base AS installer + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + && rm -rf /var/lib/apt/lists/* + +# Create a non-root user and group +RUN groupadd \ + --gid=$APP_UID \ + app \ + && useradd -l \ + --uid=$APP_UID \ + --gid=$APP_UID \ + --no-create-home \ + app \ + && mkdir -p "/staging/etc" \ + # Copy user/group info to staging + && cp /etc/passwd /staging/etc/passwd \ + && cp /etc/group /staging/etc/group + + +# Final image +FROM base + +COPY --from=installer /staging/ / + +RUN install -d -m 0755 -o $APP_UID -g $APP_UID "/home/app" diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/jammy/arm64v8/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/jammy/arm64v8/Dockerfile.verified.noextension new file mode 100644 index 0000000000..0615f36e41 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/jammy/arm64v8/Dockerfile.verified.noextension @@ -0,0 +1,52 @@ +FROM ubuntu.azurecr.io/ubuntu:jammy AS base + +ENV \ + # UID of the non-root user 'app' + APP_UID=1654 \ + # Configure web servers to bind to port 8080 when present + ASPNETCORE_HTTP_PORTS=8080 \ + # Enable detection of running in a container + DOTNET_RUNNING_IN_CONTAINER=true + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + ca-certificates \ + \ + # .NET dependencies + libc6 \ + libgcc-s1 \ + libicu70 \ + libssl3 \ + libstdc++6 \ + tzdata \ + zlib1g \ + && rm -rf /var/lib/apt/lists/* + + +FROM base AS installer + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + && rm -rf /var/lib/apt/lists/* + +# Create a non-root user and group +RUN groupadd \ + --gid=$APP_UID \ + app \ + && useradd -l \ + --uid=$APP_UID \ + --gid=$APP_UID \ + --no-create-home \ + app \ + && mkdir -p "/staging/etc" \ + # Copy user/group info to staging + && cp /etc/passwd /staging/etc/passwd \ + && cp /etc/group /staging/etc/group + + +# Final image +FROM base + +COPY --from=installer /staging/ / + +RUN install -d -m 0755 -o $APP_UID -g $APP_UID "/home/app" diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/noble-chiseled-aot/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/noble-chiseled-aot/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..faf385f0de --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/noble-chiseled-aot/amd64/Dockerfile.verified.noextension @@ -0,0 +1,55 @@ +FROM amd64/buildpack-deps:noble-curl AS chisel + +RUN apt-get update && apt-get install -y file + +RUN curl -u :$ACCESSTOKEN --basic -fSL --output chisel.tar.gz "https://github.com/canonical/chisel/releases/download/v0.0.0/chisel_v0.0.0_linux_amd64.tar.gz" \ + && chisel_sha384='{sha386_placeholder}' \ + && echo "$chisel_sha384 chisel.tar.gz" | sha384sum -c - \ + && tar -xzf chisel.tar.gz -C /usr/bin/ chisel \ + && curl -u :$ACCESSTOKEN --basic -fSL --output /usr/bin/chisel-wrapper "https://raw.githubusercontent.com/canonical/rocks-toolbox/v0.0.0/chisel-wrapper" \ + && chmod 755 /usr/bin/chisel-wrapper + +RUN groupadd \ + --gid=1654 \ + app \ + && useradd -l \ + --uid=1654 \ + --gid=1654 \ + --shell /bin/false \ + app \ + && install -d -m 0755 -o 1654 -g 1654 "/rootfs/home/app" \ + && mkdir -p "/rootfs/etc" \ + && rootOrAppRegex='^\(root\|app\):' \ + && cat /etc/passwd | grep $rootOrAppRegex > "/rootfs/etc/passwd" \ + && cat /etc/group | grep $rootOrAppRegex > "/rootfs/etc/group" + +RUN mkdir -p /rootfs/var/lib/dpkg/ \ + && chisel-wrapper --generate-dpkg-status /rootfs/var/lib/dpkg/status -- \ + --release ubuntu-24.04 --root /rootfs \ + base-files_base \ + base-files_release-info \ + ca-certificates_data \ + libc6_libs \ + libgcc-s1_libs \ + libssl3t64_libs \ + zlib1g_libs + + +FROM scratch + +COPY --from=chisel /rootfs / + +ENV \ + # UID of the non-root user 'app' + APP_UID=1654 \ + # Configure web servers to bind to port 8080 when present + ASPNETCORE_HTTP_PORTS=8080 \ + # Enable detection of running in a container + DOTNET_RUNNING_IN_CONTAINER=true \ + # Set the invariant mode since ICU package isn't included (see https://github.com/dotnet/announcements/issues/20) + DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=true + +# Workaround for https://github.com/moby/moby/issues/38710 +COPY --from=chisel --chown=$APP_UID:$APP_UID /rootfs/home/app /home/app + +USER $APP_UID diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/noble-chiseled-aot/arm64v8/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/noble-chiseled-aot/arm64v8/Dockerfile.verified.noextension new file mode 100644 index 0000000000..6077c759d0 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/noble-chiseled-aot/arm64v8/Dockerfile.verified.noextension @@ -0,0 +1,55 @@ +FROM arm64v8/buildpack-deps:noble-curl AS chisel + +RUN apt-get update && apt-get install -y file + +RUN curl -u :$ACCESSTOKEN --basic -fSL --output chisel.tar.gz "https://github.com/canonical/chisel/releases/download/v0.0.0/chisel_v0.0.0_linux_arm64.tar.gz" \ + && chisel_sha384='{sha386_placeholder}' \ + && echo "$chisel_sha384 chisel.tar.gz" | sha384sum -c - \ + && tar -xzf chisel.tar.gz -C /usr/bin/ chisel \ + && curl -u :$ACCESSTOKEN --basic -fSL --output /usr/bin/chisel-wrapper "https://raw.githubusercontent.com/canonical/rocks-toolbox/v0.0.0/chisel-wrapper" \ + && chmod 755 /usr/bin/chisel-wrapper + +RUN groupadd \ + --gid=1654 \ + app \ + && useradd -l \ + --uid=1654 \ + --gid=1654 \ + --shell /bin/false \ + app \ + && install -d -m 0755 -o 1654 -g 1654 "/rootfs/home/app" \ + && mkdir -p "/rootfs/etc" \ + && rootOrAppRegex='^\(root\|app\):' \ + && cat /etc/passwd | grep $rootOrAppRegex > "/rootfs/etc/passwd" \ + && cat /etc/group | grep $rootOrAppRegex > "/rootfs/etc/group" + +RUN mkdir -p /rootfs/var/lib/dpkg/ \ + && chisel-wrapper --generate-dpkg-status /rootfs/var/lib/dpkg/status -- \ + --release ubuntu-24.04 --root /rootfs \ + base-files_base \ + base-files_release-info \ + ca-certificates_data \ + libc6_libs \ + libgcc-s1_libs \ + libssl3t64_libs \ + zlib1g_libs + + +FROM scratch + +COPY --from=chisel /rootfs / + +ENV \ + # UID of the non-root user 'app' + APP_UID=1654 \ + # Configure web servers to bind to port 8080 when present + ASPNETCORE_HTTP_PORTS=8080 \ + # Enable detection of running in a container + DOTNET_RUNNING_IN_CONTAINER=true \ + # Set the invariant mode since ICU package isn't included (see https://github.com/dotnet/announcements/issues/20) + DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=true + +# Workaround for https://github.com/moby/moby/issues/38710 +COPY --from=chisel --chown=$APP_UID:$APP_UID /rootfs/home/app /home/app + +USER $APP_UID diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/noble-chiseled-extra/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/noble-chiseled-extra/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..8bd38ddb3f --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/noble-chiseled-extra/amd64/Dockerfile.verified.noextension @@ -0,0 +1,57 @@ +FROM amd64/buildpack-deps:noble-curl AS chisel + +RUN apt-get update && apt-get install -y file + +RUN curl -u :$ACCESSTOKEN --basic -fSL --output chisel.tar.gz "https://github.com/canonical/chisel/releases/download/v0.0.0/chisel_v0.0.0_linux_amd64.tar.gz" \ + && chisel_sha384='{sha386_placeholder}' \ + && echo "$chisel_sha384 chisel.tar.gz" | sha384sum -c - \ + && tar -xzf chisel.tar.gz -C /usr/bin/ chisel \ + && curl -u :$ACCESSTOKEN --basic -fSL --output /usr/bin/chisel-wrapper "https://raw.githubusercontent.com/canonical/rocks-toolbox/v0.0.0/chisel-wrapper" \ + && chmod 755 /usr/bin/chisel-wrapper + +RUN groupadd \ + --gid=1654 \ + app \ + && useradd -l \ + --uid=1654 \ + --gid=1654 \ + --shell /bin/false \ + app \ + && install -d -m 0755 -o 1654 -g 1654 "/rootfs/home/app" \ + && mkdir -p "/rootfs/etc" \ + && rootOrAppRegex='^\(root\|app\):' \ + && cat /etc/passwd | grep $rootOrAppRegex > "/rootfs/etc/passwd" \ + && cat /etc/group | grep $rootOrAppRegex > "/rootfs/etc/group" + +RUN mkdir -p /rootfs/var/lib/dpkg/ \ + && chisel-wrapper --generate-dpkg-status /rootfs/var/lib/dpkg/status -- \ + --release ubuntu-24.04 --root /rootfs \ + base-files_base \ + base-files_release-info \ + ca-certificates_data \ + libc6_libs \ + libgcc-s1_libs \ + libicu74_libs \ + libssl3t64_libs \ + libstdc++6_libs \ + tzdata-legacy_zoneinfo \ + tzdata_zoneinfo \ + zlib1g_libs + + +FROM scratch + +COPY --from=chisel /rootfs / + +ENV \ + # UID of the non-root user 'app' + APP_UID=1654 \ + # Configure web servers to bind to port 8080 when present + ASPNETCORE_HTTP_PORTS=8080 \ + # Enable detection of running in a container + DOTNET_RUNNING_IN_CONTAINER=true + +# Workaround for https://github.com/moby/moby/issues/38710 +COPY --from=chisel --chown=$APP_UID:$APP_UID /rootfs/home/app /home/app + +USER $APP_UID diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/noble-chiseled-extra/arm64v8/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/noble-chiseled-extra/arm64v8/Dockerfile.verified.noextension new file mode 100644 index 0000000000..742cf82c4b --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/noble-chiseled-extra/arm64v8/Dockerfile.verified.noextension @@ -0,0 +1,57 @@ +FROM arm64v8/buildpack-deps:noble-curl AS chisel + +RUN apt-get update && apt-get install -y file + +RUN curl -u :$ACCESSTOKEN --basic -fSL --output chisel.tar.gz "https://github.com/canonical/chisel/releases/download/v0.0.0/chisel_v0.0.0_linux_arm64.tar.gz" \ + && chisel_sha384='{sha386_placeholder}' \ + && echo "$chisel_sha384 chisel.tar.gz" | sha384sum -c - \ + && tar -xzf chisel.tar.gz -C /usr/bin/ chisel \ + && curl -u :$ACCESSTOKEN --basic -fSL --output /usr/bin/chisel-wrapper "https://raw.githubusercontent.com/canonical/rocks-toolbox/v0.0.0/chisel-wrapper" \ + && chmod 755 /usr/bin/chisel-wrapper + +RUN groupadd \ + --gid=1654 \ + app \ + && useradd -l \ + --uid=1654 \ + --gid=1654 \ + --shell /bin/false \ + app \ + && install -d -m 0755 -o 1654 -g 1654 "/rootfs/home/app" \ + && mkdir -p "/rootfs/etc" \ + && rootOrAppRegex='^\(root\|app\):' \ + && cat /etc/passwd | grep $rootOrAppRegex > "/rootfs/etc/passwd" \ + && cat /etc/group | grep $rootOrAppRegex > "/rootfs/etc/group" + +RUN mkdir -p /rootfs/var/lib/dpkg/ \ + && chisel-wrapper --generate-dpkg-status /rootfs/var/lib/dpkg/status -- \ + --release ubuntu-24.04 --root /rootfs \ + base-files_base \ + base-files_release-info \ + ca-certificates_data \ + libc6_libs \ + libgcc-s1_libs \ + libicu74_libs \ + libssl3t64_libs \ + libstdc++6_libs \ + tzdata-legacy_zoneinfo \ + tzdata_zoneinfo \ + zlib1g_libs + + +FROM scratch + +COPY --from=chisel /rootfs / + +ENV \ + # UID of the non-root user 'app' + APP_UID=1654 \ + # Configure web servers to bind to port 8080 when present + ASPNETCORE_HTTP_PORTS=8080 \ + # Enable detection of running in a container + DOTNET_RUNNING_IN_CONTAINER=true + +# Workaround for https://github.com/moby/moby/issues/38710 +COPY --from=chisel --chown=$APP_UID:$APP_UID /rootfs/home/app /home/app + +USER $APP_UID diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/noble-chiseled/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/noble-chiseled/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..b0dfc35547 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/noble-chiseled/amd64/Dockerfile.verified.noextension @@ -0,0 +1,56 @@ +FROM amd64/buildpack-deps:noble-curl AS chisel + +RUN apt-get update && apt-get install -y file + +RUN curl -u :$ACCESSTOKEN --basic -fSL --output chisel.tar.gz "https://github.com/canonical/chisel/releases/download/v0.0.0/chisel_v0.0.0_linux_amd64.tar.gz" \ + && chisel_sha384='{sha386_placeholder}' \ + && echo "$chisel_sha384 chisel.tar.gz" | sha384sum -c - \ + && tar -xzf chisel.tar.gz -C /usr/bin/ chisel \ + && curl -u :$ACCESSTOKEN --basic -fSL --output /usr/bin/chisel-wrapper "https://raw.githubusercontent.com/canonical/rocks-toolbox/v0.0.0/chisel-wrapper" \ + && chmod 755 /usr/bin/chisel-wrapper + +RUN groupadd \ + --gid=1654 \ + app \ + && useradd -l \ + --uid=1654 \ + --gid=1654 \ + --shell /bin/false \ + app \ + && install -d -m 0755 -o 1654 -g 1654 "/rootfs/home/app" \ + && mkdir -p "/rootfs/etc" \ + && rootOrAppRegex='^\(root\|app\):' \ + && cat /etc/passwd | grep $rootOrAppRegex > "/rootfs/etc/passwd" \ + && cat /etc/group | grep $rootOrAppRegex > "/rootfs/etc/group" + +RUN mkdir -p /rootfs/var/lib/dpkg/ \ + && chisel-wrapper --generate-dpkg-status /rootfs/var/lib/dpkg/status -- \ + --release ubuntu-24.04 --root /rootfs \ + base-files_base \ + base-files_release-info \ + ca-certificates_data \ + libc6_libs \ + libgcc-s1_libs \ + libssl3t64_libs \ + libstdc++6_libs \ + zlib1g_libs + + +FROM scratch + +COPY --from=chisel /rootfs / + +ENV \ + # UID of the non-root user 'app' + APP_UID=1654 \ + # Configure web servers to bind to port 8080 when present + ASPNETCORE_HTTP_PORTS=8080 \ + # Enable detection of running in a container + DOTNET_RUNNING_IN_CONTAINER=true \ + # Set the invariant mode since ICU package isn't included (see https://github.com/dotnet/announcements/issues/20) + DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=true + +# Workaround for https://github.com/moby/moby/issues/38710 +COPY --from=chisel --chown=$APP_UID:$APP_UID /rootfs/home/app /home/app + +USER $APP_UID diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/noble-chiseled/arm64v8/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/noble-chiseled/arm64v8/Dockerfile.verified.noextension new file mode 100644 index 0000000000..5bd4b209b7 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/noble-chiseled/arm64v8/Dockerfile.verified.noextension @@ -0,0 +1,56 @@ +FROM arm64v8/buildpack-deps:noble-curl AS chisel + +RUN apt-get update && apt-get install -y file + +RUN curl -u :$ACCESSTOKEN --basic -fSL --output chisel.tar.gz "https://github.com/canonical/chisel/releases/download/v0.0.0/chisel_v0.0.0_linux_arm64.tar.gz" \ + && chisel_sha384='{sha386_placeholder}' \ + && echo "$chisel_sha384 chisel.tar.gz" | sha384sum -c - \ + && tar -xzf chisel.tar.gz -C /usr/bin/ chisel \ + && curl -u :$ACCESSTOKEN --basic -fSL --output /usr/bin/chisel-wrapper "https://raw.githubusercontent.com/canonical/rocks-toolbox/v0.0.0/chisel-wrapper" \ + && chmod 755 /usr/bin/chisel-wrapper + +RUN groupadd \ + --gid=1654 \ + app \ + && useradd -l \ + --uid=1654 \ + --gid=1654 \ + --shell /bin/false \ + app \ + && install -d -m 0755 -o 1654 -g 1654 "/rootfs/home/app" \ + && mkdir -p "/rootfs/etc" \ + && rootOrAppRegex='^\(root\|app\):' \ + && cat /etc/passwd | grep $rootOrAppRegex > "/rootfs/etc/passwd" \ + && cat /etc/group | grep $rootOrAppRegex > "/rootfs/etc/group" + +RUN mkdir -p /rootfs/var/lib/dpkg/ \ + && chisel-wrapper --generate-dpkg-status /rootfs/var/lib/dpkg/status -- \ + --release ubuntu-24.04 --root /rootfs \ + base-files_base \ + base-files_release-info \ + ca-certificates_data \ + libc6_libs \ + libgcc-s1_libs \ + libssl3t64_libs \ + libstdc++6_libs \ + zlib1g_libs + + +FROM scratch + +COPY --from=chisel /rootfs / + +ENV \ + # UID of the non-root user 'app' + APP_UID=1654 \ + # Configure web servers to bind to port 8080 when present + ASPNETCORE_HTTP_PORTS=8080 \ + # Enable detection of running in a container + DOTNET_RUNNING_IN_CONTAINER=true \ + # Set the invariant mode since ICU package isn't included (see https://github.com/dotnet/announcements/issues/20) + DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=true + +# Workaround for https://github.com/moby/moby/issues/38710 +COPY --from=chisel --chown=$APP_UID:$APP_UID /rootfs/home/app /home/app + +USER $APP_UID diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/noble/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/noble/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..9ffdf716bf --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/noble/amd64/Dockerfile.verified.noextension @@ -0,0 +1,53 @@ +FROM ubuntu.azurecr.io/ubuntu:noble AS base + +ENV \ + # UID of the non-root user 'app' + APP_UID=1654 \ + # Configure web servers to bind to port 8080 when present + ASPNETCORE_HTTP_PORTS=8080 \ + # Enable detection of running in a container + DOTNET_RUNNING_IN_CONTAINER=true + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + ca-certificates \ + \ + # .NET dependencies + libc6 \ + libgcc-s1 \ + libicu74 \ + libssl3t64 \ + libstdc++6 \ + tzdata \ + tzdata-legacy \ + zlib1g \ + && rm -rf /var/lib/apt/lists/* + + +FROM base AS installer + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + && rm -rf /var/lib/apt/lists/* + +# Create a non-root user and group +RUN groupadd \ + --gid=$APP_UID \ + app \ + && useradd -l \ + --uid=$APP_UID \ + --gid=$APP_UID \ + --no-create-home \ + app \ + && mkdir -p "/staging/etc" \ + # Copy user/group info to staging + && cp /etc/passwd /staging/etc/passwd \ + && cp /etc/group /staging/etc/group + + +# Final image +FROM base + +COPY --from=installer /staging/ / + +RUN install -d -m 0755 -o $APP_UID -g $APP_UID "/home/app" diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/noble/arm64v8/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/noble/arm64v8/Dockerfile.verified.noextension new file mode 100644 index 0000000000..9ffdf716bf --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/8.0/noble/arm64v8/Dockerfile.verified.noextension @@ -0,0 +1,53 @@ +FROM ubuntu.azurecr.io/ubuntu:noble AS base + +ENV \ + # UID of the non-root user 'app' + APP_UID=1654 \ + # Configure web servers to bind to port 8080 when present + ASPNETCORE_HTTP_PORTS=8080 \ + # Enable detection of running in a container + DOTNET_RUNNING_IN_CONTAINER=true + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + ca-certificates \ + \ + # .NET dependencies + libc6 \ + libgcc-s1 \ + libicu74 \ + libssl3t64 \ + libstdc++6 \ + tzdata \ + tzdata-legacy \ + zlib1g \ + && rm -rf /var/lib/apt/lists/* + + +FROM base AS installer + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + && rm -rf /var/lib/apt/lists/* + +# Create a non-root user and group +RUN groupadd \ + --gid=$APP_UID \ + app \ + && useradd -l \ + --uid=$APP_UID \ + --gid=$APP_UID \ + --no-create-home \ + app \ + && mkdir -p "/staging/etc" \ + # Copy user/group info to staging + && cp /etc/passwd /staging/etc/passwd \ + && cp /etc/group /staging/etc/group + + +# Final image +FROM base + +COPY --from=installer /staging/ / + +RUN install -d -m 0755 -o $APP_UID -g $APP_UID "/home/app" diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/alpine3.20-aot/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/alpine3.20-aot/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..29e485b2d3 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/alpine3.20-aot/amd64/Dockerfile.verified.noextension @@ -0,0 +1,46 @@ +FROM amd64/alpine:3.20 AS base + +ENV \ + # UID of the non-root user 'app' + APP_UID=1654 \ + # Configure web servers to bind to port 8080 when present + ASPNETCORE_HTTP_PORTS=8080 \ + # Enable detection of running in a container + DOTNET_RUNNING_IN_CONTAINER=true \ + # Set the invariant mode since ICU package isn't included (see https://github.com/dotnet/announcements/issues/20) + DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=true + +RUN apk add --upgrade --no-cache \ + ca-certificates-bundle \ + \ + # .NET dependencies + libgcc \ + libssl3 + + +FROM base AS installer + +RUN apk add --upgrade --no-cache \ + +# Create a non-root user and group +RUN addgroup \ + --gid=$APP_UID \ + app \ + && adduser \ + --uid=$APP_UID \ + --ingroup=app \ + --no-create-home \ + --disabled-password \ + app \ + && mkdir -p "/staging/etc" \ + # Copy user/group info to staging + && cp /etc/passwd /staging/etc/passwd \ + && cp /etc/group /staging/etc/group + + +# Final image +FROM base + +COPY --from=installer /staging/ / + +RUN install -d -m 0755 -o $APP_UID -g $APP_UID "/home/app" diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/alpine3.20-aot/arm32v7/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/alpine3.20-aot/arm32v7/Dockerfile.verified.noextension new file mode 100644 index 0000000000..e01eadc037 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/alpine3.20-aot/arm32v7/Dockerfile.verified.noextension @@ -0,0 +1,46 @@ +FROM arm32v7/alpine:3.20 AS base + +ENV \ + # UID of the non-root user 'app' + APP_UID=1654 \ + # Configure web servers to bind to port 8080 when present + ASPNETCORE_HTTP_PORTS=8080 \ + # Enable detection of running in a container + DOTNET_RUNNING_IN_CONTAINER=true \ + # Set the invariant mode since ICU package isn't included (see https://github.com/dotnet/announcements/issues/20) + DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=true + +RUN apk add --upgrade --no-cache \ + ca-certificates-bundle \ + \ + # .NET dependencies + libgcc \ + libssl3 + + +FROM base AS installer + +RUN apk add --upgrade --no-cache \ + +# Create a non-root user and group +RUN addgroup \ + --gid=$APP_UID \ + app \ + && adduser \ + --uid=$APP_UID \ + --ingroup=app \ + --no-create-home \ + --disabled-password \ + app \ + && mkdir -p "/staging/etc" \ + # Copy user/group info to staging + && cp /etc/passwd /staging/etc/passwd \ + && cp /etc/group /staging/etc/group + + +# Final image +FROM base + +COPY --from=installer /staging/ / + +RUN install -d -m 0755 -o $APP_UID -g $APP_UID "/home/app" diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/alpine3.20-aot/arm64v8/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/alpine3.20-aot/arm64v8/Dockerfile.verified.noextension new file mode 100644 index 0000000000..9c249ba87f --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/alpine3.20-aot/arm64v8/Dockerfile.verified.noextension @@ -0,0 +1,46 @@ +FROM arm64v8/alpine:3.20 AS base + +ENV \ + # UID of the non-root user 'app' + APP_UID=1654 \ + # Configure web servers to bind to port 8080 when present + ASPNETCORE_HTTP_PORTS=8080 \ + # Enable detection of running in a container + DOTNET_RUNNING_IN_CONTAINER=true \ + # Set the invariant mode since ICU package isn't included (see https://github.com/dotnet/announcements/issues/20) + DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=true + +RUN apk add --upgrade --no-cache \ + ca-certificates-bundle \ + \ + # .NET dependencies + libgcc \ + libssl3 + + +FROM base AS installer + +RUN apk add --upgrade --no-cache \ + +# Create a non-root user and group +RUN addgroup \ + --gid=$APP_UID \ + app \ + && adduser \ + --uid=$APP_UID \ + --ingroup=app \ + --no-create-home \ + --disabled-password \ + app \ + && mkdir -p "/staging/etc" \ + # Copy user/group info to staging + && cp /etc/passwd /staging/etc/passwd \ + && cp /etc/group /staging/etc/group + + +# Final image +FROM base + +COPY --from=installer /staging/ / + +RUN install -d -m 0755 -o $APP_UID -g $APP_UID "/home/app" diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/alpine3.20-extra/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/alpine3.20-extra/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..acdd6bf133 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/alpine3.20-extra/amd64/Dockerfile.verified.noextension @@ -0,0 +1,48 @@ +FROM amd64/alpine:3.20 AS base + +ENV \ + # UID of the non-root user 'app' + APP_UID=1654 \ + # Configure web servers to bind to port 8080 when present + ASPNETCORE_HTTP_PORTS=8080 \ + # Enable detection of running in a container + DOTNET_RUNNING_IN_CONTAINER=true + +RUN apk add --upgrade --no-cache \ + ca-certificates-bundle \ + \ + # .NET dependencies + icu-data-full \ + icu-libs \ + libgcc \ + libssl3 \ + libstdc++ \ + tzdata + + +FROM base AS installer + +RUN apk add --upgrade --no-cache \ + +# Create a non-root user and group +RUN addgroup \ + --gid=$APP_UID \ + app \ + && adduser \ + --uid=$APP_UID \ + --ingroup=app \ + --no-create-home \ + --disabled-password \ + app \ + && mkdir -p "/staging/etc" \ + # Copy user/group info to staging + && cp /etc/passwd /staging/etc/passwd \ + && cp /etc/group /staging/etc/group + + +# Final image +FROM base + +COPY --from=installer /staging/ / + +RUN install -d -m 0755 -o $APP_UID -g $APP_UID "/home/app" diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/alpine3.20-extra/arm32v7/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/alpine3.20-extra/arm32v7/Dockerfile.verified.noextension new file mode 100644 index 0000000000..7f607b82d6 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/alpine3.20-extra/arm32v7/Dockerfile.verified.noextension @@ -0,0 +1,48 @@ +FROM arm32v7/alpine:3.20 AS base + +ENV \ + # UID of the non-root user 'app' + APP_UID=1654 \ + # Configure web servers to bind to port 8080 when present + ASPNETCORE_HTTP_PORTS=8080 \ + # Enable detection of running in a container + DOTNET_RUNNING_IN_CONTAINER=true + +RUN apk add --upgrade --no-cache \ + ca-certificates-bundle \ + \ + # .NET dependencies + icu-data-full \ + icu-libs \ + libgcc \ + libssl3 \ + libstdc++ \ + tzdata + + +FROM base AS installer + +RUN apk add --upgrade --no-cache \ + +# Create a non-root user and group +RUN addgroup \ + --gid=$APP_UID \ + app \ + && adduser \ + --uid=$APP_UID \ + --ingroup=app \ + --no-create-home \ + --disabled-password \ + app \ + && mkdir -p "/staging/etc" \ + # Copy user/group info to staging + && cp /etc/passwd /staging/etc/passwd \ + && cp /etc/group /staging/etc/group + + +# Final image +FROM base + +COPY --from=installer /staging/ / + +RUN install -d -m 0755 -o $APP_UID -g $APP_UID "/home/app" diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/alpine3.20-extra/arm64v8/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/alpine3.20-extra/arm64v8/Dockerfile.verified.noextension new file mode 100644 index 0000000000..7bd8156f60 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/alpine3.20-extra/arm64v8/Dockerfile.verified.noextension @@ -0,0 +1,48 @@ +FROM arm64v8/alpine:3.20 AS base + +ENV \ + # UID of the non-root user 'app' + APP_UID=1654 \ + # Configure web servers to bind to port 8080 when present + ASPNETCORE_HTTP_PORTS=8080 \ + # Enable detection of running in a container + DOTNET_RUNNING_IN_CONTAINER=true + +RUN apk add --upgrade --no-cache \ + ca-certificates-bundle \ + \ + # .NET dependencies + icu-data-full \ + icu-libs \ + libgcc \ + libssl3 \ + libstdc++ \ + tzdata + + +FROM base AS installer + +RUN apk add --upgrade --no-cache \ + +# Create a non-root user and group +RUN addgroup \ + --gid=$APP_UID \ + app \ + && adduser \ + --uid=$APP_UID \ + --ingroup=app \ + --no-create-home \ + --disabled-password \ + app \ + && mkdir -p "/staging/etc" \ + # Copy user/group info to staging + && cp /etc/passwd /staging/etc/passwd \ + && cp /etc/group /staging/etc/group + + +# Final image +FROM base + +COPY --from=installer /staging/ / + +RUN install -d -m 0755 -o $APP_UID -g $APP_UID "/home/app" diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/alpine3.20/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/alpine3.20/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..c3da01b907 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/alpine3.20/amd64/Dockerfile.verified.noextension @@ -0,0 +1,47 @@ +FROM amd64/alpine:3.20 AS base + +ENV \ + # UID of the non-root user 'app' + APP_UID=1654 \ + # Configure web servers to bind to port 8080 when present + ASPNETCORE_HTTP_PORTS=8080 \ + # Enable detection of running in a container + DOTNET_RUNNING_IN_CONTAINER=true \ + # Set the invariant mode since ICU package isn't included (see https://github.com/dotnet/announcements/issues/20) + DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=true + +RUN apk add --upgrade --no-cache \ + ca-certificates-bundle \ + \ + # .NET dependencies + libgcc \ + libssl3 \ + libstdc++ + + +FROM base AS installer + +RUN apk add --upgrade --no-cache \ + +# Create a non-root user and group +RUN addgroup \ + --gid=$APP_UID \ + app \ + && adduser \ + --uid=$APP_UID \ + --ingroup=app \ + --no-create-home \ + --disabled-password \ + app \ + && mkdir -p "/staging/etc" \ + # Copy user/group info to staging + && cp /etc/passwd /staging/etc/passwd \ + && cp /etc/group /staging/etc/group + + +# Final image +FROM base + +COPY --from=installer /staging/ / + +RUN install -d -m 0755 -o $APP_UID -g $APP_UID "/home/app" diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/alpine3.20/arm32v7/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/alpine3.20/arm32v7/Dockerfile.verified.noextension new file mode 100644 index 0000000000..2f1da3dcfe --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/alpine3.20/arm32v7/Dockerfile.verified.noextension @@ -0,0 +1,47 @@ +FROM arm32v7/alpine:3.20 AS base + +ENV \ + # UID of the non-root user 'app' + APP_UID=1654 \ + # Configure web servers to bind to port 8080 when present + ASPNETCORE_HTTP_PORTS=8080 \ + # Enable detection of running in a container + DOTNET_RUNNING_IN_CONTAINER=true \ + # Set the invariant mode since ICU package isn't included (see https://github.com/dotnet/announcements/issues/20) + DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=true + +RUN apk add --upgrade --no-cache \ + ca-certificates-bundle \ + \ + # .NET dependencies + libgcc \ + libssl3 \ + libstdc++ + + +FROM base AS installer + +RUN apk add --upgrade --no-cache \ + +# Create a non-root user and group +RUN addgroup \ + --gid=$APP_UID \ + app \ + && adduser \ + --uid=$APP_UID \ + --ingroup=app \ + --no-create-home \ + --disabled-password \ + app \ + && mkdir -p "/staging/etc" \ + # Copy user/group info to staging + && cp /etc/passwd /staging/etc/passwd \ + && cp /etc/group /staging/etc/group + + +# Final image +FROM base + +COPY --from=installer /staging/ / + +RUN install -d -m 0755 -o $APP_UID -g $APP_UID "/home/app" diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/alpine3.20/arm64v8/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/alpine3.20/arm64v8/Dockerfile.verified.noextension new file mode 100644 index 0000000000..c08967f210 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/alpine3.20/arm64v8/Dockerfile.verified.noextension @@ -0,0 +1,47 @@ +FROM arm64v8/alpine:3.20 AS base + +ENV \ + # UID of the non-root user 'app' + APP_UID=1654 \ + # Configure web servers to bind to port 8080 when present + ASPNETCORE_HTTP_PORTS=8080 \ + # Enable detection of running in a container + DOTNET_RUNNING_IN_CONTAINER=true \ + # Set the invariant mode since ICU package isn't included (see https://github.com/dotnet/announcements/issues/20) + DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=true + +RUN apk add --upgrade --no-cache \ + ca-certificates-bundle \ + \ + # .NET dependencies + libgcc \ + libssl3 \ + libstdc++ + + +FROM base AS installer + +RUN apk add --upgrade --no-cache \ + +# Create a non-root user and group +RUN addgroup \ + --gid=$APP_UID \ + app \ + && adduser \ + --uid=$APP_UID \ + --ingroup=app \ + --no-create-home \ + --disabled-password \ + app \ + && mkdir -p "/staging/etc" \ + # Copy user/group info to staging + && cp /etc/passwd /staging/etc/passwd \ + && cp /etc/group /staging/etc/group + + +# Final image +FROM base + +COPY --from=installer /staging/ / + +RUN install -d -m 0755 -o $APP_UID -g $APP_UID "/home/app" diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/alpine3.21-aot/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/alpine3.21-aot/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..386a1d6cd7 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/alpine3.21-aot/amd64/Dockerfile.verified.noextension @@ -0,0 +1,46 @@ +FROM amd64/alpine:3.21 AS base + +ENV \ + # UID of the non-root user 'app' + APP_UID=1654 \ + # Configure web servers to bind to port 8080 when present + ASPNETCORE_HTTP_PORTS=8080 \ + # Enable detection of running in a container + DOTNET_RUNNING_IN_CONTAINER=true \ + # Set the invariant mode since ICU package isn't included (see https://github.com/dotnet/announcements/issues/20) + DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=true + +RUN apk add --upgrade --no-cache \ + ca-certificates-bundle \ + \ + # .NET dependencies + libgcc \ + libssl3 + + +FROM base AS installer + +RUN apk add --upgrade --no-cache \ + +# Create a non-root user and group +RUN addgroup \ + --gid=$APP_UID \ + app \ + && adduser \ + --uid=$APP_UID \ + --ingroup=app \ + --no-create-home \ + --disabled-password \ + app \ + && mkdir -p "/staging/etc" \ + # Copy user/group info to staging + && cp /etc/passwd /staging/etc/passwd \ + && cp /etc/group /staging/etc/group + + +# Final image +FROM base + +COPY --from=installer /staging/ / + +RUN install -d -m 0755 -o $APP_UID -g $APP_UID "/home/app" diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/alpine3.21-aot/arm32v7/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/alpine3.21-aot/arm32v7/Dockerfile.verified.noextension new file mode 100644 index 0000000000..e06b2e1c8a --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/alpine3.21-aot/arm32v7/Dockerfile.verified.noextension @@ -0,0 +1,46 @@ +FROM arm32v7/alpine:3.21 AS base + +ENV \ + # UID of the non-root user 'app' + APP_UID=1654 \ + # Configure web servers to bind to port 8080 when present + ASPNETCORE_HTTP_PORTS=8080 \ + # Enable detection of running in a container + DOTNET_RUNNING_IN_CONTAINER=true \ + # Set the invariant mode since ICU package isn't included (see https://github.com/dotnet/announcements/issues/20) + DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=true + +RUN apk add --upgrade --no-cache \ + ca-certificates-bundle \ + \ + # .NET dependencies + libgcc \ + libssl3 + + +FROM base AS installer + +RUN apk add --upgrade --no-cache \ + +# Create a non-root user and group +RUN addgroup \ + --gid=$APP_UID \ + app \ + && adduser \ + --uid=$APP_UID \ + --ingroup=app \ + --no-create-home \ + --disabled-password \ + app \ + && mkdir -p "/staging/etc" \ + # Copy user/group info to staging + && cp /etc/passwd /staging/etc/passwd \ + && cp /etc/group /staging/etc/group + + +# Final image +FROM base + +COPY --from=installer /staging/ / + +RUN install -d -m 0755 -o $APP_UID -g $APP_UID "/home/app" diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/alpine3.21-aot/arm64v8/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/alpine3.21-aot/arm64v8/Dockerfile.verified.noextension new file mode 100644 index 0000000000..3c2dddacb7 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/alpine3.21-aot/arm64v8/Dockerfile.verified.noextension @@ -0,0 +1,46 @@ +FROM arm64v8/alpine:3.21 AS base + +ENV \ + # UID of the non-root user 'app' + APP_UID=1654 \ + # Configure web servers to bind to port 8080 when present + ASPNETCORE_HTTP_PORTS=8080 \ + # Enable detection of running in a container + DOTNET_RUNNING_IN_CONTAINER=true \ + # Set the invariant mode since ICU package isn't included (see https://github.com/dotnet/announcements/issues/20) + DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=true + +RUN apk add --upgrade --no-cache \ + ca-certificates-bundle \ + \ + # .NET dependencies + libgcc \ + libssl3 + + +FROM base AS installer + +RUN apk add --upgrade --no-cache \ + +# Create a non-root user and group +RUN addgroup \ + --gid=$APP_UID \ + app \ + && adduser \ + --uid=$APP_UID \ + --ingroup=app \ + --no-create-home \ + --disabled-password \ + app \ + && mkdir -p "/staging/etc" \ + # Copy user/group info to staging + && cp /etc/passwd /staging/etc/passwd \ + && cp /etc/group /staging/etc/group + + +# Final image +FROM base + +COPY --from=installer /staging/ / + +RUN install -d -m 0755 -o $APP_UID -g $APP_UID "/home/app" diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/alpine3.21-extra/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/alpine3.21-extra/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..e48d31160f --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/alpine3.21-extra/amd64/Dockerfile.verified.noextension @@ -0,0 +1,48 @@ +FROM amd64/alpine:3.21 AS base + +ENV \ + # UID of the non-root user 'app' + APP_UID=1654 \ + # Configure web servers to bind to port 8080 when present + ASPNETCORE_HTTP_PORTS=8080 \ + # Enable detection of running in a container + DOTNET_RUNNING_IN_CONTAINER=true + +RUN apk add --upgrade --no-cache \ + ca-certificates-bundle \ + \ + # .NET dependencies + icu-data-full \ + icu-libs \ + libgcc \ + libssl3 \ + libstdc++ \ + tzdata + + +FROM base AS installer + +RUN apk add --upgrade --no-cache \ + +# Create a non-root user and group +RUN addgroup \ + --gid=$APP_UID \ + app \ + && adduser \ + --uid=$APP_UID \ + --ingroup=app \ + --no-create-home \ + --disabled-password \ + app \ + && mkdir -p "/staging/etc" \ + # Copy user/group info to staging + && cp /etc/passwd /staging/etc/passwd \ + && cp /etc/group /staging/etc/group + + +# Final image +FROM base + +COPY --from=installer /staging/ / + +RUN install -d -m 0755 -o $APP_UID -g $APP_UID "/home/app" diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/alpine3.21-extra/arm32v7/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/alpine3.21-extra/arm32v7/Dockerfile.verified.noextension new file mode 100644 index 0000000000..74a52a31e9 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/alpine3.21-extra/arm32v7/Dockerfile.verified.noextension @@ -0,0 +1,48 @@ +FROM arm32v7/alpine:3.21 AS base + +ENV \ + # UID of the non-root user 'app' + APP_UID=1654 \ + # Configure web servers to bind to port 8080 when present + ASPNETCORE_HTTP_PORTS=8080 \ + # Enable detection of running in a container + DOTNET_RUNNING_IN_CONTAINER=true + +RUN apk add --upgrade --no-cache \ + ca-certificates-bundle \ + \ + # .NET dependencies + icu-data-full \ + icu-libs \ + libgcc \ + libssl3 \ + libstdc++ \ + tzdata + + +FROM base AS installer + +RUN apk add --upgrade --no-cache \ + +# Create a non-root user and group +RUN addgroup \ + --gid=$APP_UID \ + app \ + && adduser \ + --uid=$APP_UID \ + --ingroup=app \ + --no-create-home \ + --disabled-password \ + app \ + && mkdir -p "/staging/etc" \ + # Copy user/group info to staging + && cp /etc/passwd /staging/etc/passwd \ + && cp /etc/group /staging/etc/group + + +# Final image +FROM base + +COPY --from=installer /staging/ / + +RUN install -d -m 0755 -o $APP_UID -g $APP_UID "/home/app" diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/alpine3.21-extra/arm64v8/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/alpine3.21-extra/arm64v8/Dockerfile.verified.noextension new file mode 100644 index 0000000000..4eb2f48027 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/alpine3.21-extra/arm64v8/Dockerfile.verified.noextension @@ -0,0 +1,48 @@ +FROM arm64v8/alpine:3.21 AS base + +ENV \ + # UID of the non-root user 'app' + APP_UID=1654 \ + # Configure web servers to bind to port 8080 when present + ASPNETCORE_HTTP_PORTS=8080 \ + # Enable detection of running in a container + DOTNET_RUNNING_IN_CONTAINER=true + +RUN apk add --upgrade --no-cache \ + ca-certificates-bundle \ + \ + # .NET dependencies + icu-data-full \ + icu-libs \ + libgcc \ + libssl3 \ + libstdc++ \ + tzdata + + +FROM base AS installer + +RUN apk add --upgrade --no-cache \ + +# Create a non-root user and group +RUN addgroup \ + --gid=$APP_UID \ + app \ + && adduser \ + --uid=$APP_UID \ + --ingroup=app \ + --no-create-home \ + --disabled-password \ + app \ + && mkdir -p "/staging/etc" \ + # Copy user/group info to staging + && cp /etc/passwd /staging/etc/passwd \ + && cp /etc/group /staging/etc/group + + +# Final image +FROM base + +COPY --from=installer /staging/ / + +RUN install -d -m 0755 -o $APP_UID -g $APP_UID "/home/app" diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/alpine3.21/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/alpine3.21/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..c0fdf2f9a0 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/alpine3.21/amd64/Dockerfile.verified.noextension @@ -0,0 +1,47 @@ +FROM amd64/alpine:3.21 AS base + +ENV \ + # UID of the non-root user 'app' + APP_UID=1654 \ + # Configure web servers to bind to port 8080 when present + ASPNETCORE_HTTP_PORTS=8080 \ + # Enable detection of running in a container + DOTNET_RUNNING_IN_CONTAINER=true \ + # Set the invariant mode since ICU package isn't included (see https://github.com/dotnet/announcements/issues/20) + DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=true + +RUN apk add --upgrade --no-cache \ + ca-certificates-bundle \ + \ + # .NET dependencies + libgcc \ + libssl3 \ + libstdc++ + + +FROM base AS installer + +RUN apk add --upgrade --no-cache \ + +# Create a non-root user and group +RUN addgroup \ + --gid=$APP_UID \ + app \ + && adduser \ + --uid=$APP_UID \ + --ingroup=app \ + --no-create-home \ + --disabled-password \ + app \ + && mkdir -p "/staging/etc" \ + # Copy user/group info to staging + && cp /etc/passwd /staging/etc/passwd \ + && cp /etc/group /staging/etc/group + + +# Final image +FROM base + +COPY --from=installer /staging/ / + +RUN install -d -m 0755 -o $APP_UID -g $APP_UID "/home/app" diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/alpine3.21/arm32v7/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/alpine3.21/arm32v7/Dockerfile.verified.noextension new file mode 100644 index 0000000000..3f11c0f4da --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/alpine3.21/arm32v7/Dockerfile.verified.noextension @@ -0,0 +1,47 @@ +FROM arm32v7/alpine:3.21 AS base + +ENV \ + # UID of the non-root user 'app' + APP_UID=1654 \ + # Configure web servers to bind to port 8080 when present + ASPNETCORE_HTTP_PORTS=8080 \ + # Enable detection of running in a container + DOTNET_RUNNING_IN_CONTAINER=true \ + # Set the invariant mode since ICU package isn't included (see https://github.com/dotnet/announcements/issues/20) + DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=true + +RUN apk add --upgrade --no-cache \ + ca-certificates-bundle \ + \ + # .NET dependencies + libgcc \ + libssl3 \ + libstdc++ + + +FROM base AS installer + +RUN apk add --upgrade --no-cache \ + +# Create a non-root user and group +RUN addgroup \ + --gid=$APP_UID \ + app \ + && adduser \ + --uid=$APP_UID \ + --ingroup=app \ + --no-create-home \ + --disabled-password \ + app \ + && mkdir -p "/staging/etc" \ + # Copy user/group info to staging + && cp /etc/passwd /staging/etc/passwd \ + && cp /etc/group /staging/etc/group + + +# Final image +FROM base + +COPY --from=installer /staging/ / + +RUN install -d -m 0755 -o $APP_UID -g $APP_UID "/home/app" diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/alpine3.21/arm64v8/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/alpine3.21/arm64v8/Dockerfile.verified.noextension new file mode 100644 index 0000000000..8748de591e --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/alpine3.21/arm64v8/Dockerfile.verified.noextension @@ -0,0 +1,47 @@ +FROM arm64v8/alpine:3.21 AS base + +ENV \ + # UID of the non-root user 'app' + APP_UID=1654 \ + # Configure web servers to bind to port 8080 when present + ASPNETCORE_HTTP_PORTS=8080 \ + # Enable detection of running in a container + DOTNET_RUNNING_IN_CONTAINER=true \ + # Set the invariant mode since ICU package isn't included (see https://github.com/dotnet/announcements/issues/20) + DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=true + +RUN apk add --upgrade --no-cache \ + ca-certificates-bundle \ + \ + # .NET dependencies + libgcc \ + libssl3 \ + libstdc++ + + +FROM base AS installer + +RUN apk add --upgrade --no-cache \ + +# Create a non-root user and group +RUN addgroup \ + --gid=$APP_UID \ + app \ + && adduser \ + --uid=$APP_UID \ + --ingroup=app \ + --no-create-home \ + --disabled-password \ + app \ + && mkdir -p "/staging/etc" \ + # Copy user/group info to staging + && cp /etc/passwd /staging/etc/passwd \ + && cp /etc/group /staging/etc/group + + +# Final image +FROM base + +COPY --from=installer /staging/ / + +RUN install -d -m 0755 -o $APP_UID -g $APP_UID "/home/app" diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/azurelinux3.0-distroless-aot/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/azurelinux3.0-distroless-aot/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..1236b601ba --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/azurelinux3.0-distroless-aot/amd64/Dockerfile.verified.noextension @@ -0,0 +1,71 @@ +# Installer image +FROM mcr.microsoft.com/azurelinux/base/core:3.0 AS installer + +RUN tdnf install -y \ + gawk \ + shadow-utils \ + && tdnf clean all + +# Install .NET's dependencies into a staging location +RUN mkdir /staging \ + && tdnf install -y --releasever=3.0 --installroot /staging \ + prebuilt-ca-certificates \ + \ + # .NET dependencies + glibc \ + libgcc \ + openssl-libs \ + && tdnf clean all --releasever=3.0 --installroot /staging + +# Generate RPM manifest file by appending to the original manifest file from base distroless image +COPY --from=mcr.microsoft.com/azurelinux/distroless/minimal:3.0 /var/lib/rpmmanifest/container-manifest-2 /tmp/rpmmanifest +RUN tmpManifestPath="/tmp/rpmmanifest" \ + && rpm --query --all --queryformat "%{NAME}\t%{VERSION}-%{RELEASE}\t%{INSTALLTIME}\t%{BUILDTIME}\t%{VENDOR}\t%{EPOCH}\t%{SIZE}\t%{ARCH}\t%{EPOCHNUM}\t%{SOURCERPM}\n" --root /staging | grep -v gpg-pubkey >> $tmpManifestPath \ + && mkdir -p /staging/var/lib/rpmmanifest \ + # Remove duplicates that match on the first field (package name) + && tac $tmpManifestPath | gawk '!x[$1]++' | sort > /staging/var/lib/rpmmanifest/container-manifest-2 + +# Create a non-root user and group +RUN groupadd \ + --gid=1654 \ + app \ + && useradd -l \ + --uid=1654 \ + --gid=1654 \ + --shell /bin/false \ + --create-home \ + app \ + && install -d -m 0755 -o 1654 -g 1654 "/staging/home/app" \ + && rootOrAppRegex='^\(root\|app\):' \ + && cat /etc/passwd | grep $rootOrAppRegex > "/staging/etc/passwd" \ + && cat /etc/group | grep $rootOrAppRegex > "/staging/etc/group" + +# Clean up staging +RUN rm -rf /staging/etc/tdnf \ + && rm -rf /staging/run/* \ + && rm -rf /staging/var/cache/tdnf \ + && rm -rf /staging/var/lib/rpm \ + && rm -rf /staging/usr/share/doc \ + && rm -rf /staging/usr/share/man \ + && find /staging/var/log -type f -size +0 -delete + + +# .NET runtime-deps image +FROM mcr.microsoft.com/azurelinux/distroless/minimal:3.0 + +ENV \ + # UID of the non-root user 'app' + APP_UID=1654 \ + # Configure web servers to bind to port 8080 when present + ASPNETCORE_HTTP_PORTS=8080 \ + # Enable detection of running in a container + DOTNET_RUNNING_IN_CONTAINER=true \ + # Set the invariant mode since ICU package isn't included (see https://github.com/dotnet/announcements/issues/20) + DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=true + +COPY --from=installer /staging/ / + +# Workaround for https://github.com/moby/moby/issues/38710 +COPY --from=installer --chown=1654:1654 /staging/home/app /home/app + +USER $APP_UID diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/azurelinux3.0-distroless-aot/arm64v8/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/azurelinux3.0-distroless-aot/arm64v8/Dockerfile.verified.noextension new file mode 100644 index 0000000000..1236b601ba --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/azurelinux3.0-distroless-aot/arm64v8/Dockerfile.verified.noextension @@ -0,0 +1,71 @@ +# Installer image +FROM mcr.microsoft.com/azurelinux/base/core:3.0 AS installer + +RUN tdnf install -y \ + gawk \ + shadow-utils \ + && tdnf clean all + +# Install .NET's dependencies into a staging location +RUN mkdir /staging \ + && tdnf install -y --releasever=3.0 --installroot /staging \ + prebuilt-ca-certificates \ + \ + # .NET dependencies + glibc \ + libgcc \ + openssl-libs \ + && tdnf clean all --releasever=3.0 --installroot /staging + +# Generate RPM manifest file by appending to the original manifest file from base distroless image +COPY --from=mcr.microsoft.com/azurelinux/distroless/minimal:3.0 /var/lib/rpmmanifest/container-manifest-2 /tmp/rpmmanifest +RUN tmpManifestPath="/tmp/rpmmanifest" \ + && rpm --query --all --queryformat "%{NAME}\t%{VERSION}-%{RELEASE}\t%{INSTALLTIME}\t%{BUILDTIME}\t%{VENDOR}\t%{EPOCH}\t%{SIZE}\t%{ARCH}\t%{EPOCHNUM}\t%{SOURCERPM}\n" --root /staging | grep -v gpg-pubkey >> $tmpManifestPath \ + && mkdir -p /staging/var/lib/rpmmanifest \ + # Remove duplicates that match on the first field (package name) + && tac $tmpManifestPath | gawk '!x[$1]++' | sort > /staging/var/lib/rpmmanifest/container-manifest-2 + +# Create a non-root user and group +RUN groupadd \ + --gid=1654 \ + app \ + && useradd -l \ + --uid=1654 \ + --gid=1654 \ + --shell /bin/false \ + --create-home \ + app \ + && install -d -m 0755 -o 1654 -g 1654 "/staging/home/app" \ + && rootOrAppRegex='^\(root\|app\):' \ + && cat /etc/passwd | grep $rootOrAppRegex > "/staging/etc/passwd" \ + && cat /etc/group | grep $rootOrAppRegex > "/staging/etc/group" + +# Clean up staging +RUN rm -rf /staging/etc/tdnf \ + && rm -rf /staging/run/* \ + && rm -rf /staging/var/cache/tdnf \ + && rm -rf /staging/var/lib/rpm \ + && rm -rf /staging/usr/share/doc \ + && rm -rf /staging/usr/share/man \ + && find /staging/var/log -type f -size +0 -delete + + +# .NET runtime-deps image +FROM mcr.microsoft.com/azurelinux/distroless/minimal:3.0 + +ENV \ + # UID of the non-root user 'app' + APP_UID=1654 \ + # Configure web servers to bind to port 8080 when present + ASPNETCORE_HTTP_PORTS=8080 \ + # Enable detection of running in a container + DOTNET_RUNNING_IN_CONTAINER=true \ + # Set the invariant mode since ICU package isn't included (see https://github.com/dotnet/announcements/issues/20) + DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=true + +COPY --from=installer /staging/ / + +# Workaround for https://github.com/moby/moby/issues/38710 +COPY --from=installer --chown=1654:1654 /staging/home/app /home/app + +USER $APP_UID diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/azurelinux3.0-distroless-extra/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/azurelinux3.0-distroless-extra/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..b772aa494f --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/azurelinux3.0-distroless-extra/amd64/Dockerfile.verified.noextension @@ -0,0 +1,72 @@ +# Installer image +FROM mcr.microsoft.com/azurelinux/base/core:3.0 AS installer + +RUN tdnf install -y \ + gawk \ + shadow-utils \ + && tdnf clean all + +# Install .NET's dependencies into a staging location +RUN mkdir /staging \ + && tdnf install -y --releasever=3.0 --installroot /staging \ + prebuilt-ca-certificates \ + \ + # .NET dependencies + glibc \ + icu \ + libgcc \ + libstdc++ \ + openssl-libs \ + tzdata \ + && tdnf clean all --releasever=3.0 --installroot /staging + +# Generate RPM manifest file by appending to the original manifest file from base distroless image +COPY --from=mcr.microsoft.com/azurelinux/distroless/minimal:3.0 /var/lib/rpmmanifest/container-manifest-2 /tmp/rpmmanifest +RUN tmpManifestPath="/tmp/rpmmanifest" \ + && rpm --query --all --queryformat "%{NAME}\t%{VERSION}-%{RELEASE}\t%{INSTALLTIME}\t%{BUILDTIME}\t%{VENDOR}\t%{EPOCH}\t%{SIZE}\t%{ARCH}\t%{EPOCHNUM}\t%{SOURCERPM}\n" --root /staging | grep -v gpg-pubkey >> $tmpManifestPath \ + && mkdir -p /staging/var/lib/rpmmanifest \ + # Remove duplicates that match on the first field (package name) + && tac $tmpManifestPath | gawk '!x[$1]++' | sort > /staging/var/lib/rpmmanifest/container-manifest-2 + +# Create a non-root user and group +RUN groupadd \ + --gid=1654 \ + app \ + && useradd -l \ + --uid=1654 \ + --gid=1654 \ + --shell /bin/false \ + --create-home \ + app \ + && install -d -m 0755 -o 1654 -g 1654 "/staging/home/app" \ + && rootOrAppRegex='^\(root\|app\):' \ + && cat /etc/passwd | grep $rootOrAppRegex > "/staging/etc/passwd" \ + && cat /etc/group | grep $rootOrAppRegex > "/staging/etc/group" + +# Clean up staging +RUN rm -rf /staging/etc/tdnf \ + && rm -rf /staging/run/* \ + && rm -rf /staging/var/cache/tdnf \ + && rm -rf /staging/var/lib/rpm \ + && rm -rf /staging/usr/share/doc \ + && rm -rf /staging/usr/share/man \ + && find /staging/var/log -type f -size +0 -delete + + +# .NET runtime-deps image +FROM mcr.microsoft.com/azurelinux/distroless/minimal:3.0 + +ENV \ + # UID of the non-root user 'app' + APP_UID=1654 \ + # Configure web servers to bind to port 8080 when present + ASPNETCORE_HTTP_PORTS=8080 \ + # Enable detection of running in a container + DOTNET_RUNNING_IN_CONTAINER=true + +COPY --from=installer /staging/ / + +# Workaround for https://github.com/moby/moby/issues/38710 +COPY --from=installer --chown=1654:1654 /staging/home/app /home/app + +USER $APP_UID diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/azurelinux3.0-distroless-extra/arm64v8/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/azurelinux3.0-distroless-extra/arm64v8/Dockerfile.verified.noextension new file mode 100644 index 0000000000..b772aa494f --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/azurelinux3.0-distroless-extra/arm64v8/Dockerfile.verified.noextension @@ -0,0 +1,72 @@ +# Installer image +FROM mcr.microsoft.com/azurelinux/base/core:3.0 AS installer + +RUN tdnf install -y \ + gawk \ + shadow-utils \ + && tdnf clean all + +# Install .NET's dependencies into a staging location +RUN mkdir /staging \ + && tdnf install -y --releasever=3.0 --installroot /staging \ + prebuilt-ca-certificates \ + \ + # .NET dependencies + glibc \ + icu \ + libgcc \ + libstdc++ \ + openssl-libs \ + tzdata \ + && tdnf clean all --releasever=3.0 --installroot /staging + +# Generate RPM manifest file by appending to the original manifest file from base distroless image +COPY --from=mcr.microsoft.com/azurelinux/distroless/minimal:3.0 /var/lib/rpmmanifest/container-manifest-2 /tmp/rpmmanifest +RUN tmpManifestPath="/tmp/rpmmanifest" \ + && rpm --query --all --queryformat "%{NAME}\t%{VERSION}-%{RELEASE}\t%{INSTALLTIME}\t%{BUILDTIME}\t%{VENDOR}\t%{EPOCH}\t%{SIZE}\t%{ARCH}\t%{EPOCHNUM}\t%{SOURCERPM}\n" --root /staging | grep -v gpg-pubkey >> $tmpManifestPath \ + && mkdir -p /staging/var/lib/rpmmanifest \ + # Remove duplicates that match on the first field (package name) + && tac $tmpManifestPath | gawk '!x[$1]++' | sort > /staging/var/lib/rpmmanifest/container-manifest-2 + +# Create a non-root user and group +RUN groupadd \ + --gid=1654 \ + app \ + && useradd -l \ + --uid=1654 \ + --gid=1654 \ + --shell /bin/false \ + --create-home \ + app \ + && install -d -m 0755 -o 1654 -g 1654 "/staging/home/app" \ + && rootOrAppRegex='^\(root\|app\):' \ + && cat /etc/passwd | grep $rootOrAppRegex > "/staging/etc/passwd" \ + && cat /etc/group | grep $rootOrAppRegex > "/staging/etc/group" + +# Clean up staging +RUN rm -rf /staging/etc/tdnf \ + && rm -rf /staging/run/* \ + && rm -rf /staging/var/cache/tdnf \ + && rm -rf /staging/var/lib/rpm \ + && rm -rf /staging/usr/share/doc \ + && rm -rf /staging/usr/share/man \ + && find /staging/var/log -type f -size +0 -delete + + +# .NET runtime-deps image +FROM mcr.microsoft.com/azurelinux/distroless/minimal:3.0 + +ENV \ + # UID of the non-root user 'app' + APP_UID=1654 \ + # Configure web servers to bind to port 8080 when present + ASPNETCORE_HTTP_PORTS=8080 \ + # Enable detection of running in a container + DOTNET_RUNNING_IN_CONTAINER=true + +COPY --from=installer /staging/ / + +# Workaround for https://github.com/moby/moby/issues/38710 +COPY --from=installer --chown=1654:1654 /staging/home/app /home/app + +USER $APP_UID diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/azurelinux3.0-distroless/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/azurelinux3.0-distroless/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..39adf24f0e --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/azurelinux3.0-distroless/amd64/Dockerfile.verified.noextension @@ -0,0 +1,72 @@ +# Installer image +FROM mcr.microsoft.com/azurelinux/base/core:3.0 AS installer + +RUN tdnf install -y \ + gawk \ + shadow-utils \ + && tdnf clean all + +# Install .NET's dependencies into a staging location +RUN mkdir /staging \ + && tdnf install -y --releasever=3.0 --installroot /staging \ + prebuilt-ca-certificates \ + \ + # .NET dependencies + glibc \ + libgcc \ + libstdc++ \ + openssl-libs \ + && tdnf clean all --releasever=3.0 --installroot /staging + +# Generate RPM manifest file by appending to the original manifest file from base distroless image +COPY --from=mcr.microsoft.com/azurelinux/distroless/minimal:3.0 /var/lib/rpmmanifest/container-manifest-2 /tmp/rpmmanifest +RUN tmpManifestPath="/tmp/rpmmanifest" \ + && rpm --query --all --queryformat "%{NAME}\t%{VERSION}-%{RELEASE}\t%{INSTALLTIME}\t%{BUILDTIME}\t%{VENDOR}\t%{EPOCH}\t%{SIZE}\t%{ARCH}\t%{EPOCHNUM}\t%{SOURCERPM}\n" --root /staging | grep -v gpg-pubkey >> $tmpManifestPath \ + && mkdir -p /staging/var/lib/rpmmanifest \ + # Remove duplicates that match on the first field (package name) + && tac $tmpManifestPath | gawk '!x[$1]++' | sort > /staging/var/lib/rpmmanifest/container-manifest-2 + +# Create a non-root user and group +RUN groupadd \ + --gid=1654 \ + app \ + && useradd -l \ + --uid=1654 \ + --gid=1654 \ + --shell /bin/false \ + --create-home \ + app \ + && install -d -m 0755 -o 1654 -g 1654 "/staging/home/app" \ + && rootOrAppRegex='^\(root\|app\):' \ + && cat /etc/passwd | grep $rootOrAppRegex > "/staging/etc/passwd" \ + && cat /etc/group | grep $rootOrAppRegex > "/staging/etc/group" + +# Clean up staging +RUN rm -rf /staging/etc/tdnf \ + && rm -rf /staging/run/* \ + && rm -rf /staging/var/cache/tdnf \ + && rm -rf /staging/var/lib/rpm \ + && rm -rf /staging/usr/share/doc \ + && rm -rf /staging/usr/share/man \ + && find /staging/var/log -type f -size +0 -delete + + +# .NET runtime-deps image +FROM mcr.microsoft.com/azurelinux/distroless/minimal:3.0 + +ENV \ + # UID of the non-root user 'app' + APP_UID=1654 \ + # Configure web servers to bind to port 8080 when present + ASPNETCORE_HTTP_PORTS=8080 \ + # Enable detection of running in a container + DOTNET_RUNNING_IN_CONTAINER=true \ + # Set the invariant mode since ICU package isn't included (see https://github.com/dotnet/announcements/issues/20) + DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=true + +COPY --from=installer /staging/ / + +# Workaround for https://github.com/moby/moby/issues/38710 +COPY --from=installer --chown=1654:1654 /staging/home/app /home/app + +USER $APP_UID diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/azurelinux3.0-distroless/arm64v8/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/azurelinux3.0-distroless/arm64v8/Dockerfile.verified.noextension new file mode 100644 index 0000000000..39adf24f0e --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/azurelinux3.0-distroless/arm64v8/Dockerfile.verified.noextension @@ -0,0 +1,72 @@ +# Installer image +FROM mcr.microsoft.com/azurelinux/base/core:3.0 AS installer + +RUN tdnf install -y \ + gawk \ + shadow-utils \ + && tdnf clean all + +# Install .NET's dependencies into a staging location +RUN mkdir /staging \ + && tdnf install -y --releasever=3.0 --installroot /staging \ + prebuilt-ca-certificates \ + \ + # .NET dependencies + glibc \ + libgcc \ + libstdc++ \ + openssl-libs \ + && tdnf clean all --releasever=3.0 --installroot /staging + +# Generate RPM manifest file by appending to the original manifest file from base distroless image +COPY --from=mcr.microsoft.com/azurelinux/distroless/minimal:3.0 /var/lib/rpmmanifest/container-manifest-2 /tmp/rpmmanifest +RUN tmpManifestPath="/tmp/rpmmanifest" \ + && rpm --query --all --queryformat "%{NAME}\t%{VERSION}-%{RELEASE}\t%{INSTALLTIME}\t%{BUILDTIME}\t%{VENDOR}\t%{EPOCH}\t%{SIZE}\t%{ARCH}\t%{EPOCHNUM}\t%{SOURCERPM}\n" --root /staging | grep -v gpg-pubkey >> $tmpManifestPath \ + && mkdir -p /staging/var/lib/rpmmanifest \ + # Remove duplicates that match on the first field (package name) + && tac $tmpManifestPath | gawk '!x[$1]++' | sort > /staging/var/lib/rpmmanifest/container-manifest-2 + +# Create a non-root user and group +RUN groupadd \ + --gid=1654 \ + app \ + && useradd -l \ + --uid=1654 \ + --gid=1654 \ + --shell /bin/false \ + --create-home \ + app \ + && install -d -m 0755 -o 1654 -g 1654 "/staging/home/app" \ + && rootOrAppRegex='^\(root\|app\):' \ + && cat /etc/passwd | grep $rootOrAppRegex > "/staging/etc/passwd" \ + && cat /etc/group | grep $rootOrAppRegex > "/staging/etc/group" + +# Clean up staging +RUN rm -rf /staging/etc/tdnf \ + && rm -rf /staging/run/* \ + && rm -rf /staging/var/cache/tdnf \ + && rm -rf /staging/var/lib/rpm \ + && rm -rf /staging/usr/share/doc \ + && rm -rf /staging/usr/share/man \ + && find /staging/var/log -type f -size +0 -delete + + +# .NET runtime-deps image +FROM mcr.microsoft.com/azurelinux/distroless/minimal:3.0 + +ENV \ + # UID of the non-root user 'app' + APP_UID=1654 \ + # Configure web servers to bind to port 8080 when present + ASPNETCORE_HTTP_PORTS=8080 \ + # Enable detection of running in a container + DOTNET_RUNNING_IN_CONTAINER=true \ + # Set the invariant mode since ICU package isn't included (see https://github.com/dotnet/announcements/issues/20) + DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=true + +COPY --from=installer /staging/ / + +# Workaround for https://github.com/moby/moby/issues/38710 +COPY --from=installer --chown=1654:1654 /staging/home/app /home/app + +USER $APP_UID diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/azurelinux3.0/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/azurelinux3.0/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..83185f9f89 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/azurelinux3.0/amd64/Dockerfile.verified.noextension @@ -0,0 +1,55 @@ +FROM mcr.microsoft.com/azurelinux/base/core:3.0 AS base + +ENV \ + # UID of the non-root user 'app' + APP_UID=1654 \ + # Configure web servers to bind to port 8080 when present + ASPNETCORE_HTTP_PORTS=8080 \ + # Enable detection of running in a container + DOTNET_RUNNING_IN_CONTAINER=true + +RUN tdnf install -y \ + ca-certificates \ + \ + # .NET dependencies + glibc \ + icu \ + libgcc \ + libstdc++ \ + openssl-libs \ + tzdata \ + && tdnf clean all + + +FROM base AS installer + +RUN tdnf install -y \ + shadow-utils \ + && tdnf clean all + +# Create a non-root user and group +RUN tdnf install -y \ + shadow-utils \ + && groupadd \ + --gid=$APP_UID \ + app \ + && useradd -l \ + --uid=$APP_UID \ + --gid=$APP_UID \ + --no-create-home \ + app \ + && tdnf autoremove -y \ + shadow-utils \ + && tdnf clean all \ + && mkdir -p "/staging/etc" \ + # Copy user/group info to staging + && cp /etc/passwd /staging/etc/passwd \ + && cp /etc/group /staging/etc/group + + +# Final image +FROM base + +COPY --from=installer /staging/ / + +RUN install -d -m 0755 -o $APP_UID -g $APP_UID "/home/app" diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/azurelinux3.0/arm64v8/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/azurelinux3.0/arm64v8/Dockerfile.verified.noextension new file mode 100644 index 0000000000..83185f9f89 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/azurelinux3.0/arm64v8/Dockerfile.verified.noextension @@ -0,0 +1,55 @@ +FROM mcr.microsoft.com/azurelinux/base/core:3.0 AS base + +ENV \ + # UID of the non-root user 'app' + APP_UID=1654 \ + # Configure web servers to bind to port 8080 when present + ASPNETCORE_HTTP_PORTS=8080 \ + # Enable detection of running in a container + DOTNET_RUNNING_IN_CONTAINER=true + +RUN tdnf install -y \ + ca-certificates \ + \ + # .NET dependencies + glibc \ + icu \ + libgcc \ + libstdc++ \ + openssl-libs \ + tzdata \ + && tdnf clean all + + +FROM base AS installer + +RUN tdnf install -y \ + shadow-utils \ + && tdnf clean all + +# Create a non-root user and group +RUN tdnf install -y \ + shadow-utils \ + && groupadd \ + --gid=$APP_UID \ + app \ + && useradd -l \ + --uid=$APP_UID \ + --gid=$APP_UID \ + --no-create-home \ + app \ + && tdnf autoremove -y \ + shadow-utils \ + && tdnf clean all \ + && mkdir -p "/staging/etc" \ + # Copy user/group info to staging + && cp /etc/passwd /staging/etc/passwd \ + && cp /etc/group /staging/etc/group + + +# Final image +FROM base + +COPY --from=installer /staging/ / + +RUN install -d -m 0755 -o $APP_UID -g $APP_UID "/home/app" diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/bookworm-slim/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/bookworm-slim/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..881cd7f9b7 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/bookworm-slim/amd64/Dockerfile.verified.noextension @@ -0,0 +1,51 @@ +FROM amd64/debian:bookworm-slim AS base + +ENV \ + # UID of the non-root user 'app' + APP_UID=1654 \ + # Configure web servers to bind to port 8080 when present + ASPNETCORE_HTTP_PORTS=8080 \ + # Enable detection of running in a container + DOTNET_RUNNING_IN_CONTAINER=true + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + ca-certificates \ + \ + # .NET dependencies + libc6 \ + libgcc-s1 \ + libicu72 \ + libssl3 \ + libstdc++6 \ + tzdata \ + && rm -rf /var/lib/apt/lists/* + + +FROM base AS installer + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + && rm -rf /var/lib/apt/lists/* + +# Create a non-root user and group +RUN groupadd \ + --gid=$APP_UID \ + app \ + && useradd -l \ + --uid=$APP_UID \ + --gid=$APP_UID \ + --no-create-home \ + app \ + && mkdir -p "/staging/etc" \ + # Copy user/group info to staging + && cp /etc/passwd /staging/etc/passwd \ + && cp /etc/group /staging/etc/group + + +# Final image +FROM base + +COPY --from=installer /staging/ / + +RUN install -d -m 0755 -o $APP_UID -g $APP_UID "/home/app" diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/bookworm-slim/arm32v7/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/bookworm-slim/arm32v7/Dockerfile.verified.noextension new file mode 100644 index 0000000000..70da3d6345 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/bookworm-slim/arm32v7/Dockerfile.verified.noextension @@ -0,0 +1,51 @@ +FROM arm32v7/debian:bookworm-slim AS base + +ENV \ + # UID of the non-root user 'app' + APP_UID=1654 \ + # Configure web servers to bind to port 8080 when present + ASPNETCORE_HTTP_PORTS=8080 \ + # Enable detection of running in a container + DOTNET_RUNNING_IN_CONTAINER=true + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + ca-certificates \ + \ + # .NET dependencies + libc6 \ + libgcc-s1 \ + libicu72 \ + libssl3 \ + libstdc++6 \ + tzdata \ + && rm -rf /var/lib/apt/lists/* + + +FROM base AS installer + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + && rm -rf /var/lib/apt/lists/* + +# Create a non-root user and group +RUN groupadd \ + --gid=$APP_UID \ + app \ + && useradd -l \ + --uid=$APP_UID \ + --gid=$APP_UID \ + --no-create-home \ + app \ + && mkdir -p "/staging/etc" \ + # Copy user/group info to staging + && cp /etc/passwd /staging/etc/passwd \ + && cp /etc/group /staging/etc/group + + +# Final image +FROM base + +COPY --from=installer /staging/ / + +RUN install -d -m 0755 -o $APP_UID -g $APP_UID "/home/app" diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/bookworm-slim/arm64v8/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/bookworm-slim/arm64v8/Dockerfile.verified.noextension new file mode 100644 index 0000000000..2234dfc842 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/bookworm-slim/arm64v8/Dockerfile.verified.noextension @@ -0,0 +1,51 @@ +FROM arm64v8/debian:bookworm-slim AS base + +ENV \ + # UID of the non-root user 'app' + APP_UID=1654 \ + # Configure web servers to bind to port 8080 when present + ASPNETCORE_HTTP_PORTS=8080 \ + # Enable detection of running in a container + DOTNET_RUNNING_IN_CONTAINER=true + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + ca-certificates \ + \ + # .NET dependencies + libc6 \ + libgcc-s1 \ + libicu72 \ + libssl3 \ + libstdc++6 \ + tzdata \ + && rm -rf /var/lib/apt/lists/* + + +FROM base AS installer + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + && rm -rf /var/lib/apt/lists/* + +# Create a non-root user and group +RUN groupadd \ + --gid=$APP_UID \ + app \ + && useradd -l \ + --uid=$APP_UID \ + --gid=$APP_UID \ + --no-create-home \ + app \ + && mkdir -p "/staging/etc" \ + # Copy user/group info to staging + && cp /etc/passwd /staging/etc/passwd \ + && cp /etc/group /staging/etc/group + + +# Final image +FROM base + +COPY --from=installer /staging/ / + +RUN install -d -m 0755 -o $APP_UID -g $APP_UID "/home/app" diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/noble-chiseled-aot/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/noble-chiseled-aot/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..15b67decbb --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/noble-chiseled-aot/amd64/Dockerfile.verified.noextension @@ -0,0 +1,54 @@ +FROM amd64/buildpack-deps:noble-curl AS chisel + +RUN apt-get update && apt-get install -y file + +RUN curl -u :$ACCESSTOKEN --basic -fSL --output chisel.tar.gz "https://github.com/canonical/chisel/releases/download/v0.0.0/chisel_v0.0.0_linux_amd64.tar.gz" \ + && chisel_sha384='{sha386_placeholder}' \ + && echo "$chisel_sha384 chisel.tar.gz" | sha384sum -c - \ + && tar -xzf chisel.tar.gz -C /usr/bin/ chisel \ + && curl -u :$ACCESSTOKEN --basic -fSL --output /usr/bin/chisel-wrapper "https://raw.githubusercontent.com/canonical/rocks-toolbox/v0.0.0/chisel-wrapper" \ + && chmod 755 /usr/bin/chisel-wrapper + +RUN groupadd \ + --gid=1654 \ + app \ + && useradd -l \ + --uid=1654 \ + --gid=1654 \ + --shell /bin/false \ + app \ + && install -d -m 0755 -o 1654 -g 1654 "/rootfs/home/app" \ + && mkdir -p "/rootfs/etc" \ + && rootOrAppRegex='^\(root\|app\):' \ + && cat /etc/passwd | grep $rootOrAppRegex > "/rootfs/etc/passwd" \ + && cat /etc/group | grep $rootOrAppRegex > "/rootfs/etc/group" + +RUN mkdir -p /rootfs/var/lib/dpkg/ \ + && chisel-wrapper --generate-dpkg-status /rootfs/var/lib/dpkg/status -- \ + --release ubuntu-24.04 --root /rootfs \ + base-files_base \ + base-files_release-info \ + ca-certificates_data \ + libc6_libs \ + libgcc-s1_libs \ + libssl3t64_libs + + +FROM scratch + +COPY --from=chisel /rootfs / + +ENV \ + # UID of the non-root user 'app' + APP_UID=1654 \ + # Configure web servers to bind to port 8080 when present + ASPNETCORE_HTTP_PORTS=8080 \ + # Enable detection of running in a container + DOTNET_RUNNING_IN_CONTAINER=true \ + # Set the invariant mode since ICU package isn't included (see https://github.com/dotnet/announcements/issues/20) + DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=true + +# Workaround for https://github.com/moby/moby/issues/38710 +COPY --from=chisel --chown=$APP_UID:$APP_UID /rootfs/home/app /home/app + +USER $APP_UID diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/noble-chiseled-aot/arm32v7/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/noble-chiseled-aot/arm32v7/Dockerfile.verified.noextension new file mode 100644 index 0000000000..f4e4be3080 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/noble-chiseled-aot/arm32v7/Dockerfile.verified.noextension @@ -0,0 +1,54 @@ +FROM arm32v7/buildpack-deps:noble-curl AS chisel + +RUN apt-get update && apt-get install -y file + +RUN curl -u :$ACCESSTOKEN --basic -fSL --output chisel.tar.gz "https://github.com/canonical/chisel/releases/download/v0.0.0/chisel_v0.0.0_linux_arm.tar.gz" \ + && chisel_sha384='{sha386_placeholder}' \ + && echo "$chisel_sha384 chisel.tar.gz" | sha384sum -c - \ + && tar -xzf chisel.tar.gz -C /usr/bin/ chisel \ + && curl -u :$ACCESSTOKEN --basic -fSL --output /usr/bin/chisel-wrapper "https://raw.githubusercontent.com/canonical/rocks-toolbox/v0.0.0/chisel-wrapper" \ + && chmod 755 /usr/bin/chisel-wrapper + +RUN groupadd \ + --gid=1654 \ + app \ + && useradd -l \ + --uid=1654 \ + --gid=1654 \ + --shell /bin/false \ + app \ + && install -d -m 0755 -o 1654 -g 1654 "/rootfs/home/app" \ + && mkdir -p "/rootfs/etc" \ + && rootOrAppRegex='^\(root\|app\):' \ + && cat /etc/passwd | grep $rootOrAppRegex > "/rootfs/etc/passwd" \ + && cat /etc/group | grep $rootOrAppRegex > "/rootfs/etc/group" + +RUN mkdir -p /rootfs/var/lib/dpkg/ \ + && chisel-wrapper --generate-dpkg-status /rootfs/var/lib/dpkg/status -- \ + --release ubuntu-24.04 --root /rootfs \ + base-files_base \ + base-files_release-info \ + ca-certificates_data \ + libc6_libs \ + libgcc-s1_libs \ + libssl3t64_libs + + +FROM scratch + +COPY --from=chisel /rootfs / + +ENV \ + # UID of the non-root user 'app' + APP_UID=1654 \ + # Configure web servers to bind to port 8080 when present + ASPNETCORE_HTTP_PORTS=8080 \ + # Enable detection of running in a container + DOTNET_RUNNING_IN_CONTAINER=true \ + # Set the invariant mode since ICU package isn't included (see https://github.com/dotnet/announcements/issues/20) + DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=true + +# Workaround for https://github.com/moby/moby/issues/38710 +COPY --from=chisel --chown=$APP_UID:$APP_UID /rootfs/home/app /home/app + +USER $APP_UID diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/noble-chiseled-aot/arm64v8/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/noble-chiseled-aot/arm64v8/Dockerfile.verified.noextension new file mode 100644 index 0000000000..d98c6b253d --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/noble-chiseled-aot/arm64v8/Dockerfile.verified.noextension @@ -0,0 +1,54 @@ +FROM arm64v8/buildpack-deps:noble-curl AS chisel + +RUN apt-get update && apt-get install -y file + +RUN curl -u :$ACCESSTOKEN --basic -fSL --output chisel.tar.gz "https://github.com/canonical/chisel/releases/download/v0.0.0/chisel_v0.0.0_linux_arm64.tar.gz" \ + && chisel_sha384='{sha386_placeholder}' \ + && echo "$chisel_sha384 chisel.tar.gz" | sha384sum -c - \ + && tar -xzf chisel.tar.gz -C /usr/bin/ chisel \ + && curl -u :$ACCESSTOKEN --basic -fSL --output /usr/bin/chisel-wrapper "https://raw.githubusercontent.com/canonical/rocks-toolbox/v0.0.0/chisel-wrapper" \ + && chmod 755 /usr/bin/chisel-wrapper + +RUN groupadd \ + --gid=1654 \ + app \ + && useradd -l \ + --uid=1654 \ + --gid=1654 \ + --shell /bin/false \ + app \ + && install -d -m 0755 -o 1654 -g 1654 "/rootfs/home/app" \ + && mkdir -p "/rootfs/etc" \ + && rootOrAppRegex='^\(root\|app\):' \ + && cat /etc/passwd | grep $rootOrAppRegex > "/rootfs/etc/passwd" \ + && cat /etc/group | grep $rootOrAppRegex > "/rootfs/etc/group" + +RUN mkdir -p /rootfs/var/lib/dpkg/ \ + && chisel-wrapper --generate-dpkg-status /rootfs/var/lib/dpkg/status -- \ + --release ubuntu-24.04 --root /rootfs \ + base-files_base \ + base-files_release-info \ + ca-certificates_data \ + libc6_libs \ + libgcc-s1_libs \ + libssl3t64_libs + + +FROM scratch + +COPY --from=chisel /rootfs / + +ENV \ + # UID of the non-root user 'app' + APP_UID=1654 \ + # Configure web servers to bind to port 8080 when present + ASPNETCORE_HTTP_PORTS=8080 \ + # Enable detection of running in a container + DOTNET_RUNNING_IN_CONTAINER=true \ + # Set the invariant mode since ICU package isn't included (see https://github.com/dotnet/announcements/issues/20) + DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=true + +# Workaround for https://github.com/moby/moby/issues/38710 +COPY --from=chisel --chown=$APP_UID:$APP_UID /rootfs/home/app /home/app + +USER $APP_UID diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/noble-chiseled-extra/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/noble-chiseled-extra/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..9d5ff54705 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/noble-chiseled-extra/amd64/Dockerfile.verified.noextension @@ -0,0 +1,56 @@ +FROM amd64/buildpack-deps:noble-curl AS chisel + +RUN apt-get update && apt-get install -y file + +RUN curl -u :$ACCESSTOKEN --basic -fSL --output chisel.tar.gz "https://github.com/canonical/chisel/releases/download/v0.0.0/chisel_v0.0.0_linux_amd64.tar.gz" \ + && chisel_sha384='{sha386_placeholder}' \ + && echo "$chisel_sha384 chisel.tar.gz" | sha384sum -c - \ + && tar -xzf chisel.tar.gz -C /usr/bin/ chisel \ + && curl -u :$ACCESSTOKEN --basic -fSL --output /usr/bin/chisel-wrapper "https://raw.githubusercontent.com/canonical/rocks-toolbox/v0.0.0/chisel-wrapper" \ + && chmod 755 /usr/bin/chisel-wrapper + +RUN groupadd \ + --gid=1654 \ + app \ + && useradd -l \ + --uid=1654 \ + --gid=1654 \ + --shell /bin/false \ + app \ + && install -d -m 0755 -o 1654 -g 1654 "/rootfs/home/app" \ + && mkdir -p "/rootfs/etc" \ + && rootOrAppRegex='^\(root\|app\):' \ + && cat /etc/passwd | grep $rootOrAppRegex > "/rootfs/etc/passwd" \ + && cat /etc/group | grep $rootOrAppRegex > "/rootfs/etc/group" + +RUN mkdir -p /rootfs/var/lib/dpkg/ \ + && chisel-wrapper --generate-dpkg-status /rootfs/var/lib/dpkg/status -- \ + --release ubuntu-24.04 --root /rootfs \ + base-files_base \ + base-files_release-info \ + ca-certificates_data \ + libc6_libs \ + libgcc-s1_libs \ + libicu74_libs \ + libssl3t64_libs \ + libstdc++6_libs \ + tzdata-legacy_zoneinfo \ + tzdata_zoneinfo + + +FROM scratch + +COPY --from=chisel /rootfs / + +ENV \ + # UID of the non-root user 'app' + APP_UID=1654 \ + # Configure web servers to bind to port 8080 when present + ASPNETCORE_HTTP_PORTS=8080 \ + # Enable detection of running in a container + DOTNET_RUNNING_IN_CONTAINER=true + +# Workaround for https://github.com/moby/moby/issues/38710 +COPY --from=chisel --chown=$APP_UID:$APP_UID /rootfs/home/app /home/app + +USER $APP_UID diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/noble-chiseled-extra/arm32v7/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/noble-chiseled-extra/arm32v7/Dockerfile.verified.noextension new file mode 100644 index 0000000000..f2a9ddb5ae --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/noble-chiseled-extra/arm32v7/Dockerfile.verified.noextension @@ -0,0 +1,56 @@ +FROM arm32v7/buildpack-deps:noble-curl AS chisel + +RUN apt-get update && apt-get install -y file + +RUN curl -u :$ACCESSTOKEN --basic -fSL --output chisel.tar.gz "https://github.com/canonical/chisel/releases/download/v0.0.0/chisel_v0.0.0_linux_arm.tar.gz" \ + && chisel_sha384='{sha386_placeholder}' \ + && echo "$chisel_sha384 chisel.tar.gz" | sha384sum -c - \ + && tar -xzf chisel.tar.gz -C /usr/bin/ chisel \ + && curl -u :$ACCESSTOKEN --basic -fSL --output /usr/bin/chisel-wrapper "https://raw.githubusercontent.com/canonical/rocks-toolbox/v0.0.0/chisel-wrapper" \ + && chmod 755 /usr/bin/chisel-wrapper + +RUN groupadd \ + --gid=1654 \ + app \ + && useradd -l \ + --uid=1654 \ + --gid=1654 \ + --shell /bin/false \ + app \ + && install -d -m 0755 -o 1654 -g 1654 "/rootfs/home/app" \ + && mkdir -p "/rootfs/etc" \ + && rootOrAppRegex='^\(root\|app\):' \ + && cat /etc/passwd | grep $rootOrAppRegex > "/rootfs/etc/passwd" \ + && cat /etc/group | grep $rootOrAppRegex > "/rootfs/etc/group" + +RUN mkdir -p /rootfs/var/lib/dpkg/ \ + && chisel-wrapper --generate-dpkg-status /rootfs/var/lib/dpkg/status -- \ + --release ubuntu-24.04 --root /rootfs \ + base-files_base \ + base-files_release-info \ + ca-certificates_data \ + libc6_libs \ + libgcc-s1_libs \ + libicu74_libs \ + libssl3t64_libs \ + libstdc++6_libs \ + tzdata-legacy_zoneinfo \ + tzdata_zoneinfo + + +FROM scratch + +COPY --from=chisel /rootfs / + +ENV \ + # UID of the non-root user 'app' + APP_UID=1654 \ + # Configure web servers to bind to port 8080 when present + ASPNETCORE_HTTP_PORTS=8080 \ + # Enable detection of running in a container + DOTNET_RUNNING_IN_CONTAINER=true + +# Workaround for https://github.com/moby/moby/issues/38710 +COPY --from=chisel --chown=$APP_UID:$APP_UID /rootfs/home/app /home/app + +USER $APP_UID diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/noble-chiseled-extra/arm64v8/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/noble-chiseled-extra/arm64v8/Dockerfile.verified.noextension new file mode 100644 index 0000000000..c26b99d05f --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/noble-chiseled-extra/arm64v8/Dockerfile.verified.noextension @@ -0,0 +1,56 @@ +FROM arm64v8/buildpack-deps:noble-curl AS chisel + +RUN apt-get update && apt-get install -y file + +RUN curl -u :$ACCESSTOKEN --basic -fSL --output chisel.tar.gz "https://github.com/canonical/chisel/releases/download/v0.0.0/chisel_v0.0.0_linux_arm64.tar.gz" \ + && chisel_sha384='{sha386_placeholder}' \ + && echo "$chisel_sha384 chisel.tar.gz" | sha384sum -c - \ + && tar -xzf chisel.tar.gz -C /usr/bin/ chisel \ + && curl -u :$ACCESSTOKEN --basic -fSL --output /usr/bin/chisel-wrapper "https://raw.githubusercontent.com/canonical/rocks-toolbox/v0.0.0/chisel-wrapper" \ + && chmod 755 /usr/bin/chisel-wrapper + +RUN groupadd \ + --gid=1654 \ + app \ + && useradd -l \ + --uid=1654 \ + --gid=1654 \ + --shell /bin/false \ + app \ + && install -d -m 0755 -o 1654 -g 1654 "/rootfs/home/app" \ + && mkdir -p "/rootfs/etc" \ + && rootOrAppRegex='^\(root\|app\):' \ + && cat /etc/passwd | grep $rootOrAppRegex > "/rootfs/etc/passwd" \ + && cat /etc/group | grep $rootOrAppRegex > "/rootfs/etc/group" + +RUN mkdir -p /rootfs/var/lib/dpkg/ \ + && chisel-wrapper --generate-dpkg-status /rootfs/var/lib/dpkg/status -- \ + --release ubuntu-24.04 --root /rootfs \ + base-files_base \ + base-files_release-info \ + ca-certificates_data \ + libc6_libs \ + libgcc-s1_libs \ + libicu74_libs \ + libssl3t64_libs \ + libstdc++6_libs \ + tzdata-legacy_zoneinfo \ + tzdata_zoneinfo + + +FROM scratch + +COPY --from=chisel /rootfs / + +ENV \ + # UID of the non-root user 'app' + APP_UID=1654 \ + # Configure web servers to bind to port 8080 when present + ASPNETCORE_HTTP_PORTS=8080 \ + # Enable detection of running in a container + DOTNET_RUNNING_IN_CONTAINER=true + +# Workaround for https://github.com/moby/moby/issues/38710 +COPY --from=chisel --chown=$APP_UID:$APP_UID /rootfs/home/app /home/app + +USER $APP_UID diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/noble-chiseled/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/noble-chiseled/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..bb9c530c14 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/noble-chiseled/amd64/Dockerfile.verified.noextension @@ -0,0 +1,55 @@ +FROM amd64/buildpack-deps:noble-curl AS chisel + +RUN apt-get update && apt-get install -y file + +RUN curl -u :$ACCESSTOKEN --basic -fSL --output chisel.tar.gz "https://github.com/canonical/chisel/releases/download/v0.0.0/chisel_v0.0.0_linux_amd64.tar.gz" \ + && chisel_sha384='{sha386_placeholder}' \ + && echo "$chisel_sha384 chisel.tar.gz" | sha384sum -c - \ + && tar -xzf chisel.tar.gz -C /usr/bin/ chisel \ + && curl -u :$ACCESSTOKEN --basic -fSL --output /usr/bin/chisel-wrapper "https://raw.githubusercontent.com/canonical/rocks-toolbox/v0.0.0/chisel-wrapper" \ + && chmod 755 /usr/bin/chisel-wrapper + +RUN groupadd \ + --gid=1654 \ + app \ + && useradd -l \ + --uid=1654 \ + --gid=1654 \ + --shell /bin/false \ + app \ + && install -d -m 0755 -o 1654 -g 1654 "/rootfs/home/app" \ + && mkdir -p "/rootfs/etc" \ + && rootOrAppRegex='^\(root\|app\):' \ + && cat /etc/passwd | grep $rootOrAppRegex > "/rootfs/etc/passwd" \ + && cat /etc/group | grep $rootOrAppRegex > "/rootfs/etc/group" + +RUN mkdir -p /rootfs/var/lib/dpkg/ \ + && chisel-wrapper --generate-dpkg-status /rootfs/var/lib/dpkg/status -- \ + --release ubuntu-24.04 --root /rootfs \ + base-files_base \ + base-files_release-info \ + ca-certificates_data \ + libc6_libs \ + libgcc-s1_libs \ + libssl3t64_libs \ + libstdc++6_libs + + +FROM scratch + +COPY --from=chisel /rootfs / + +ENV \ + # UID of the non-root user 'app' + APP_UID=1654 \ + # Configure web servers to bind to port 8080 when present + ASPNETCORE_HTTP_PORTS=8080 \ + # Enable detection of running in a container + DOTNET_RUNNING_IN_CONTAINER=true \ + # Set the invariant mode since ICU package isn't included (see https://github.com/dotnet/announcements/issues/20) + DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=true + +# Workaround for https://github.com/moby/moby/issues/38710 +COPY --from=chisel --chown=$APP_UID:$APP_UID /rootfs/home/app /home/app + +USER $APP_UID diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/noble-chiseled/arm32v7/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/noble-chiseled/arm32v7/Dockerfile.verified.noextension new file mode 100644 index 0000000000..6d8db945c4 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/noble-chiseled/arm32v7/Dockerfile.verified.noextension @@ -0,0 +1,55 @@ +FROM arm32v7/buildpack-deps:noble-curl AS chisel + +RUN apt-get update && apt-get install -y file + +RUN curl -u :$ACCESSTOKEN --basic -fSL --output chisel.tar.gz "https://github.com/canonical/chisel/releases/download/v0.0.0/chisel_v0.0.0_linux_arm.tar.gz" \ + && chisel_sha384='{sha386_placeholder}' \ + && echo "$chisel_sha384 chisel.tar.gz" | sha384sum -c - \ + && tar -xzf chisel.tar.gz -C /usr/bin/ chisel \ + && curl -u :$ACCESSTOKEN --basic -fSL --output /usr/bin/chisel-wrapper "https://raw.githubusercontent.com/canonical/rocks-toolbox/v0.0.0/chisel-wrapper" \ + && chmod 755 /usr/bin/chisel-wrapper + +RUN groupadd \ + --gid=1654 \ + app \ + && useradd -l \ + --uid=1654 \ + --gid=1654 \ + --shell /bin/false \ + app \ + && install -d -m 0755 -o 1654 -g 1654 "/rootfs/home/app" \ + && mkdir -p "/rootfs/etc" \ + && rootOrAppRegex='^\(root\|app\):' \ + && cat /etc/passwd | grep $rootOrAppRegex > "/rootfs/etc/passwd" \ + && cat /etc/group | grep $rootOrAppRegex > "/rootfs/etc/group" + +RUN mkdir -p /rootfs/var/lib/dpkg/ \ + && chisel-wrapper --generate-dpkg-status /rootfs/var/lib/dpkg/status -- \ + --release ubuntu-24.04 --root /rootfs \ + base-files_base \ + base-files_release-info \ + ca-certificates_data \ + libc6_libs \ + libgcc-s1_libs \ + libssl3t64_libs \ + libstdc++6_libs + + +FROM scratch + +COPY --from=chisel /rootfs / + +ENV \ + # UID of the non-root user 'app' + APP_UID=1654 \ + # Configure web servers to bind to port 8080 when present + ASPNETCORE_HTTP_PORTS=8080 \ + # Enable detection of running in a container + DOTNET_RUNNING_IN_CONTAINER=true \ + # Set the invariant mode since ICU package isn't included (see https://github.com/dotnet/announcements/issues/20) + DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=true + +# Workaround for https://github.com/moby/moby/issues/38710 +COPY --from=chisel --chown=$APP_UID:$APP_UID /rootfs/home/app /home/app + +USER $APP_UID diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/noble-chiseled/arm64v8/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/noble-chiseled/arm64v8/Dockerfile.verified.noextension new file mode 100644 index 0000000000..4cea068e9d --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/noble-chiseled/arm64v8/Dockerfile.verified.noextension @@ -0,0 +1,55 @@ +FROM arm64v8/buildpack-deps:noble-curl AS chisel + +RUN apt-get update && apt-get install -y file + +RUN curl -u :$ACCESSTOKEN --basic -fSL --output chisel.tar.gz "https://github.com/canonical/chisel/releases/download/v0.0.0/chisel_v0.0.0_linux_arm64.tar.gz" \ + && chisel_sha384='{sha386_placeholder}' \ + && echo "$chisel_sha384 chisel.tar.gz" | sha384sum -c - \ + && tar -xzf chisel.tar.gz -C /usr/bin/ chisel \ + && curl -u :$ACCESSTOKEN --basic -fSL --output /usr/bin/chisel-wrapper "https://raw.githubusercontent.com/canonical/rocks-toolbox/v0.0.0/chisel-wrapper" \ + && chmod 755 /usr/bin/chisel-wrapper + +RUN groupadd \ + --gid=1654 \ + app \ + && useradd -l \ + --uid=1654 \ + --gid=1654 \ + --shell /bin/false \ + app \ + && install -d -m 0755 -o 1654 -g 1654 "/rootfs/home/app" \ + && mkdir -p "/rootfs/etc" \ + && rootOrAppRegex='^\(root\|app\):' \ + && cat /etc/passwd | grep $rootOrAppRegex > "/rootfs/etc/passwd" \ + && cat /etc/group | grep $rootOrAppRegex > "/rootfs/etc/group" + +RUN mkdir -p /rootfs/var/lib/dpkg/ \ + && chisel-wrapper --generate-dpkg-status /rootfs/var/lib/dpkg/status -- \ + --release ubuntu-24.04 --root /rootfs \ + base-files_base \ + base-files_release-info \ + ca-certificates_data \ + libc6_libs \ + libgcc-s1_libs \ + libssl3t64_libs \ + libstdc++6_libs + + +FROM scratch + +COPY --from=chisel /rootfs / + +ENV \ + # UID of the non-root user 'app' + APP_UID=1654 \ + # Configure web servers to bind to port 8080 when present + ASPNETCORE_HTTP_PORTS=8080 \ + # Enable detection of running in a container + DOTNET_RUNNING_IN_CONTAINER=true \ + # Set the invariant mode since ICU package isn't included (see https://github.com/dotnet/announcements/issues/20) + DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=true + +# Workaround for https://github.com/moby/moby/issues/38710 +COPY --from=chisel --chown=$APP_UID:$APP_UID /rootfs/home/app /home/app + +USER $APP_UID diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/noble/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/noble/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..ccdd08e915 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/noble/amd64/Dockerfile.verified.noextension @@ -0,0 +1,52 @@ +FROM ubuntu.azurecr.io/ubuntu:noble AS base + +ENV \ + # UID of the non-root user 'app' + APP_UID=1654 \ + # Configure web servers to bind to port 8080 when present + ASPNETCORE_HTTP_PORTS=8080 \ + # Enable detection of running in a container + DOTNET_RUNNING_IN_CONTAINER=true + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + ca-certificates \ + \ + # .NET dependencies + libc6 \ + libgcc-s1 \ + libicu74 \ + libssl3t64 \ + libstdc++6 \ + tzdata \ + tzdata-legacy \ + && rm -rf /var/lib/apt/lists/* + + +FROM base AS installer + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + && rm -rf /var/lib/apt/lists/* + +# Create a non-root user and group +RUN groupadd \ + --gid=$APP_UID \ + app \ + && useradd -l \ + --uid=$APP_UID \ + --gid=$APP_UID \ + --no-create-home \ + app \ + && mkdir -p "/staging/etc" \ + # Copy user/group info to staging + && cp /etc/passwd /staging/etc/passwd \ + && cp /etc/group /staging/etc/group + + +# Final image +FROM base + +COPY --from=installer /staging/ / + +RUN install -d -m 0755 -o $APP_UID -g $APP_UID "/home/app" diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/noble/arm32v7/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/noble/arm32v7/Dockerfile.verified.noextension new file mode 100644 index 0000000000..ccdd08e915 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/noble/arm32v7/Dockerfile.verified.noextension @@ -0,0 +1,52 @@ +FROM ubuntu.azurecr.io/ubuntu:noble AS base + +ENV \ + # UID of the non-root user 'app' + APP_UID=1654 \ + # Configure web servers to bind to port 8080 when present + ASPNETCORE_HTTP_PORTS=8080 \ + # Enable detection of running in a container + DOTNET_RUNNING_IN_CONTAINER=true + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + ca-certificates \ + \ + # .NET dependencies + libc6 \ + libgcc-s1 \ + libicu74 \ + libssl3t64 \ + libstdc++6 \ + tzdata \ + tzdata-legacy \ + && rm -rf /var/lib/apt/lists/* + + +FROM base AS installer + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + && rm -rf /var/lib/apt/lists/* + +# Create a non-root user and group +RUN groupadd \ + --gid=$APP_UID \ + app \ + && useradd -l \ + --uid=$APP_UID \ + --gid=$APP_UID \ + --no-create-home \ + app \ + && mkdir -p "/staging/etc" \ + # Copy user/group info to staging + && cp /etc/passwd /staging/etc/passwd \ + && cp /etc/group /staging/etc/group + + +# Final image +FROM base + +COPY --from=installer /staging/ / + +RUN install -d -m 0755 -o $APP_UID -g $APP_UID "/home/app" diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/noble/arm64v8/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/noble/arm64v8/Dockerfile.verified.noextension new file mode 100644 index 0000000000..ccdd08e915 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime-deps/9.0/noble/arm64v8/Dockerfile.verified.noextension @@ -0,0 +1,52 @@ +FROM ubuntu.azurecr.io/ubuntu:noble AS base + +ENV \ + # UID of the non-root user 'app' + APP_UID=1654 \ + # Configure web servers to bind to port 8080 when present + ASPNETCORE_HTTP_PORTS=8080 \ + # Enable detection of running in a container + DOTNET_RUNNING_IN_CONTAINER=true + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + ca-certificates \ + \ + # .NET dependencies + libc6 \ + libgcc-s1 \ + libicu74 \ + libssl3t64 \ + libstdc++6 \ + tzdata \ + tzdata-legacy \ + && rm -rf /var/lib/apt/lists/* + + +FROM base AS installer + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + && rm -rf /var/lib/apt/lists/* + +# Create a non-root user and group +RUN groupadd \ + --gid=$APP_UID \ + app \ + && useradd -l \ + --uid=$APP_UID \ + --gid=$APP_UID \ + --no-create-home \ + app \ + && mkdir -p "/staging/etc" \ + # Copy user/group info to staging + && cp /etc/passwd /staging/etc/passwd \ + && cp /etc/group /staging/etc/group + + +# Final image +FROM base + +COPY --from=installer /staging/ / + +RUN install -d -m 0755 -o $APP_UID -g $APP_UID "/home/app" diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/alpine3.20/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/alpine3.20/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..95d4ffce39 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/alpine3.20/amd64/Dockerfile.verified.noextension @@ -0,0 +1,23 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime-deps + +# Installer image +FROM $REPO:0.0.0-alpine3.XX-amd64 AS installer + +ARG ACCESSTOKEN + +# Retrieve .NET Runtime +RUN dotnet_version=0.0.0 \ + && wget --header="Authorization: Basic `echo $ACCESSTOKEN:$ACCESSTOKEN | base64 -w 0`" -O dotnet.tar.gz "https://builds.dotnet.microsoft.com/dotnet/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-musl-x64.tar.gz" \ + && dotnet_sha512='{sha512_placeholder}' \ + && echo "$dotnet_sha512 dotnet.tar.gz" | sha512sum -c - \ + && mkdir -p /dotnet \ + && tar -oxzf dotnet.tar.gz -C /dotnet \ + && rm dotnet.tar.gz + + +# .NET runtime image +FROM $REPO:0.0.0-alpine3.XX-amd64 + +# .NET Runtime version +ENV DOTNET_VERSION=0.0.0 + diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/alpine3.20/arm32v7/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/alpine3.20/arm32v7/Dockerfile.verified.noextension new file mode 100644 index 0000000000..92ab9227a9 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/alpine3.20/arm32v7/Dockerfile.verified.noextension @@ -0,0 +1,23 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime-deps + +# Installer image +FROM $REPO:0.0.0-alpine3.XX-arm32v7 AS installer + +ARG ACCESSTOKEN + +# Retrieve .NET Runtime +RUN dotnet_version=0.0.0 \ + && wget --header="Authorization: Basic `echo $ACCESSTOKEN:$ACCESSTOKEN | base64 -w 0`" -O dotnet.tar.gz "https://builds.dotnet.microsoft.com/dotnet/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-musl-arm.tar.gz" \ + && dotnet_sha512='{sha512_placeholder}' \ + && echo "$dotnet_sha512 dotnet.tar.gz" | sha512sum -c - \ + && mkdir -p /dotnet \ + && tar -oxzf dotnet.tar.gz -C /dotnet \ + && rm dotnet.tar.gz + + +# .NET runtime image +FROM $REPO:0.0.0-alpine3.XX-arm32v7 + +# .NET Runtime version +ENV DOTNET_VERSION=0.0.0 + diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/alpine3.20/arm64v8/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/alpine3.20/arm64v8/Dockerfile.verified.noextension new file mode 100644 index 0000000000..f3c8357d42 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/alpine3.20/arm64v8/Dockerfile.verified.noextension @@ -0,0 +1,23 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime-deps + +# Installer image +FROM $REPO:0.0.0-alpine3.XX-arm64v8 AS installer + +ARG ACCESSTOKEN + +# Retrieve .NET Runtime +RUN dotnet_version=0.0.0 \ + && wget --header="Authorization: Basic `echo $ACCESSTOKEN:$ACCESSTOKEN | base64 -w 0`" -O dotnet.tar.gz "https://builds.dotnet.microsoft.com/dotnet/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-musl-arm64.tar.gz" \ + && dotnet_sha512='{sha512_placeholder}' \ + && echo "$dotnet_sha512 dotnet.tar.gz" | sha512sum -c - \ + && mkdir -p /dotnet \ + && tar -oxzf dotnet.tar.gz -C /dotnet \ + && rm dotnet.tar.gz + + +# .NET runtime image +FROM $REPO:0.0.0-alpine3.XX-arm64v8 + +# .NET Runtime version +ENV DOTNET_VERSION=0.0.0 + diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/alpine3.21/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/alpine3.21/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..95d4ffce39 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/alpine3.21/amd64/Dockerfile.verified.noextension @@ -0,0 +1,23 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime-deps + +# Installer image +FROM $REPO:0.0.0-alpine3.XX-amd64 AS installer + +ARG ACCESSTOKEN + +# Retrieve .NET Runtime +RUN dotnet_version=0.0.0 \ + && wget --header="Authorization: Basic `echo $ACCESSTOKEN:$ACCESSTOKEN | base64 -w 0`" -O dotnet.tar.gz "https://builds.dotnet.microsoft.com/dotnet/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-musl-x64.tar.gz" \ + && dotnet_sha512='{sha512_placeholder}' \ + && echo "$dotnet_sha512 dotnet.tar.gz" | sha512sum -c - \ + && mkdir -p /dotnet \ + && tar -oxzf dotnet.tar.gz -C /dotnet \ + && rm dotnet.tar.gz + + +# .NET runtime image +FROM $REPO:0.0.0-alpine3.XX-amd64 + +# .NET Runtime version +ENV DOTNET_VERSION=0.0.0 + diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/alpine3.21/arm32v7/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/alpine3.21/arm32v7/Dockerfile.verified.noextension new file mode 100644 index 0000000000..92ab9227a9 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/alpine3.21/arm32v7/Dockerfile.verified.noextension @@ -0,0 +1,23 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime-deps + +# Installer image +FROM $REPO:0.0.0-alpine3.XX-arm32v7 AS installer + +ARG ACCESSTOKEN + +# Retrieve .NET Runtime +RUN dotnet_version=0.0.0 \ + && wget --header="Authorization: Basic `echo $ACCESSTOKEN:$ACCESSTOKEN | base64 -w 0`" -O dotnet.tar.gz "https://builds.dotnet.microsoft.com/dotnet/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-musl-arm.tar.gz" \ + && dotnet_sha512='{sha512_placeholder}' \ + && echo "$dotnet_sha512 dotnet.tar.gz" | sha512sum -c - \ + && mkdir -p /dotnet \ + && tar -oxzf dotnet.tar.gz -C /dotnet \ + && rm dotnet.tar.gz + + +# .NET runtime image +FROM $REPO:0.0.0-alpine3.XX-arm32v7 + +# .NET Runtime version +ENV DOTNET_VERSION=0.0.0 + diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/alpine3.21/arm64v8/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/alpine3.21/arm64v8/Dockerfile.verified.noextension new file mode 100644 index 0000000000..f3c8357d42 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/alpine3.21/arm64v8/Dockerfile.verified.noextension @@ -0,0 +1,23 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime-deps + +# Installer image +FROM $REPO:0.0.0-alpine3.XX-arm64v8 AS installer + +ARG ACCESSTOKEN + +# Retrieve .NET Runtime +RUN dotnet_version=0.0.0 \ + && wget --header="Authorization: Basic `echo $ACCESSTOKEN:$ACCESSTOKEN | base64 -w 0`" -O dotnet.tar.gz "https://builds.dotnet.microsoft.com/dotnet/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-musl-arm64.tar.gz" \ + && dotnet_sha512='{sha512_placeholder}' \ + && echo "$dotnet_sha512 dotnet.tar.gz" | sha512sum -c - \ + && mkdir -p /dotnet \ + && tar -oxzf dotnet.tar.gz -C /dotnet \ + && rm dotnet.tar.gz + + +# .NET runtime image +FROM $REPO:0.0.0-alpine3.XX-arm64v8 + +# .NET Runtime version +ENV DOTNET_VERSION=0.0.0 + diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/azurelinux3.0-distroless-extra/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/azurelinux3.0-distroless-extra/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..1ff7023ea1 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/azurelinux3.0-distroless-extra/amd64/Dockerfile.verified.noextension @@ -0,0 +1,37 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime-deps + +# Installer image +FROM mcr.microsoft.com/azurelinux/base/core:3.0 AS installer + +ARG ACCESSTOKEN + +RUN tdnf install -y \ + ca-certificates \ + gzip \ + tar \ + && tdnf clean all + +# Retrieve .NET Runtime +RUN dotnet_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output dotnet.tar.gz "https://builds.dotnet.microsoft.com/dotnet/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-x64.tar.gz" \ + && dotnet_sha512='{sha512_placeholder}' \ + && echo "$dotnet_sha512 dotnet.tar.gz" | sha512sum -c - \ + && mkdir -p /usr/share/dotnet \ + && tar -oxzf dotnet.tar.gz -C /usr/share/dotnet \ + && rm dotnet.tar.gz + +RUN mkdir /dotnet-symlink \ + && ln -s /usr/share/dotnet/dotnet /dotnet-symlink/dotnet + + +# .NET runtime image +FROM $REPO:0.0.0-azurelinux3.0-distroless-extra-amd64 + +# .NET Runtime version +ENV DOTNET_VERSION=0.0.0 + +COPY --from=installer ["/usr/share/dotnet", "/usr/share/dotnet"] +COPY --from=installer ["/dotnet-symlink", "/usr/bin"] + +ENTRYPOINT ["/usr/bin/dotnet"] +CMD ["--info"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/azurelinux3.0-distroless-extra/arm64v8/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/azurelinux3.0-distroless-extra/arm64v8/Dockerfile.verified.noextension new file mode 100644 index 0000000000..afe11fcb71 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/azurelinux3.0-distroless-extra/arm64v8/Dockerfile.verified.noextension @@ -0,0 +1,37 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime-deps + +# Installer image +FROM mcr.microsoft.com/azurelinux/base/core:3.0 AS installer + +ARG ACCESSTOKEN + +RUN tdnf install -y \ + ca-certificates \ + gzip \ + tar \ + && tdnf clean all + +# Retrieve .NET Runtime +RUN dotnet_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output dotnet.tar.gz "https://builds.dotnet.microsoft.com/dotnet/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-arm64.tar.gz" \ + && dotnet_sha512='{sha512_placeholder}' \ + && echo "$dotnet_sha512 dotnet.tar.gz" | sha512sum -c - \ + && mkdir -p /usr/share/dotnet \ + && tar -oxzf dotnet.tar.gz -C /usr/share/dotnet \ + && rm dotnet.tar.gz + +RUN mkdir /dotnet-symlink \ + && ln -s /usr/share/dotnet/dotnet /dotnet-symlink/dotnet + + +# .NET runtime image +FROM $REPO:0.0.0-azurelinux3.0-distroless-extra-arm64v8 + +# .NET Runtime version +ENV DOTNET_VERSION=0.0.0 + +COPY --from=installer ["/usr/share/dotnet", "/usr/share/dotnet"] +COPY --from=installer ["/dotnet-symlink", "/usr/bin"] + +ENTRYPOINT ["/usr/bin/dotnet"] +CMD ["--info"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/azurelinux3.0-distroless/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/azurelinux3.0-distroless/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..7f43e6f1d7 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/azurelinux3.0-distroless/amd64/Dockerfile.verified.noextension @@ -0,0 +1,37 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime-deps + +# Installer image +FROM mcr.microsoft.com/azurelinux/base/core:3.0 AS installer + +ARG ACCESSTOKEN + +RUN tdnf install -y \ + ca-certificates \ + gzip \ + tar \ + && tdnf clean all + +# Retrieve .NET Runtime +RUN dotnet_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output dotnet.tar.gz "https://builds.dotnet.microsoft.com/dotnet/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-x64.tar.gz" \ + && dotnet_sha512='{sha512_placeholder}' \ + && echo "$dotnet_sha512 dotnet.tar.gz" | sha512sum -c - \ + && mkdir -p /usr/share/dotnet \ + && tar -oxzf dotnet.tar.gz -C /usr/share/dotnet \ + && rm dotnet.tar.gz + +RUN mkdir /dotnet-symlink \ + && ln -s /usr/share/dotnet/dotnet /dotnet-symlink/dotnet + + +# .NET runtime image +FROM $REPO:0.0.0-azurelinux3.0-distroless-amd64 + +# .NET Runtime version +ENV DOTNET_VERSION=0.0.0 + +COPY --from=installer ["/usr/share/dotnet", "/usr/share/dotnet"] +COPY --from=installer ["/dotnet-symlink", "/usr/bin"] + +ENTRYPOINT ["/usr/bin/dotnet"] +CMD ["--info"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/azurelinux3.0-distroless/arm64v8/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/azurelinux3.0-distroless/arm64v8/Dockerfile.verified.noextension new file mode 100644 index 0000000000..3d53870418 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/azurelinux3.0-distroless/arm64v8/Dockerfile.verified.noextension @@ -0,0 +1,37 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime-deps + +# Installer image +FROM mcr.microsoft.com/azurelinux/base/core:3.0 AS installer + +ARG ACCESSTOKEN + +RUN tdnf install -y \ + ca-certificates \ + gzip \ + tar \ + && tdnf clean all + +# Retrieve .NET Runtime +RUN dotnet_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output dotnet.tar.gz "https://builds.dotnet.microsoft.com/dotnet/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-arm64.tar.gz" \ + && dotnet_sha512='{sha512_placeholder}' \ + && echo "$dotnet_sha512 dotnet.tar.gz" | sha512sum -c - \ + && mkdir -p /usr/share/dotnet \ + && tar -oxzf dotnet.tar.gz -C /usr/share/dotnet \ + && rm dotnet.tar.gz + +RUN mkdir /dotnet-symlink \ + && ln -s /usr/share/dotnet/dotnet /dotnet-symlink/dotnet + + +# .NET runtime image +FROM $REPO:0.0.0-azurelinux3.0-distroless-arm64v8 + +# .NET Runtime version +ENV DOTNET_VERSION=0.0.0 + +COPY --from=installer ["/usr/share/dotnet", "/usr/share/dotnet"] +COPY --from=installer ["/dotnet-symlink", "/usr/bin"] + +ENTRYPOINT ["/usr/bin/dotnet"] +CMD ["--info"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/azurelinux3.0/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/azurelinux3.0/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..d0325082b6 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/azurelinux3.0/amd64/Dockerfile.verified.noextension @@ -0,0 +1,27 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime-deps + +# Installer image +FROM $REPO:0.0.0-azurelinux3.0-amd64 AS installer + +ARG ACCESSTOKEN + +RUN tdnf install -y \ + tar \ + && tdnf clean all + +# Retrieve .NET Runtime +RUN dotnet_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output dotnet.tar.gz "https://builds.dotnet.microsoft.com/dotnet/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-x64.tar.gz" \ + && dotnet_sha512='{sha512_placeholder}' \ + && echo "$dotnet_sha512 dotnet.tar.gz" | sha512sum -c - \ + && mkdir -p /dotnet \ + && tar -oxzf dotnet.tar.gz -C /dotnet \ + && rm dotnet.tar.gz + + +# .NET runtime image +FROM $REPO:0.0.0-azurelinux3.0-amd64 + +# .NET Runtime version +ENV DOTNET_VERSION=0.0.0 + diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/azurelinux3.0/arm64v8/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/azurelinux3.0/arm64v8/Dockerfile.verified.noextension new file mode 100644 index 0000000000..977201a510 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/azurelinux3.0/arm64v8/Dockerfile.verified.noextension @@ -0,0 +1,27 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime-deps + +# Installer image +FROM $REPO:0.0.0-azurelinux3.0-arm64v8 AS installer + +ARG ACCESSTOKEN + +RUN tdnf install -y \ + tar \ + && tdnf clean all + +# Retrieve .NET Runtime +RUN dotnet_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output dotnet.tar.gz "https://builds.dotnet.microsoft.com/dotnet/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-arm64.tar.gz" \ + && dotnet_sha512='{sha512_placeholder}' \ + && echo "$dotnet_sha512 dotnet.tar.gz" | sha512sum -c - \ + && mkdir -p /dotnet \ + && tar -oxzf dotnet.tar.gz -C /dotnet \ + && rm dotnet.tar.gz + + +# .NET runtime image +FROM $REPO:0.0.0-azurelinux3.0-arm64v8 + +# .NET Runtime version +ENV DOTNET_VERSION=0.0.0 + diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/bookworm-slim/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/bookworm-slim/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..52ea278d59 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/bookworm-slim/amd64/Dockerfile.verified.noextension @@ -0,0 +1,23 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime-deps + +# Installer image +FROM amd64/buildpack-deps:bookworm-curl AS installer + +ARG ACCESSTOKEN + +# Retrieve .NET Runtime +RUN dotnet_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output dotnet.tar.gz "https://builds.dotnet.microsoft.com/dotnet/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-x64.tar.gz" \ + && dotnet_sha512='{sha512_placeholder}' \ + && echo "$dotnet_sha512 dotnet.tar.gz" | sha512sum -c - \ + && mkdir -p /dotnet \ + && tar -oxzf dotnet.tar.gz -C /dotnet \ + && rm dotnet.tar.gz + + +# .NET runtime image +FROM $REPO:0.0.0-bookworm-slim-amd64 + +# .NET Runtime version +ENV DOTNET_VERSION=0.0.0 + diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/bookworm-slim/arm32v7/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/bookworm-slim/arm32v7/Dockerfile.verified.noextension new file mode 100644 index 0000000000..8b75594b0a --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/bookworm-slim/arm32v7/Dockerfile.verified.noextension @@ -0,0 +1,23 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime-deps + +# Installer image +FROM arm32v7/buildpack-deps:bookworm-curl AS installer + +ARG ACCESSTOKEN + +# Retrieve .NET Runtime +RUN dotnet_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output dotnet.tar.gz "https://builds.dotnet.microsoft.com/dotnet/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-arm.tar.gz" \ + && dotnet_sha512='{sha512_placeholder}' \ + && echo "$dotnet_sha512 dotnet.tar.gz" | sha512sum -c - \ + && mkdir -p /dotnet \ + && tar -oxzf dotnet.tar.gz -C /dotnet \ + && rm dotnet.tar.gz + + +# .NET runtime image +FROM $REPO:0.0.0-bookworm-slim-arm32v7 + +# .NET Runtime version +ENV DOTNET_VERSION=0.0.0 + diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/bookworm-slim/arm64v8/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/bookworm-slim/arm64v8/Dockerfile.verified.noextension new file mode 100644 index 0000000000..c610fda64f --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/bookworm-slim/arm64v8/Dockerfile.verified.noextension @@ -0,0 +1,23 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime-deps + +# Installer image +FROM arm64v8/buildpack-deps:bookworm-curl AS installer + +ARG ACCESSTOKEN + +# Retrieve .NET Runtime +RUN dotnet_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output dotnet.tar.gz "https://builds.dotnet.microsoft.com/dotnet/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-arm64.tar.gz" \ + && dotnet_sha512='{sha512_placeholder}' \ + && echo "$dotnet_sha512 dotnet.tar.gz" | sha512sum -c - \ + && mkdir -p /dotnet \ + && tar -oxzf dotnet.tar.gz -C /dotnet \ + && rm dotnet.tar.gz + + +# .NET runtime image +FROM $REPO:0.0.0-bookworm-slim-arm64v8 + +# .NET Runtime version +ENV DOTNET_VERSION=0.0.0 + diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/cbl-mariner2.0-distroless-extra/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/cbl-mariner2.0-distroless-extra/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..8060b5cfa3 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/cbl-mariner2.0-distroless-extra/amd64/Dockerfile.verified.noextension @@ -0,0 +1,37 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime-deps + +# Installer image +FROM mcr.microsoft.com/cbl-mariner/base/core:2.0 AS installer + +ARG ACCESSTOKEN + +RUN tdnf install -y \ + ca-certificates \ + gzip \ + tar \ + && tdnf clean all + +# Retrieve .NET Runtime +RUN dotnet_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output dotnet.tar.gz "https://builds.dotnet.microsoft.com/dotnet/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-x64.tar.gz" \ + && dotnet_sha512='{sha512_placeholder}' \ + && echo "$dotnet_sha512 dotnet.tar.gz" | sha512sum -c - \ + && mkdir -p /usr/share/dotnet \ + && tar -oxzf dotnet.tar.gz -C /usr/share/dotnet \ + && rm dotnet.tar.gz + +RUN mkdir /dotnet-symlink \ + && ln -s /usr/share/dotnet/dotnet /dotnet-symlink/dotnet + + +# .NET runtime image +FROM $REPO:0.0.0-cbl-mariner2.0-distroless-extra-amd64 + +# .NET Runtime version +ENV DOTNET_VERSION=0.0.0 + +COPY --from=installer ["/usr/share/dotnet", "/usr/share/dotnet"] +COPY --from=installer ["/dotnet-symlink", "/usr/bin"] + +ENTRYPOINT ["/usr/bin/dotnet"] +CMD ["--info"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/cbl-mariner2.0-distroless-extra/arm64v8/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/cbl-mariner2.0-distroless-extra/arm64v8/Dockerfile.verified.noextension new file mode 100644 index 0000000000..3cf12b218b --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/cbl-mariner2.0-distroless-extra/arm64v8/Dockerfile.verified.noextension @@ -0,0 +1,37 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime-deps + +# Installer image +FROM mcr.microsoft.com/cbl-mariner/base/core:2.0 AS installer + +ARG ACCESSTOKEN + +RUN tdnf install -y \ + ca-certificates \ + gzip \ + tar \ + && tdnf clean all + +# Retrieve .NET Runtime +RUN dotnet_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output dotnet.tar.gz "https://builds.dotnet.microsoft.com/dotnet/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-arm64.tar.gz" \ + && dotnet_sha512='{sha512_placeholder}' \ + && echo "$dotnet_sha512 dotnet.tar.gz" | sha512sum -c - \ + && mkdir -p /usr/share/dotnet \ + && tar -oxzf dotnet.tar.gz -C /usr/share/dotnet \ + && rm dotnet.tar.gz + +RUN mkdir /dotnet-symlink \ + && ln -s /usr/share/dotnet/dotnet /dotnet-symlink/dotnet + + +# .NET runtime image +FROM $REPO:0.0.0-cbl-mariner2.0-distroless-extra-arm64v8 + +# .NET Runtime version +ENV DOTNET_VERSION=0.0.0 + +COPY --from=installer ["/usr/share/dotnet", "/usr/share/dotnet"] +COPY --from=installer ["/dotnet-symlink", "/usr/bin"] + +ENTRYPOINT ["/usr/bin/dotnet"] +CMD ["--info"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/cbl-mariner2.0-distroless/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/cbl-mariner2.0-distroless/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..4b04e5eb71 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/cbl-mariner2.0-distroless/amd64/Dockerfile.verified.noextension @@ -0,0 +1,37 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime-deps + +# Installer image +FROM mcr.microsoft.com/cbl-mariner/base/core:2.0 AS installer + +ARG ACCESSTOKEN + +RUN tdnf install -y \ + ca-certificates \ + gzip \ + tar \ + && tdnf clean all + +# Retrieve .NET Runtime +RUN dotnet_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output dotnet.tar.gz "https://builds.dotnet.microsoft.com/dotnet/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-x64.tar.gz" \ + && dotnet_sha512='{sha512_placeholder}' \ + && echo "$dotnet_sha512 dotnet.tar.gz" | sha512sum -c - \ + && mkdir -p /usr/share/dotnet \ + && tar -oxzf dotnet.tar.gz -C /usr/share/dotnet \ + && rm dotnet.tar.gz + +RUN mkdir /dotnet-symlink \ + && ln -s /usr/share/dotnet/dotnet /dotnet-symlink/dotnet + + +# .NET runtime image +FROM $REPO:0.0.0-cbl-mariner2.0-distroless-amd64 + +# .NET Runtime version +ENV DOTNET_VERSION=0.0.0 + +COPY --from=installer ["/usr/share/dotnet", "/usr/share/dotnet"] +COPY --from=installer ["/dotnet-symlink", "/usr/bin"] + +ENTRYPOINT ["/usr/bin/dotnet"] +CMD ["--info"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/cbl-mariner2.0-distroless/arm64v8/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/cbl-mariner2.0-distroless/arm64v8/Dockerfile.verified.noextension new file mode 100644 index 0000000000..d27fa6580e --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/cbl-mariner2.0-distroless/arm64v8/Dockerfile.verified.noextension @@ -0,0 +1,37 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime-deps + +# Installer image +FROM mcr.microsoft.com/cbl-mariner/base/core:2.0 AS installer + +ARG ACCESSTOKEN + +RUN tdnf install -y \ + ca-certificates \ + gzip \ + tar \ + && tdnf clean all + +# Retrieve .NET Runtime +RUN dotnet_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output dotnet.tar.gz "https://builds.dotnet.microsoft.com/dotnet/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-arm64.tar.gz" \ + && dotnet_sha512='{sha512_placeholder}' \ + && echo "$dotnet_sha512 dotnet.tar.gz" | sha512sum -c - \ + && mkdir -p /usr/share/dotnet \ + && tar -oxzf dotnet.tar.gz -C /usr/share/dotnet \ + && rm dotnet.tar.gz + +RUN mkdir /dotnet-symlink \ + && ln -s /usr/share/dotnet/dotnet /dotnet-symlink/dotnet + + +# .NET runtime image +FROM $REPO:0.0.0-cbl-mariner2.0-distroless-arm64v8 + +# .NET Runtime version +ENV DOTNET_VERSION=0.0.0 + +COPY --from=installer ["/usr/share/dotnet", "/usr/share/dotnet"] +COPY --from=installer ["/dotnet-symlink", "/usr/bin"] + +ENTRYPOINT ["/usr/bin/dotnet"] +CMD ["--info"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/cbl-mariner2.0/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/cbl-mariner2.0/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..9b87478fe3 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/cbl-mariner2.0/amd64/Dockerfile.verified.noextension @@ -0,0 +1,27 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime-deps + +# Installer image +FROM $REPO:0.0.0-cbl-mariner2.0-amd64 AS installer + +ARG ACCESSTOKEN + +RUN tdnf install -y \ + tar \ + && tdnf clean all + +# Retrieve .NET Runtime +RUN dotnet_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output dotnet.tar.gz "https://builds.dotnet.microsoft.com/dotnet/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-x64.tar.gz" \ + && dotnet_sha512='{sha512_placeholder}' \ + && echo "$dotnet_sha512 dotnet.tar.gz" | sha512sum -c - \ + && mkdir -p /dotnet \ + && tar -oxzf dotnet.tar.gz -C /dotnet \ + && rm dotnet.tar.gz + + +# .NET runtime image +FROM $REPO:0.0.0-cbl-mariner2.0-amd64 + +# .NET Runtime version +ENV DOTNET_VERSION=0.0.0 + diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/cbl-mariner2.0/arm64v8/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/cbl-mariner2.0/arm64v8/Dockerfile.verified.noextension new file mode 100644 index 0000000000..a4568c4548 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/cbl-mariner2.0/arm64v8/Dockerfile.verified.noextension @@ -0,0 +1,27 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime-deps + +# Installer image +FROM $REPO:0.0.0-cbl-mariner2.0-arm64v8 AS installer + +ARG ACCESSTOKEN + +RUN tdnf install -y \ + tar \ + && tdnf clean all + +# Retrieve .NET Runtime +RUN dotnet_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output dotnet.tar.gz "https://builds.dotnet.microsoft.com/dotnet/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-arm64.tar.gz" \ + && dotnet_sha512='{sha512_placeholder}' \ + && echo "$dotnet_sha512 dotnet.tar.gz" | sha512sum -c - \ + && mkdir -p /dotnet \ + && tar -oxzf dotnet.tar.gz -C /dotnet \ + && rm dotnet.tar.gz + + +# .NET runtime image +FROM $REPO:0.0.0-cbl-mariner2.0-arm64v8 + +# .NET Runtime version +ENV DOTNET_VERSION=0.0.0 + diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/jammy-chiseled-extra/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/jammy-chiseled-extra/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..af072546e5 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/jammy-chiseled-extra/amd64/Dockerfile.verified.noextension @@ -0,0 +1,31 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime-deps + +# Installer image +FROM amd64/buildpack-deps:jammy-curl AS installer + +ARG ACCESSTOKEN + +# Retrieve .NET Runtime +RUN dotnet_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output dotnet.tar.gz "https://builds.dotnet.microsoft.com/dotnet/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-x64.tar.gz" \ + && dotnet_sha512='{sha512_placeholder}' \ + && echo "$dotnet_sha512 dotnet.tar.gz" | sha512sum -c - \ + && mkdir -p /usr/share/dotnet \ + && tar -oxzf dotnet.tar.gz -C /usr/share/dotnet \ + && rm dotnet.tar.gz + +RUN mkdir /dotnet-symlink \ + && ln -s /usr/share/dotnet/dotnet /dotnet-symlink/dotnet + + +# .NET runtime image +FROM $REPO:0.0.0-jammy-chiseled-extra-amd64 + +# .NET Runtime version +ENV DOTNET_VERSION=0.0.0 + +COPY --from=installer ["/usr/share/dotnet", "/usr/share/dotnet"] +COPY --from=installer ["/dotnet-symlink", "/usr/bin"] + +ENTRYPOINT ["/usr/bin/dotnet"] +CMD ["--info"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/jammy-chiseled-extra/arm32v7/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/jammy-chiseled-extra/arm32v7/Dockerfile.verified.noextension new file mode 100644 index 0000000000..893efb0373 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/jammy-chiseled-extra/arm32v7/Dockerfile.verified.noextension @@ -0,0 +1,31 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime-deps + +# Installer image +FROM arm32v7/buildpack-deps:jammy-curl AS installer + +ARG ACCESSTOKEN + +# Retrieve .NET Runtime +RUN dotnet_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output dotnet.tar.gz "https://builds.dotnet.microsoft.com/dotnet/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-arm.tar.gz" \ + && dotnet_sha512='{sha512_placeholder}' \ + && echo "$dotnet_sha512 dotnet.tar.gz" | sha512sum -c - \ + && mkdir -p /usr/share/dotnet \ + && tar -oxzf dotnet.tar.gz -C /usr/share/dotnet \ + && rm dotnet.tar.gz + +RUN mkdir /dotnet-symlink \ + && ln -s /usr/share/dotnet/dotnet /dotnet-symlink/dotnet + + +# .NET runtime image +FROM $REPO:0.0.0-jammy-chiseled-extra-arm32v7 + +# .NET Runtime version +ENV DOTNET_VERSION=0.0.0 + +COPY --from=installer ["/usr/share/dotnet", "/usr/share/dotnet"] +COPY --from=installer ["/dotnet-symlink", "/usr/bin"] + +ENTRYPOINT ["/usr/bin/dotnet"] +CMD ["--info"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/jammy-chiseled-extra/arm64v8/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/jammy-chiseled-extra/arm64v8/Dockerfile.verified.noextension new file mode 100644 index 0000000000..d2b2f20991 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/jammy-chiseled-extra/arm64v8/Dockerfile.verified.noextension @@ -0,0 +1,31 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime-deps + +# Installer image +FROM arm64v8/buildpack-deps:jammy-curl AS installer + +ARG ACCESSTOKEN + +# Retrieve .NET Runtime +RUN dotnet_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output dotnet.tar.gz "https://builds.dotnet.microsoft.com/dotnet/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-arm64.tar.gz" \ + && dotnet_sha512='{sha512_placeholder}' \ + && echo "$dotnet_sha512 dotnet.tar.gz" | sha512sum -c - \ + && mkdir -p /usr/share/dotnet \ + && tar -oxzf dotnet.tar.gz -C /usr/share/dotnet \ + && rm dotnet.tar.gz + +RUN mkdir /dotnet-symlink \ + && ln -s /usr/share/dotnet/dotnet /dotnet-symlink/dotnet + + +# .NET runtime image +FROM $REPO:0.0.0-jammy-chiseled-extra-arm64v8 + +# .NET Runtime version +ENV DOTNET_VERSION=0.0.0 + +COPY --from=installer ["/usr/share/dotnet", "/usr/share/dotnet"] +COPY --from=installer ["/dotnet-symlink", "/usr/bin"] + +ENTRYPOINT ["/usr/bin/dotnet"] +CMD ["--info"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/jammy-chiseled/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/jammy-chiseled/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..05f69ce2df --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/jammy-chiseled/amd64/Dockerfile.verified.noextension @@ -0,0 +1,31 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime-deps + +# Installer image +FROM amd64/buildpack-deps:jammy-curl AS installer + +ARG ACCESSTOKEN + +# Retrieve .NET Runtime +RUN dotnet_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output dotnet.tar.gz "https://builds.dotnet.microsoft.com/dotnet/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-x64.tar.gz" \ + && dotnet_sha512='{sha512_placeholder}' \ + && echo "$dotnet_sha512 dotnet.tar.gz" | sha512sum -c - \ + && mkdir -p /usr/share/dotnet \ + && tar -oxzf dotnet.tar.gz -C /usr/share/dotnet \ + && rm dotnet.tar.gz + +RUN mkdir /dotnet-symlink \ + && ln -s /usr/share/dotnet/dotnet /dotnet-symlink/dotnet + + +# .NET runtime image +FROM $REPO:0.0.0-jammy-chiseled-amd64 + +# .NET Runtime version +ENV DOTNET_VERSION=0.0.0 + +COPY --from=installer ["/usr/share/dotnet", "/usr/share/dotnet"] +COPY --from=installer ["/dotnet-symlink", "/usr/bin"] + +ENTRYPOINT ["/usr/bin/dotnet"] +CMD ["--info"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/jammy-chiseled/arm32v7/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/jammy-chiseled/arm32v7/Dockerfile.verified.noextension new file mode 100644 index 0000000000..2a6a1529e6 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/jammy-chiseled/arm32v7/Dockerfile.verified.noextension @@ -0,0 +1,31 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime-deps + +# Installer image +FROM arm32v7/buildpack-deps:jammy-curl AS installer + +ARG ACCESSTOKEN + +# Retrieve .NET Runtime +RUN dotnet_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output dotnet.tar.gz "https://builds.dotnet.microsoft.com/dotnet/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-arm.tar.gz" \ + && dotnet_sha512='{sha512_placeholder}' \ + && echo "$dotnet_sha512 dotnet.tar.gz" | sha512sum -c - \ + && mkdir -p /usr/share/dotnet \ + && tar -oxzf dotnet.tar.gz -C /usr/share/dotnet \ + && rm dotnet.tar.gz + +RUN mkdir /dotnet-symlink \ + && ln -s /usr/share/dotnet/dotnet /dotnet-symlink/dotnet + + +# .NET runtime image +FROM $REPO:0.0.0-jammy-chiseled-arm32v7 + +# .NET Runtime version +ENV DOTNET_VERSION=0.0.0 + +COPY --from=installer ["/usr/share/dotnet", "/usr/share/dotnet"] +COPY --from=installer ["/dotnet-symlink", "/usr/bin"] + +ENTRYPOINT ["/usr/bin/dotnet"] +CMD ["--info"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/jammy-chiseled/arm64v8/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/jammy-chiseled/arm64v8/Dockerfile.verified.noextension new file mode 100644 index 0000000000..2c8cf7d88f --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/jammy-chiseled/arm64v8/Dockerfile.verified.noextension @@ -0,0 +1,31 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime-deps + +# Installer image +FROM arm64v8/buildpack-deps:jammy-curl AS installer + +ARG ACCESSTOKEN + +# Retrieve .NET Runtime +RUN dotnet_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output dotnet.tar.gz "https://builds.dotnet.microsoft.com/dotnet/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-arm64.tar.gz" \ + && dotnet_sha512='{sha512_placeholder}' \ + && echo "$dotnet_sha512 dotnet.tar.gz" | sha512sum -c - \ + && mkdir -p /usr/share/dotnet \ + && tar -oxzf dotnet.tar.gz -C /usr/share/dotnet \ + && rm dotnet.tar.gz + +RUN mkdir /dotnet-symlink \ + && ln -s /usr/share/dotnet/dotnet /dotnet-symlink/dotnet + + +# .NET runtime image +FROM $REPO:0.0.0-jammy-chiseled-arm64v8 + +# .NET Runtime version +ENV DOTNET_VERSION=0.0.0 + +COPY --from=installer ["/usr/share/dotnet", "/usr/share/dotnet"] +COPY --from=installer ["/dotnet-symlink", "/usr/bin"] + +ENTRYPOINT ["/usr/bin/dotnet"] +CMD ["--info"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/jammy/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/jammy/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..d92388cab1 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/jammy/amd64/Dockerfile.verified.noextension @@ -0,0 +1,23 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime-deps + +# Installer image +FROM amd64/buildpack-deps:jammy-curl AS installer + +ARG ACCESSTOKEN + +# Retrieve .NET Runtime +RUN dotnet_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output dotnet.tar.gz "https://builds.dotnet.microsoft.com/dotnet/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-x64.tar.gz" \ + && dotnet_sha512='{sha512_placeholder}' \ + && echo "$dotnet_sha512 dotnet.tar.gz" | sha512sum -c - \ + && mkdir -p /dotnet \ + && tar -oxzf dotnet.tar.gz -C /dotnet \ + && rm dotnet.tar.gz + + +# .NET runtime image +FROM $REPO:0.0.0-jammy-amd64 + +# .NET Runtime version +ENV DOTNET_VERSION=0.0.0 + diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/jammy/arm32v7/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/jammy/arm32v7/Dockerfile.verified.noextension new file mode 100644 index 0000000000..a2e9f52549 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/jammy/arm32v7/Dockerfile.verified.noextension @@ -0,0 +1,23 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime-deps + +# Installer image +FROM arm32v7/buildpack-deps:jammy-curl AS installer + +ARG ACCESSTOKEN + +# Retrieve .NET Runtime +RUN dotnet_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output dotnet.tar.gz "https://builds.dotnet.microsoft.com/dotnet/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-arm.tar.gz" \ + && dotnet_sha512='{sha512_placeholder}' \ + && echo "$dotnet_sha512 dotnet.tar.gz" | sha512sum -c - \ + && mkdir -p /dotnet \ + && tar -oxzf dotnet.tar.gz -C /dotnet \ + && rm dotnet.tar.gz + + +# .NET runtime image +FROM $REPO:0.0.0-jammy-arm32v7 + +# .NET Runtime version +ENV DOTNET_VERSION=0.0.0 + diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/jammy/arm64v8/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/jammy/arm64v8/Dockerfile.verified.noextension new file mode 100644 index 0000000000..2aeb795ef2 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/jammy/arm64v8/Dockerfile.verified.noextension @@ -0,0 +1,23 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime-deps + +# Installer image +FROM arm64v8/buildpack-deps:jammy-curl AS installer + +ARG ACCESSTOKEN + +# Retrieve .NET Runtime +RUN dotnet_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output dotnet.tar.gz "https://builds.dotnet.microsoft.com/dotnet/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-arm64.tar.gz" \ + && dotnet_sha512='{sha512_placeholder}' \ + && echo "$dotnet_sha512 dotnet.tar.gz" | sha512sum -c - \ + && mkdir -p /dotnet \ + && tar -oxzf dotnet.tar.gz -C /dotnet \ + && rm dotnet.tar.gz + + +# .NET runtime image +FROM $REPO:0.0.0-jammy-arm64v8 + +# .NET Runtime version +ENV DOTNET_VERSION=0.0.0 + diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/nanoserver-1809/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/nanoserver-1809/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..e52c87e655 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/nanoserver-1809/amd64/Dockerfile.verified.noextension @@ -0,0 +1,46 @@ +# escape=` + +# Installer image +FROM mcr.microsoft.com/windows/servercore:1809-amd64 AS installer + +ARG ACCESSTOKEN + +# Retrieve .NET Runtime +RUN powershell -Command ` + $ErrorActionPreference = 'Stop'; ` + $ProgressPreference = 'SilentlyContinue'; ` + ` + $dotnet_version = '0.0.0'; ` + ` + $Base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(\":$($Env:ACCESSTOKEN)\")); ` + $Headers = @{Authorization = \"Basic $Base64AuthInfo\"}; ` + Invoke-WebRequest -OutFile dotnet.zip \"https://builds.dotnet.microsoft.com/dotnet/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-win-x64.zip\" -Headers $Headers; ` + ` + $dotnet_sha512 = '{sha512_placeholder}'; ` + if ((Get-FileHash dotnet.zip -Algorithm sha512).Hash -ne $dotnet_sha512) { ` + Write-Host 'CHECKSUM VERIFICATION FAILED!'; ` + exit 1; ` + }; ` + ` + mkdir dotnet; ` + tar -oxzf dotnet.zip -C dotnet; ` + Remove-Item -Force dotnet.zip + + +# Runtime image +FROM mcr.microsoft.com/windows/nanoserver:1809-amd64 + +ENV ` + # Configure web servers to bind to port 8080 when present + ASPNETCORE_HTTP_PORTS=8080 ` + # Enable detection of running in a container + DOTNET_RUNNING_IN_CONTAINER=true ` + # .NET Runtime version + DOTNET_VERSION=0.0.0 + +# In order to set system PATH, ContainerAdministrator must be used +USER ContainerAdministrator +RUN setx /M PATH "%PATH%;C:\Program Files\dotnet" +USER ContainerUser + +COPY --from=installer ["/dotnet", "/Program Files/dotnet"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/nanoserver-ltsc2022/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/nanoserver-ltsc2022/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..e122ec295e --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/nanoserver-ltsc2022/amd64/Dockerfile.verified.noextension @@ -0,0 +1,46 @@ +# escape=` + +# Installer image +FROM mcr.microsoft.com/windows/servercore:ltsc2022-amd64 AS installer + +ARG ACCESSTOKEN + +# Retrieve .NET Runtime +RUN powershell -Command ` + $ErrorActionPreference = 'Stop'; ` + $ProgressPreference = 'SilentlyContinue'; ` + ` + $dotnet_version = '0.0.0'; ` + ` + $Base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(\":$($Env:ACCESSTOKEN)\")); ` + $Headers = @{Authorization = \"Basic $Base64AuthInfo\"}; ` + Invoke-WebRequest -OutFile dotnet.zip \"https://builds.dotnet.microsoft.com/dotnet/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-win-x64.zip\" -Headers $Headers; ` + ` + $dotnet_sha512 = '{sha512_placeholder}'; ` + if ((Get-FileHash dotnet.zip -Algorithm sha512).Hash -ne $dotnet_sha512) { ` + Write-Host 'CHECKSUM VERIFICATION FAILED!'; ` + exit 1; ` + }; ` + ` + mkdir dotnet; ` + tar -oxzf dotnet.zip -C dotnet; ` + Remove-Item -Force dotnet.zip + + +# Runtime image +FROM mcr.microsoft.com/windows/nanoserver:ltsc2022-amd64 + +ENV ` + # Configure web servers to bind to port 8080 when present + ASPNETCORE_HTTP_PORTS=8080 ` + # Enable detection of running in a container + DOTNET_RUNNING_IN_CONTAINER=true ` + # .NET Runtime version + DOTNET_VERSION=0.0.0 + +# In order to set system PATH, ContainerAdministrator must be used +USER ContainerAdministrator +RUN setx /M PATH "%PATH%;C:\Program Files\dotnet" +USER ContainerUser + +COPY --from=installer ["/dotnet", "/Program Files/dotnet"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/nanoserver-ltsc2025/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/nanoserver-ltsc2025/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..9a3f0d95d4 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/nanoserver-ltsc2025/amd64/Dockerfile.verified.noextension @@ -0,0 +1,46 @@ +# escape=` + +# Installer image +FROM mcr.microsoft.com/windows/servercore:ltsc2025-amd64 AS installer + +ARG ACCESSTOKEN + +# Retrieve .NET Runtime +RUN powershell -Command ` + $ErrorActionPreference = 'Stop'; ` + $ProgressPreference = 'SilentlyContinue'; ` + ` + $dotnet_version = '0.0.0'; ` + ` + $Base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(\":$($Env:ACCESSTOKEN)\")); ` + $Headers = @{Authorization = \"Basic $Base64AuthInfo\"}; ` + Invoke-WebRequest -OutFile dotnet.zip \"https://builds.dotnet.microsoft.com/dotnet/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-win-x64.zip\" -Headers $Headers; ` + ` + $dotnet_sha512 = '{sha512_placeholder}'; ` + if ((Get-FileHash dotnet.zip -Algorithm sha512).Hash -ne $dotnet_sha512) { ` + Write-Host 'CHECKSUM VERIFICATION FAILED!'; ` + exit 1; ` + }; ` + ` + mkdir dotnet; ` + tar -oxzf dotnet.zip -C dotnet; ` + Remove-Item -Force dotnet.zip + + +# Runtime image +FROM mcr.microsoft.com/windows/nanoserver:ltsc2025-amd64 + +ENV ` + # Configure web servers to bind to port 8080 when present + ASPNETCORE_HTTP_PORTS=8080 ` + # Enable detection of running in a container + DOTNET_RUNNING_IN_CONTAINER=true ` + # .NET Runtime version + DOTNET_VERSION=0.0.0 + +# In order to set system PATH, ContainerAdministrator must be used +USER ContainerAdministrator +RUN setx /M PATH "%PATH%;C:\Program Files\dotnet" +USER ContainerUser + +COPY --from=installer ["/dotnet", "/Program Files/dotnet"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/noble-chiseled-extra/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/noble-chiseled-extra/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..4f6fd542dc --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/noble-chiseled-extra/amd64/Dockerfile.verified.noextension @@ -0,0 +1,31 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime-deps + +# Installer image +FROM amd64/buildpack-deps:noble-curl AS installer + +ARG ACCESSTOKEN + +# Retrieve .NET Runtime +RUN dotnet_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output dotnet.tar.gz "https://builds.dotnet.microsoft.com/dotnet/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-x64.tar.gz" \ + && dotnet_sha512='{sha512_placeholder}' \ + && echo "$dotnet_sha512 dotnet.tar.gz" | sha512sum -c - \ + && mkdir -p /usr/share/dotnet \ + && tar -oxzf dotnet.tar.gz -C /usr/share/dotnet \ + && rm dotnet.tar.gz + +RUN mkdir /dotnet-symlink \ + && ln -s /usr/share/dotnet/dotnet /dotnet-symlink/dotnet + + +# .NET runtime image +FROM $REPO:0.0.0-noble-chiseled-extra-amd64 + +# .NET Runtime version +ENV DOTNET_VERSION=0.0.0 + +COPY --from=installer ["/usr/share/dotnet", "/usr/share/dotnet"] +COPY --from=installer ["/dotnet-symlink", "/usr/bin"] + +ENTRYPOINT ["/usr/bin/dotnet"] +CMD ["--info"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/noble-chiseled-extra/arm64v8/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/noble-chiseled-extra/arm64v8/Dockerfile.verified.noextension new file mode 100644 index 0000000000..cbbaa10aae --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/noble-chiseled-extra/arm64v8/Dockerfile.verified.noextension @@ -0,0 +1,31 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime-deps + +# Installer image +FROM arm64v8/buildpack-deps:noble-curl AS installer + +ARG ACCESSTOKEN + +# Retrieve .NET Runtime +RUN dotnet_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output dotnet.tar.gz "https://builds.dotnet.microsoft.com/dotnet/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-arm64.tar.gz" \ + && dotnet_sha512='{sha512_placeholder}' \ + && echo "$dotnet_sha512 dotnet.tar.gz" | sha512sum -c - \ + && mkdir -p /usr/share/dotnet \ + && tar -oxzf dotnet.tar.gz -C /usr/share/dotnet \ + && rm dotnet.tar.gz + +RUN mkdir /dotnet-symlink \ + && ln -s /usr/share/dotnet/dotnet /dotnet-symlink/dotnet + + +# .NET runtime image +FROM $REPO:0.0.0-noble-chiseled-extra-arm64v8 + +# .NET Runtime version +ENV DOTNET_VERSION=0.0.0 + +COPY --from=installer ["/usr/share/dotnet", "/usr/share/dotnet"] +COPY --from=installer ["/dotnet-symlink", "/usr/bin"] + +ENTRYPOINT ["/usr/bin/dotnet"] +CMD ["--info"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/noble-chiseled/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/noble-chiseled/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..b1da9f37f1 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/noble-chiseled/amd64/Dockerfile.verified.noextension @@ -0,0 +1,31 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime-deps + +# Installer image +FROM amd64/buildpack-deps:noble-curl AS installer + +ARG ACCESSTOKEN + +# Retrieve .NET Runtime +RUN dotnet_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output dotnet.tar.gz "https://builds.dotnet.microsoft.com/dotnet/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-x64.tar.gz" \ + && dotnet_sha512='{sha512_placeholder}' \ + && echo "$dotnet_sha512 dotnet.tar.gz" | sha512sum -c - \ + && mkdir -p /usr/share/dotnet \ + && tar -oxzf dotnet.tar.gz -C /usr/share/dotnet \ + && rm dotnet.tar.gz + +RUN mkdir /dotnet-symlink \ + && ln -s /usr/share/dotnet/dotnet /dotnet-symlink/dotnet + + +# .NET runtime image +FROM $REPO:0.0.0-noble-chiseled-amd64 + +# .NET Runtime version +ENV DOTNET_VERSION=0.0.0 + +COPY --from=installer ["/usr/share/dotnet", "/usr/share/dotnet"] +COPY --from=installer ["/dotnet-symlink", "/usr/bin"] + +ENTRYPOINT ["/usr/bin/dotnet"] +CMD ["--info"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/noble-chiseled/arm64v8/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/noble-chiseled/arm64v8/Dockerfile.verified.noextension new file mode 100644 index 0000000000..6cbdc292d1 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/noble-chiseled/arm64v8/Dockerfile.verified.noextension @@ -0,0 +1,31 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime-deps + +# Installer image +FROM arm64v8/buildpack-deps:noble-curl AS installer + +ARG ACCESSTOKEN + +# Retrieve .NET Runtime +RUN dotnet_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output dotnet.tar.gz "https://builds.dotnet.microsoft.com/dotnet/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-arm64.tar.gz" \ + && dotnet_sha512='{sha512_placeholder}' \ + && echo "$dotnet_sha512 dotnet.tar.gz" | sha512sum -c - \ + && mkdir -p /usr/share/dotnet \ + && tar -oxzf dotnet.tar.gz -C /usr/share/dotnet \ + && rm dotnet.tar.gz + +RUN mkdir /dotnet-symlink \ + && ln -s /usr/share/dotnet/dotnet /dotnet-symlink/dotnet + + +# .NET runtime image +FROM $REPO:0.0.0-noble-chiseled-arm64v8 + +# .NET Runtime version +ENV DOTNET_VERSION=0.0.0 + +COPY --from=installer ["/usr/share/dotnet", "/usr/share/dotnet"] +COPY --from=installer ["/dotnet-symlink", "/usr/bin"] + +ENTRYPOINT ["/usr/bin/dotnet"] +CMD ["--info"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/noble/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/noble/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..51abc04512 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/noble/amd64/Dockerfile.verified.noextension @@ -0,0 +1,23 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime-deps + +# Installer image +FROM amd64/buildpack-deps:noble-curl AS installer + +ARG ACCESSTOKEN + +# Retrieve .NET Runtime +RUN dotnet_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output dotnet.tar.gz "https://builds.dotnet.microsoft.com/dotnet/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-x64.tar.gz" \ + && dotnet_sha512='{sha512_placeholder}' \ + && echo "$dotnet_sha512 dotnet.tar.gz" | sha512sum -c - \ + && mkdir -p /dotnet \ + && tar -oxzf dotnet.tar.gz -C /dotnet \ + && rm dotnet.tar.gz + + +# .NET runtime image +FROM $REPO:0.0.0-noble-amd64 + +# .NET Runtime version +ENV DOTNET_VERSION=0.0.0 + diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/noble/arm64v8/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/noble/arm64v8/Dockerfile.verified.noextension new file mode 100644 index 0000000000..649e2ca178 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/noble/arm64v8/Dockerfile.verified.noextension @@ -0,0 +1,23 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime-deps + +# Installer image +FROM arm64v8/buildpack-deps:noble-curl AS installer + +ARG ACCESSTOKEN + +# Retrieve .NET Runtime +RUN dotnet_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output dotnet.tar.gz "https://builds.dotnet.microsoft.com/dotnet/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-arm64.tar.gz" \ + && dotnet_sha512='{sha512_placeholder}' \ + && echo "$dotnet_sha512 dotnet.tar.gz" | sha512sum -c - \ + && mkdir -p /dotnet \ + && tar -oxzf dotnet.tar.gz -C /dotnet \ + && rm dotnet.tar.gz + + +# .NET runtime image +FROM $REPO:0.0.0-noble-arm64v8 + +# .NET Runtime version +ENV DOTNET_VERSION=0.0.0 + diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/windowsservercore-ltsc2019/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/windowsservercore-ltsc2019/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..154118fdb3 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/windowsservercore-ltsc2019/amd64/Dockerfile.verified.noextension @@ -0,0 +1,43 @@ +# escape=` + +# Installer image +FROM mcr.microsoft.com/windows/servercore:ltsc2019-amd64 AS installer + +ARG ACCESSTOKEN + +# Retrieve .NET Runtime +RUN powershell -Command ` + $ErrorActionPreference = 'Stop'; ` + $ProgressPreference = 'SilentlyContinue'; ` + ` + $dotnet_version = '0.0.0'; ` + ` + $Base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(\":$($Env:ACCESSTOKEN)\")); ` + $Headers = @{Authorization = \"Basic $Base64AuthInfo\"}; ` + Invoke-WebRequest -OutFile dotnet.zip \"https://builds.dotnet.microsoft.com/dotnet/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-win-x64.zip\" -Headers $Headers; ` + ` + $dotnet_sha512 = '{sha512_placeholder}'; ` + if ((Get-FileHash dotnet.zip -Algorithm sha512).Hash -ne $dotnet_sha512) { ` + Write-Host 'CHECKSUM VERIFICATION FAILED!'; ` + exit 1; ` + }; ` + ` + mkdir dotnet; ` + tar -oxzf dotnet.zip -C dotnet; ` + Remove-Item -Force dotnet.zip + + +# Runtime image +FROM mcr.microsoft.com/windows/servercore:ltsc2019-amd64 + +ENV ` + # Configure web servers to bind to port 8080 when present + ASPNETCORE_HTTP_PORTS=8080 ` + # Enable detection of running in a container + DOTNET_RUNNING_IN_CONTAINER=true ` + # .NET Runtime version + DOTNET_VERSION=0.0.0 + +RUN setx /M PATH "%PATH%;C:\Program Files\dotnet" + +COPY --from=installer ["/dotnet", "/Program Files/dotnet"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/windowsservercore-ltsc2022/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/windowsservercore-ltsc2022/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..8f095df827 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/windowsservercore-ltsc2022/amd64/Dockerfile.verified.noextension @@ -0,0 +1,43 @@ +# escape=` + +# Installer image +FROM mcr.microsoft.com/windows/servercore:ltsc2022-amd64 AS installer + +ARG ACCESSTOKEN + +# Retrieve .NET Runtime +RUN powershell -Command ` + $ErrorActionPreference = 'Stop'; ` + $ProgressPreference = 'SilentlyContinue'; ` + ` + $dotnet_version = '0.0.0'; ` + ` + $Base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(\":$($Env:ACCESSTOKEN)\")); ` + $Headers = @{Authorization = \"Basic $Base64AuthInfo\"}; ` + Invoke-WebRequest -OutFile dotnet.zip \"https://builds.dotnet.microsoft.com/dotnet/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-win-x64.zip\" -Headers $Headers; ` + ` + $dotnet_sha512 = '{sha512_placeholder}'; ` + if ((Get-FileHash dotnet.zip -Algorithm sha512).Hash -ne $dotnet_sha512) { ` + Write-Host 'CHECKSUM VERIFICATION FAILED!'; ` + exit 1; ` + }; ` + ` + mkdir dotnet; ` + tar -oxzf dotnet.zip -C dotnet; ` + Remove-Item -Force dotnet.zip + + +# Runtime image +FROM mcr.microsoft.com/windows/servercore:ltsc2022-amd64 + +ENV ` + # Configure web servers to bind to port 8080 when present + ASPNETCORE_HTTP_PORTS=8080 ` + # Enable detection of running in a container + DOTNET_RUNNING_IN_CONTAINER=true ` + # .NET Runtime version + DOTNET_VERSION=0.0.0 + +RUN setx /M PATH "%PATH%;C:\Program Files\dotnet" + +COPY --from=installer ["/dotnet", "/Program Files/dotnet"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/windowsservercore-ltsc2025/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/windowsservercore-ltsc2025/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..566be4d1ca --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/8.0/windowsservercore-ltsc2025/amd64/Dockerfile.verified.noextension @@ -0,0 +1,43 @@ +# escape=` + +# Installer image +FROM mcr.microsoft.com/windows/servercore:ltsc2025-amd64 AS installer + +ARG ACCESSTOKEN + +# Retrieve .NET Runtime +RUN powershell -Command ` + $ErrorActionPreference = 'Stop'; ` + $ProgressPreference = 'SilentlyContinue'; ` + ` + $dotnet_version = '0.0.0'; ` + ` + $Base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(\":$($Env:ACCESSTOKEN)\")); ` + $Headers = @{Authorization = \"Basic $Base64AuthInfo\"}; ` + Invoke-WebRequest -OutFile dotnet.zip \"https://builds.dotnet.microsoft.com/dotnet/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-win-x64.zip\" -Headers $Headers; ` + ` + $dotnet_sha512 = '{sha512_placeholder}'; ` + if ((Get-FileHash dotnet.zip -Algorithm sha512).Hash -ne $dotnet_sha512) { ` + Write-Host 'CHECKSUM VERIFICATION FAILED!'; ` + exit 1; ` + }; ` + ` + mkdir dotnet; ` + tar -oxzf dotnet.zip -C dotnet; ` + Remove-Item -Force dotnet.zip + + +# Runtime image +FROM mcr.microsoft.com/windows/servercore:ltsc2025-amd64 + +ENV ` + # Configure web servers to bind to port 8080 when present + ASPNETCORE_HTTP_PORTS=8080 ` + # Enable detection of running in a container + DOTNET_RUNNING_IN_CONTAINER=true ` + # .NET Runtime version + DOTNET_VERSION=0.0.0 + +RUN setx /M PATH "%PATH%;C:\Program Files\dotnet" + +COPY --from=installer ["/dotnet", "/Program Files/dotnet"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/9.0/alpine3.20/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/9.0/alpine3.20/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..95d4ffce39 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/9.0/alpine3.20/amd64/Dockerfile.verified.noextension @@ -0,0 +1,23 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime-deps + +# Installer image +FROM $REPO:0.0.0-alpine3.XX-amd64 AS installer + +ARG ACCESSTOKEN + +# Retrieve .NET Runtime +RUN dotnet_version=0.0.0 \ + && wget --header="Authorization: Basic `echo $ACCESSTOKEN:$ACCESSTOKEN | base64 -w 0`" -O dotnet.tar.gz "https://builds.dotnet.microsoft.com/dotnet/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-musl-x64.tar.gz" \ + && dotnet_sha512='{sha512_placeholder}' \ + && echo "$dotnet_sha512 dotnet.tar.gz" | sha512sum -c - \ + && mkdir -p /dotnet \ + && tar -oxzf dotnet.tar.gz -C /dotnet \ + && rm dotnet.tar.gz + + +# .NET runtime image +FROM $REPO:0.0.0-alpine3.XX-amd64 + +# .NET Runtime version +ENV DOTNET_VERSION=0.0.0 + diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/9.0/alpine3.20/arm32v7/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/9.0/alpine3.20/arm32v7/Dockerfile.verified.noextension new file mode 100644 index 0000000000..92ab9227a9 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/9.0/alpine3.20/arm32v7/Dockerfile.verified.noextension @@ -0,0 +1,23 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime-deps + +# Installer image +FROM $REPO:0.0.0-alpine3.XX-arm32v7 AS installer + +ARG ACCESSTOKEN + +# Retrieve .NET Runtime +RUN dotnet_version=0.0.0 \ + && wget --header="Authorization: Basic `echo $ACCESSTOKEN:$ACCESSTOKEN | base64 -w 0`" -O dotnet.tar.gz "https://builds.dotnet.microsoft.com/dotnet/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-musl-arm.tar.gz" \ + && dotnet_sha512='{sha512_placeholder}' \ + && echo "$dotnet_sha512 dotnet.tar.gz" | sha512sum -c - \ + && mkdir -p /dotnet \ + && tar -oxzf dotnet.tar.gz -C /dotnet \ + && rm dotnet.tar.gz + + +# .NET runtime image +FROM $REPO:0.0.0-alpine3.XX-arm32v7 + +# .NET Runtime version +ENV DOTNET_VERSION=0.0.0 + diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/9.0/alpine3.20/arm64v8/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/9.0/alpine3.20/arm64v8/Dockerfile.verified.noextension new file mode 100644 index 0000000000..f3c8357d42 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/9.0/alpine3.20/arm64v8/Dockerfile.verified.noextension @@ -0,0 +1,23 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime-deps + +# Installer image +FROM $REPO:0.0.0-alpine3.XX-arm64v8 AS installer + +ARG ACCESSTOKEN + +# Retrieve .NET Runtime +RUN dotnet_version=0.0.0 \ + && wget --header="Authorization: Basic `echo $ACCESSTOKEN:$ACCESSTOKEN | base64 -w 0`" -O dotnet.tar.gz "https://builds.dotnet.microsoft.com/dotnet/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-musl-arm64.tar.gz" \ + && dotnet_sha512='{sha512_placeholder}' \ + && echo "$dotnet_sha512 dotnet.tar.gz" | sha512sum -c - \ + && mkdir -p /dotnet \ + && tar -oxzf dotnet.tar.gz -C /dotnet \ + && rm dotnet.tar.gz + + +# .NET runtime image +FROM $REPO:0.0.0-alpine3.XX-arm64v8 + +# .NET Runtime version +ENV DOTNET_VERSION=0.0.0 + diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/9.0/alpine3.21/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/9.0/alpine3.21/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..95d4ffce39 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/9.0/alpine3.21/amd64/Dockerfile.verified.noextension @@ -0,0 +1,23 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime-deps + +# Installer image +FROM $REPO:0.0.0-alpine3.XX-amd64 AS installer + +ARG ACCESSTOKEN + +# Retrieve .NET Runtime +RUN dotnet_version=0.0.0 \ + && wget --header="Authorization: Basic `echo $ACCESSTOKEN:$ACCESSTOKEN | base64 -w 0`" -O dotnet.tar.gz "https://builds.dotnet.microsoft.com/dotnet/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-musl-x64.tar.gz" \ + && dotnet_sha512='{sha512_placeholder}' \ + && echo "$dotnet_sha512 dotnet.tar.gz" | sha512sum -c - \ + && mkdir -p /dotnet \ + && tar -oxzf dotnet.tar.gz -C /dotnet \ + && rm dotnet.tar.gz + + +# .NET runtime image +FROM $REPO:0.0.0-alpine3.XX-amd64 + +# .NET Runtime version +ENV DOTNET_VERSION=0.0.0 + diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/9.0/alpine3.21/arm32v7/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/9.0/alpine3.21/arm32v7/Dockerfile.verified.noextension new file mode 100644 index 0000000000..92ab9227a9 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/9.0/alpine3.21/arm32v7/Dockerfile.verified.noextension @@ -0,0 +1,23 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime-deps + +# Installer image +FROM $REPO:0.0.0-alpine3.XX-arm32v7 AS installer + +ARG ACCESSTOKEN + +# Retrieve .NET Runtime +RUN dotnet_version=0.0.0 \ + && wget --header="Authorization: Basic `echo $ACCESSTOKEN:$ACCESSTOKEN | base64 -w 0`" -O dotnet.tar.gz "https://builds.dotnet.microsoft.com/dotnet/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-musl-arm.tar.gz" \ + && dotnet_sha512='{sha512_placeholder}' \ + && echo "$dotnet_sha512 dotnet.tar.gz" | sha512sum -c - \ + && mkdir -p /dotnet \ + && tar -oxzf dotnet.tar.gz -C /dotnet \ + && rm dotnet.tar.gz + + +# .NET runtime image +FROM $REPO:0.0.0-alpine3.XX-arm32v7 + +# .NET Runtime version +ENV DOTNET_VERSION=0.0.0 + diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/9.0/alpine3.21/arm64v8/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/9.0/alpine3.21/arm64v8/Dockerfile.verified.noextension new file mode 100644 index 0000000000..f3c8357d42 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/9.0/alpine3.21/arm64v8/Dockerfile.verified.noextension @@ -0,0 +1,23 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime-deps + +# Installer image +FROM $REPO:0.0.0-alpine3.XX-arm64v8 AS installer + +ARG ACCESSTOKEN + +# Retrieve .NET Runtime +RUN dotnet_version=0.0.0 \ + && wget --header="Authorization: Basic `echo $ACCESSTOKEN:$ACCESSTOKEN | base64 -w 0`" -O dotnet.tar.gz "https://builds.dotnet.microsoft.com/dotnet/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-musl-arm64.tar.gz" \ + && dotnet_sha512='{sha512_placeholder}' \ + && echo "$dotnet_sha512 dotnet.tar.gz" | sha512sum -c - \ + && mkdir -p /dotnet \ + && tar -oxzf dotnet.tar.gz -C /dotnet \ + && rm dotnet.tar.gz + + +# .NET runtime image +FROM $REPO:0.0.0-alpine3.XX-arm64v8 + +# .NET Runtime version +ENV DOTNET_VERSION=0.0.0 + diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/9.0/azurelinux3.0-distroless-extra/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/9.0/azurelinux3.0-distroless-extra/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..1ff7023ea1 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/9.0/azurelinux3.0-distroless-extra/amd64/Dockerfile.verified.noextension @@ -0,0 +1,37 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime-deps + +# Installer image +FROM mcr.microsoft.com/azurelinux/base/core:3.0 AS installer + +ARG ACCESSTOKEN + +RUN tdnf install -y \ + ca-certificates \ + gzip \ + tar \ + && tdnf clean all + +# Retrieve .NET Runtime +RUN dotnet_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output dotnet.tar.gz "https://builds.dotnet.microsoft.com/dotnet/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-x64.tar.gz" \ + && dotnet_sha512='{sha512_placeholder}' \ + && echo "$dotnet_sha512 dotnet.tar.gz" | sha512sum -c - \ + && mkdir -p /usr/share/dotnet \ + && tar -oxzf dotnet.tar.gz -C /usr/share/dotnet \ + && rm dotnet.tar.gz + +RUN mkdir /dotnet-symlink \ + && ln -s /usr/share/dotnet/dotnet /dotnet-symlink/dotnet + + +# .NET runtime image +FROM $REPO:0.0.0-azurelinux3.0-distroless-extra-amd64 + +# .NET Runtime version +ENV DOTNET_VERSION=0.0.0 + +COPY --from=installer ["/usr/share/dotnet", "/usr/share/dotnet"] +COPY --from=installer ["/dotnet-symlink", "/usr/bin"] + +ENTRYPOINT ["/usr/bin/dotnet"] +CMD ["--info"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/9.0/azurelinux3.0-distroless-extra/arm64v8/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/9.0/azurelinux3.0-distroless-extra/arm64v8/Dockerfile.verified.noextension new file mode 100644 index 0000000000..afe11fcb71 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/9.0/azurelinux3.0-distroless-extra/arm64v8/Dockerfile.verified.noextension @@ -0,0 +1,37 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime-deps + +# Installer image +FROM mcr.microsoft.com/azurelinux/base/core:3.0 AS installer + +ARG ACCESSTOKEN + +RUN tdnf install -y \ + ca-certificates \ + gzip \ + tar \ + && tdnf clean all + +# Retrieve .NET Runtime +RUN dotnet_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output dotnet.tar.gz "https://builds.dotnet.microsoft.com/dotnet/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-arm64.tar.gz" \ + && dotnet_sha512='{sha512_placeholder}' \ + && echo "$dotnet_sha512 dotnet.tar.gz" | sha512sum -c - \ + && mkdir -p /usr/share/dotnet \ + && tar -oxzf dotnet.tar.gz -C /usr/share/dotnet \ + && rm dotnet.tar.gz + +RUN mkdir /dotnet-symlink \ + && ln -s /usr/share/dotnet/dotnet /dotnet-symlink/dotnet + + +# .NET runtime image +FROM $REPO:0.0.0-azurelinux3.0-distroless-extra-arm64v8 + +# .NET Runtime version +ENV DOTNET_VERSION=0.0.0 + +COPY --from=installer ["/usr/share/dotnet", "/usr/share/dotnet"] +COPY --from=installer ["/dotnet-symlink", "/usr/bin"] + +ENTRYPOINT ["/usr/bin/dotnet"] +CMD ["--info"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/9.0/azurelinux3.0-distroless/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/9.0/azurelinux3.0-distroless/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..7f43e6f1d7 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/9.0/azurelinux3.0-distroless/amd64/Dockerfile.verified.noextension @@ -0,0 +1,37 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime-deps + +# Installer image +FROM mcr.microsoft.com/azurelinux/base/core:3.0 AS installer + +ARG ACCESSTOKEN + +RUN tdnf install -y \ + ca-certificates \ + gzip \ + tar \ + && tdnf clean all + +# Retrieve .NET Runtime +RUN dotnet_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output dotnet.tar.gz "https://builds.dotnet.microsoft.com/dotnet/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-x64.tar.gz" \ + && dotnet_sha512='{sha512_placeholder}' \ + && echo "$dotnet_sha512 dotnet.tar.gz" | sha512sum -c - \ + && mkdir -p /usr/share/dotnet \ + && tar -oxzf dotnet.tar.gz -C /usr/share/dotnet \ + && rm dotnet.tar.gz + +RUN mkdir /dotnet-symlink \ + && ln -s /usr/share/dotnet/dotnet /dotnet-symlink/dotnet + + +# .NET runtime image +FROM $REPO:0.0.0-azurelinux3.0-distroless-amd64 + +# .NET Runtime version +ENV DOTNET_VERSION=0.0.0 + +COPY --from=installer ["/usr/share/dotnet", "/usr/share/dotnet"] +COPY --from=installer ["/dotnet-symlink", "/usr/bin"] + +ENTRYPOINT ["/usr/bin/dotnet"] +CMD ["--info"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/9.0/azurelinux3.0-distroless/arm64v8/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/9.0/azurelinux3.0-distroless/arm64v8/Dockerfile.verified.noextension new file mode 100644 index 0000000000..3d53870418 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/9.0/azurelinux3.0-distroless/arm64v8/Dockerfile.verified.noextension @@ -0,0 +1,37 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime-deps + +# Installer image +FROM mcr.microsoft.com/azurelinux/base/core:3.0 AS installer + +ARG ACCESSTOKEN + +RUN tdnf install -y \ + ca-certificates \ + gzip \ + tar \ + && tdnf clean all + +# Retrieve .NET Runtime +RUN dotnet_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output dotnet.tar.gz "https://builds.dotnet.microsoft.com/dotnet/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-arm64.tar.gz" \ + && dotnet_sha512='{sha512_placeholder}' \ + && echo "$dotnet_sha512 dotnet.tar.gz" | sha512sum -c - \ + && mkdir -p /usr/share/dotnet \ + && tar -oxzf dotnet.tar.gz -C /usr/share/dotnet \ + && rm dotnet.tar.gz + +RUN mkdir /dotnet-symlink \ + && ln -s /usr/share/dotnet/dotnet /dotnet-symlink/dotnet + + +# .NET runtime image +FROM $REPO:0.0.0-azurelinux3.0-distroless-arm64v8 + +# .NET Runtime version +ENV DOTNET_VERSION=0.0.0 + +COPY --from=installer ["/usr/share/dotnet", "/usr/share/dotnet"] +COPY --from=installer ["/dotnet-symlink", "/usr/bin"] + +ENTRYPOINT ["/usr/bin/dotnet"] +CMD ["--info"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/9.0/azurelinux3.0/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/9.0/azurelinux3.0/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..d0325082b6 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/9.0/azurelinux3.0/amd64/Dockerfile.verified.noextension @@ -0,0 +1,27 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime-deps + +# Installer image +FROM $REPO:0.0.0-azurelinux3.0-amd64 AS installer + +ARG ACCESSTOKEN + +RUN tdnf install -y \ + tar \ + && tdnf clean all + +# Retrieve .NET Runtime +RUN dotnet_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output dotnet.tar.gz "https://builds.dotnet.microsoft.com/dotnet/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-x64.tar.gz" \ + && dotnet_sha512='{sha512_placeholder}' \ + && echo "$dotnet_sha512 dotnet.tar.gz" | sha512sum -c - \ + && mkdir -p /dotnet \ + && tar -oxzf dotnet.tar.gz -C /dotnet \ + && rm dotnet.tar.gz + + +# .NET runtime image +FROM $REPO:0.0.0-azurelinux3.0-amd64 + +# .NET Runtime version +ENV DOTNET_VERSION=0.0.0 + diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/9.0/azurelinux3.0/arm64v8/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/9.0/azurelinux3.0/arm64v8/Dockerfile.verified.noextension new file mode 100644 index 0000000000..977201a510 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/9.0/azurelinux3.0/arm64v8/Dockerfile.verified.noextension @@ -0,0 +1,27 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime-deps + +# Installer image +FROM $REPO:0.0.0-azurelinux3.0-arm64v8 AS installer + +ARG ACCESSTOKEN + +RUN tdnf install -y \ + tar \ + && tdnf clean all + +# Retrieve .NET Runtime +RUN dotnet_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output dotnet.tar.gz "https://builds.dotnet.microsoft.com/dotnet/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-arm64.tar.gz" \ + && dotnet_sha512='{sha512_placeholder}' \ + && echo "$dotnet_sha512 dotnet.tar.gz" | sha512sum -c - \ + && mkdir -p /dotnet \ + && tar -oxzf dotnet.tar.gz -C /dotnet \ + && rm dotnet.tar.gz + + +# .NET runtime image +FROM $REPO:0.0.0-azurelinux3.0-arm64v8 + +# .NET Runtime version +ENV DOTNET_VERSION=0.0.0 + diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/9.0/bookworm-slim/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/9.0/bookworm-slim/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..52ea278d59 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/9.0/bookworm-slim/amd64/Dockerfile.verified.noextension @@ -0,0 +1,23 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime-deps + +# Installer image +FROM amd64/buildpack-deps:bookworm-curl AS installer + +ARG ACCESSTOKEN + +# Retrieve .NET Runtime +RUN dotnet_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output dotnet.tar.gz "https://builds.dotnet.microsoft.com/dotnet/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-x64.tar.gz" \ + && dotnet_sha512='{sha512_placeholder}' \ + && echo "$dotnet_sha512 dotnet.tar.gz" | sha512sum -c - \ + && mkdir -p /dotnet \ + && tar -oxzf dotnet.tar.gz -C /dotnet \ + && rm dotnet.tar.gz + + +# .NET runtime image +FROM $REPO:0.0.0-bookworm-slim-amd64 + +# .NET Runtime version +ENV DOTNET_VERSION=0.0.0 + diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/9.0/bookworm-slim/arm32v7/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/9.0/bookworm-slim/arm32v7/Dockerfile.verified.noextension new file mode 100644 index 0000000000..8b75594b0a --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/9.0/bookworm-slim/arm32v7/Dockerfile.verified.noextension @@ -0,0 +1,23 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime-deps + +# Installer image +FROM arm32v7/buildpack-deps:bookworm-curl AS installer + +ARG ACCESSTOKEN + +# Retrieve .NET Runtime +RUN dotnet_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output dotnet.tar.gz "https://builds.dotnet.microsoft.com/dotnet/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-arm.tar.gz" \ + && dotnet_sha512='{sha512_placeholder}' \ + && echo "$dotnet_sha512 dotnet.tar.gz" | sha512sum -c - \ + && mkdir -p /dotnet \ + && tar -oxzf dotnet.tar.gz -C /dotnet \ + && rm dotnet.tar.gz + + +# .NET runtime image +FROM $REPO:0.0.0-bookworm-slim-arm32v7 + +# .NET Runtime version +ENV DOTNET_VERSION=0.0.0 + diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/9.0/bookworm-slim/arm64v8/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/9.0/bookworm-slim/arm64v8/Dockerfile.verified.noextension new file mode 100644 index 0000000000..c610fda64f --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/9.0/bookworm-slim/arm64v8/Dockerfile.verified.noextension @@ -0,0 +1,23 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime-deps + +# Installer image +FROM arm64v8/buildpack-deps:bookworm-curl AS installer + +ARG ACCESSTOKEN + +# Retrieve .NET Runtime +RUN dotnet_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output dotnet.tar.gz "https://builds.dotnet.microsoft.com/dotnet/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-arm64.tar.gz" \ + && dotnet_sha512='{sha512_placeholder}' \ + && echo "$dotnet_sha512 dotnet.tar.gz" | sha512sum -c - \ + && mkdir -p /dotnet \ + && tar -oxzf dotnet.tar.gz -C /dotnet \ + && rm dotnet.tar.gz + + +# .NET runtime image +FROM $REPO:0.0.0-bookworm-slim-arm64v8 + +# .NET Runtime version +ENV DOTNET_VERSION=0.0.0 + diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/9.0/nanoserver-1809/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/9.0/nanoserver-1809/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..e52c87e655 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/9.0/nanoserver-1809/amd64/Dockerfile.verified.noextension @@ -0,0 +1,46 @@ +# escape=` + +# Installer image +FROM mcr.microsoft.com/windows/servercore:1809-amd64 AS installer + +ARG ACCESSTOKEN + +# Retrieve .NET Runtime +RUN powershell -Command ` + $ErrorActionPreference = 'Stop'; ` + $ProgressPreference = 'SilentlyContinue'; ` + ` + $dotnet_version = '0.0.0'; ` + ` + $Base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(\":$($Env:ACCESSTOKEN)\")); ` + $Headers = @{Authorization = \"Basic $Base64AuthInfo\"}; ` + Invoke-WebRequest -OutFile dotnet.zip \"https://builds.dotnet.microsoft.com/dotnet/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-win-x64.zip\" -Headers $Headers; ` + ` + $dotnet_sha512 = '{sha512_placeholder}'; ` + if ((Get-FileHash dotnet.zip -Algorithm sha512).Hash -ne $dotnet_sha512) { ` + Write-Host 'CHECKSUM VERIFICATION FAILED!'; ` + exit 1; ` + }; ` + ` + mkdir dotnet; ` + tar -oxzf dotnet.zip -C dotnet; ` + Remove-Item -Force dotnet.zip + + +# Runtime image +FROM mcr.microsoft.com/windows/nanoserver:1809-amd64 + +ENV ` + # Configure web servers to bind to port 8080 when present + ASPNETCORE_HTTP_PORTS=8080 ` + # Enable detection of running in a container + DOTNET_RUNNING_IN_CONTAINER=true ` + # .NET Runtime version + DOTNET_VERSION=0.0.0 + +# In order to set system PATH, ContainerAdministrator must be used +USER ContainerAdministrator +RUN setx /M PATH "%PATH%;C:\Program Files\dotnet" +USER ContainerUser + +COPY --from=installer ["/dotnet", "/Program Files/dotnet"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/9.0/nanoserver-ltsc2022/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/9.0/nanoserver-ltsc2022/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..e122ec295e --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/9.0/nanoserver-ltsc2022/amd64/Dockerfile.verified.noextension @@ -0,0 +1,46 @@ +# escape=` + +# Installer image +FROM mcr.microsoft.com/windows/servercore:ltsc2022-amd64 AS installer + +ARG ACCESSTOKEN + +# Retrieve .NET Runtime +RUN powershell -Command ` + $ErrorActionPreference = 'Stop'; ` + $ProgressPreference = 'SilentlyContinue'; ` + ` + $dotnet_version = '0.0.0'; ` + ` + $Base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(\":$($Env:ACCESSTOKEN)\")); ` + $Headers = @{Authorization = \"Basic $Base64AuthInfo\"}; ` + Invoke-WebRequest -OutFile dotnet.zip \"https://builds.dotnet.microsoft.com/dotnet/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-win-x64.zip\" -Headers $Headers; ` + ` + $dotnet_sha512 = '{sha512_placeholder}'; ` + if ((Get-FileHash dotnet.zip -Algorithm sha512).Hash -ne $dotnet_sha512) { ` + Write-Host 'CHECKSUM VERIFICATION FAILED!'; ` + exit 1; ` + }; ` + ` + mkdir dotnet; ` + tar -oxzf dotnet.zip -C dotnet; ` + Remove-Item -Force dotnet.zip + + +# Runtime image +FROM mcr.microsoft.com/windows/nanoserver:ltsc2022-amd64 + +ENV ` + # Configure web servers to bind to port 8080 when present + ASPNETCORE_HTTP_PORTS=8080 ` + # Enable detection of running in a container + DOTNET_RUNNING_IN_CONTAINER=true ` + # .NET Runtime version + DOTNET_VERSION=0.0.0 + +# In order to set system PATH, ContainerAdministrator must be used +USER ContainerAdministrator +RUN setx /M PATH "%PATH%;C:\Program Files\dotnet" +USER ContainerUser + +COPY --from=installer ["/dotnet", "/Program Files/dotnet"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/9.0/nanoserver-ltsc2025/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/9.0/nanoserver-ltsc2025/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..9a3f0d95d4 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/9.0/nanoserver-ltsc2025/amd64/Dockerfile.verified.noextension @@ -0,0 +1,46 @@ +# escape=` + +# Installer image +FROM mcr.microsoft.com/windows/servercore:ltsc2025-amd64 AS installer + +ARG ACCESSTOKEN + +# Retrieve .NET Runtime +RUN powershell -Command ` + $ErrorActionPreference = 'Stop'; ` + $ProgressPreference = 'SilentlyContinue'; ` + ` + $dotnet_version = '0.0.0'; ` + ` + $Base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(\":$($Env:ACCESSTOKEN)\")); ` + $Headers = @{Authorization = \"Basic $Base64AuthInfo\"}; ` + Invoke-WebRequest -OutFile dotnet.zip \"https://builds.dotnet.microsoft.com/dotnet/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-win-x64.zip\" -Headers $Headers; ` + ` + $dotnet_sha512 = '{sha512_placeholder}'; ` + if ((Get-FileHash dotnet.zip -Algorithm sha512).Hash -ne $dotnet_sha512) { ` + Write-Host 'CHECKSUM VERIFICATION FAILED!'; ` + exit 1; ` + }; ` + ` + mkdir dotnet; ` + tar -oxzf dotnet.zip -C dotnet; ` + Remove-Item -Force dotnet.zip + + +# Runtime image +FROM mcr.microsoft.com/windows/nanoserver:ltsc2025-amd64 + +ENV ` + # Configure web servers to bind to port 8080 when present + ASPNETCORE_HTTP_PORTS=8080 ` + # Enable detection of running in a container + DOTNET_RUNNING_IN_CONTAINER=true ` + # .NET Runtime version + DOTNET_VERSION=0.0.0 + +# In order to set system PATH, ContainerAdministrator must be used +USER ContainerAdministrator +RUN setx /M PATH "%PATH%;C:\Program Files\dotnet" +USER ContainerUser + +COPY --from=installer ["/dotnet", "/Program Files/dotnet"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/9.0/noble-chiseled-extra/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/9.0/noble-chiseled-extra/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..4f6fd542dc --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/9.0/noble-chiseled-extra/amd64/Dockerfile.verified.noextension @@ -0,0 +1,31 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime-deps + +# Installer image +FROM amd64/buildpack-deps:noble-curl AS installer + +ARG ACCESSTOKEN + +# Retrieve .NET Runtime +RUN dotnet_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output dotnet.tar.gz "https://builds.dotnet.microsoft.com/dotnet/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-x64.tar.gz" \ + && dotnet_sha512='{sha512_placeholder}' \ + && echo "$dotnet_sha512 dotnet.tar.gz" | sha512sum -c - \ + && mkdir -p /usr/share/dotnet \ + && tar -oxzf dotnet.tar.gz -C /usr/share/dotnet \ + && rm dotnet.tar.gz + +RUN mkdir /dotnet-symlink \ + && ln -s /usr/share/dotnet/dotnet /dotnet-symlink/dotnet + + +# .NET runtime image +FROM $REPO:0.0.0-noble-chiseled-extra-amd64 + +# .NET Runtime version +ENV DOTNET_VERSION=0.0.0 + +COPY --from=installer ["/usr/share/dotnet", "/usr/share/dotnet"] +COPY --from=installer ["/dotnet-symlink", "/usr/bin"] + +ENTRYPOINT ["/usr/bin/dotnet"] +CMD ["--info"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/9.0/noble-chiseled-extra/arm32v7/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/9.0/noble-chiseled-extra/arm32v7/Dockerfile.verified.noextension new file mode 100644 index 0000000000..495ae60072 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/9.0/noble-chiseled-extra/arm32v7/Dockerfile.verified.noextension @@ -0,0 +1,31 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime-deps + +# Installer image +FROM arm32v7/buildpack-deps:jammy-curl AS installer + +ARG ACCESSTOKEN + +# Retrieve .NET Runtime +RUN dotnet_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output dotnet.tar.gz "https://builds.dotnet.microsoft.com/dotnet/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-arm.tar.gz" \ + && dotnet_sha512='{sha512_placeholder}' \ + && echo "$dotnet_sha512 dotnet.tar.gz" | sha512sum -c - \ + && mkdir -p /usr/share/dotnet \ + && tar -oxzf dotnet.tar.gz -C /usr/share/dotnet \ + && rm dotnet.tar.gz + +RUN mkdir /dotnet-symlink \ + && ln -s /usr/share/dotnet/dotnet /dotnet-symlink/dotnet + + +# .NET runtime image +FROM $REPO:0.0.0-noble-chiseled-extra-arm32v7 + +# .NET Runtime version +ENV DOTNET_VERSION=0.0.0 + +COPY --from=installer ["/usr/share/dotnet", "/usr/share/dotnet"] +COPY --from=installer ["/dotnet-symlink", "/usr/bin"] + +ENTRYPOINT ["/usr/bin/dotnet"] +CMD ["--info"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/9.0/noble-chiseled-extra/arm64v8/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/9.0/noble-chiseled-extra/arm64v8/Dockerfile.verified.noextension new file mode 100644 index 0000000000..cbbaa10aae --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/9.0/noble-chiseled-extra/arm64v8/Dockerfile.verified.noextension @@ -0,0 +1,31 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime-deps + +# Installer image +FROM arm64v8/buildpack-deps:noble-curl AS installer + +ARG ACCESSTOKEN + +# Retrieve .NET Runtime +RUN dotnet_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output dotnet.tar.gz "https://builds.dotnet.microsoft.com/dotnet/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-arm64.tar.gz" \ + && dotnet_sha512='{sha512_placeholder}' \ + && echo "$dotnet_sha512 dotnet.tar.gz" | sha512sum -c - \ + && mkdir -p /usr/share/dotnet \ + && tar -oxzf dotnet.tar.gz -C /usr/share/dotnet \ + && rm dotnet.tar.gz + +RUN mkdir /dotnet-symlink \ + && ln -s /usr/share/dotnet/dotnet /dotnet-symlink/dotnet + + +# .NET runtime image +FROM $REPO:0.0.0-noble-chiseled-extra-arm64v8 + +# .NET Runtime version +ENV DOTNET_VERSION=0.0.0 + +COPY --from=installer ["/usr/share/dotnet", "/usr/share/dotnet"] +COPY --from=installer ["/dotnet-symlink", "/usr/bin"] + +ENTRYPOINT ["/usr/bin/dotnet"] +CMD ["--info"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/9.0/noble-chiseled/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/9.0/noble-chiseled/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..b1da9f37f1 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/9.0/noble-chiseled/amd64/Dockerfile.verified.noextension @@ -0,0 +1,31 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime-deps + +# Installer image +FROM amd64/buildpack-deps:noble-curl AS installer + +ARG ACCESSTOKEN + +# Retrieve .NET Runtime +RUN dotnet_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output dotnet.tar.gz "https://builds.dotnet.microsoft.com/dotnet/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-x64.tar.gz" \ + && dotnet_sha512='{sha512_placeholder}' \ + && echo "$dotnet_sha512 dotnet.tar.gz" | sha512sum -c - \ + && mkdir -p /usr/share/dotnet \ + && tar -oxzf dotnet.tar.gz -C /usr/share/dotnet \ + && rm dotnet.tar.gz + +RUN mkdir /dotnet-symlink \ + && ln -s /usr/share/dotnet/dotnet /dotnet-symlink/dotnet + + +# .NET runtime image +FROM $REPO:0.0.0-noble-chiseled-amd64 + +# .NET Runtime version +ENV DOTNET_VERSION=0.0.0 + +COPY --from=installer ["/usr/share/dotnet", "/usr/share/dotnet"] +COPY --from=installer ["/dotnet-symlink", "/usr/bin"] + +ENTRYPOINT ["/usr/bin/dotnet"] +CMD ["--info"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/9.0/noble-chiseled/arm32v7/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/9.0/noble-chiseled/arm32v7/Dockerfile.verified.noextension new file mode 100644 index 0000000000..2a10a39f15 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/9.0/noble-chiseled/arm32v7/Dockerfile.verified.noextension @@ -0,0 +1,31 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime-deps + +# Installer image +FROM arm32v7/buildpack-deps:jammy-curl AS installer + +ARG ACCESSTOKEN + +# Retrieve .NET Runtime +RUN dotnet_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output dotnet.tar.gz "https://builds.dotnet.microsoft.com/dotnet/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-arm.tar.gz" \ + && dotnet_sha512='{sha512_placeholder}' \ + && echo "$dotnet_sha512 dotnet.tar.gz" | sha512sum -c - \ + && mkdir -p /usr/share/dotnet \ + && tar -oxzf dotnet.tar.gz -C /usr/share/dotnet \ + && rm dotnet.tar.gz + +RUN mkdir /dotnet-symlink \ + && ln -s /usr/share/dotnet/dotnet /dotnet-symlink/dotnet + + +# .NET runtime image +FROM $REPO:0.0.0-noble-chiseled-arm32v7 + +# .NET Runtime version +ENV DOTNET_VERSION=0.0.0 + +COPY --from=installer ["/usr/share/dotnet", "/usr/share/dotnet"] +COPY --from=installer ["/dotnet-symlink", "/usr/bin"] + +ENTRYPOINT ["/usr/bin/dotnet"] +CMD ["--info"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/9.0/noble-chiseled/arm64v8/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/9.0/noble-chiseled/arm64v8/Dockerfile.verified.noextension new file mode 100644 index 0000000000..6cbdc292d1 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/9.0/noble-chiseled/arm64v8/Dockerfile.verified.noextension @@ -0,0 +1,31 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime-deps + +# Installer image +FROM arm64v8/buildpack-deps:noble-curl AS installer + +ARG ACCESSTOKEN + +# Retrieve .NET Runtime +RUN dotnet_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output dotnet.tar.gz "https://builds.dotnet.microsoft.com/dotnet/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-arm64.tar.gz" \ + && dotnet_sha512='{sha512_placeholder}' \ + && echo "$dotnet_sha512 dotnet.tar.gz" | sha512sum -c - \ + && mkdir -p /usr/share/dotnet \ + && tar -oxzf dotnet.tar.gz -C /usr/share/dotnet \ + && rm dotnet.tar.gz + +RUN mkdir /dotnet-symlink \ + && ln -s /usr/share/dotnet/dotnet /dotnet-symlink/dotnet + + +# .NET runtime image +FROM $REPO:0.0.0-noble-chiseled-arm64v8 + +# .NET Runtime version +ENV DOTNET_VERSION=0.0.0 + +COPY --from=installer ["/usr/share/dotnet", "/usr/share/dotnet"] +COPY --from=installer ["/dotnet-symlink", "/usr/bin"] + +ENTRYPOINT ["/usr/bin/dotnet"] +CMD ["--info"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/9.0/noble/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/9.0/noble/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..51abc04512 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/9.0/noble/amd64/Dockerfile.verified.noextension @@ -0,0 +1,23 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime-deps + +# Installer image +FROM amd64/buildpack-deps:noble-curl AS installer + +ARG ACCESSTOKEN + +# Retrieve .NET Runtime +RUN dotnet_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output dotnet.tar.gz "https://builds.dotnet.microsoft.com/dotnet/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-x64.tar.gz" \ + && dotnet_sha512='{sha512_placeholder}' \ + && echo "$dotnet_sha512 dotnet.tar.gz" | sha512sum -c - \ + && mkdir -p /dotnet \ + && tar -oxzf dotnet.tar.gz -C /dotnet \ + && rm dotnet.tar.gz + + +# .NET runtime image +FROM $REPO:0.0.0-noble-amd64 + +# .NET Runtime version +ENV DOTNET_VERSION=0.0.0 + diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/9.0/noble/arm32v7/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/9.0/noble/arm32v7/Dockerfile.verified.noextension new file mode 100644 index 0000000000..abfad89640 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/9.0/noble/arm32v7/Dockerfile.verified.noextension @@ -0,0 +1,23 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime-deps + +# Installer image +FROM arm32v7/buildpack-deps:jammy-curl AS installer + +ARG ACCESSTOKEN + +# Retrieve .NET Runtime +RUN dotnet_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output dotnet.tar.gz "https://builds.dotnet.microsoft.com/dotnet/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-arm.tar.gz" \ + && dotnet_sha512='{sha512_placeholder}' \ + && echo "$dotnet_sha512 dotnet.tar.gz" | sha512sum -c - \ + && mkdir -p /dotnet \ + && tar -oxzf dotnet.tar.gz -C /dotnet \ + && rm dotnet.tar.gz + + +# .NET runtime image +FROM $REPO:0.0.0-noble-arm32v7 + +# .NET Runtime version +ENV DOTNET_VERSION=0.0.0 + diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/9.0/noble/arm64v8/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/9.0/noble/arm64v8/Dockerfile.verified.noextension new file mode 100644 index 0000000000..649e2ca178 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/9.0/noble/arm64v8/Dockerfile.verified.noextension @@ -0,0 +1,23 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime-deps + +# Installer image +FROM arm64v8/buildpack-deps:noble-curl AS installer + +ARG ACCESSTOKEN + +# Retrieve .NET Runtime +RUN dotnet_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output dotnet.tar.gz "https://builds.dotnet.microsoft.com/dotnet/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-arm64.tar.gz" \ + && dotnet_sha512='{sha512_placeholder}' \ + && echo "$dotnet_sha512 dotnet.tar.gz" | sha512sum -c - \ + && mkdir -p /dotnet \ + && tar -oxzf dotnet.tar.gz -C /dotnet \ + && rm dotnet.tar.gz + + +# .NET runtime image +FROM $REPO:0.0.0-noble-arm64v8 + +# .NET Runtime version +ENV DOTNET_VERSION=0.0.0 + diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/9.0/windowsservercore-ltsc2019/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/9.0/windowsservercore-ltsc2019/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..154118fdb3 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/9.0/windowsservercore-ltsc2019/amd64/Dockerfile.verified.noextension @@ -0,0 +1,43 @@ +# escape=` + +# Installer image +FROM mcr.microsoft.com/windows/servercore:ltsc2019-amd64 AS installer + +ARG ACCESSTOKEN + +# Retrieve .NET Runtime +RUN powershell -Command ` + $ErrorActionPreference = 'Stop'; ` + $ProgressPreference = 'SilentlyContinue'; ` + ` + $dotnet_version = '0.0.0'; ` + ` + $Base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(\":$($Env:ACCESSTOKEN)\")); ` + $Headers = @{Authorization = \"Basic $Base64AuthInfo\"}; ` + Invoke-WebRequest -OutFile dotnet.zip \"https://builds.dotnet.microsoft.com/dotnet/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-win-x64.zip\" -Headers $Headers; ` + ` + $dotnet_sha512 = '{sha512_placeholder}'; ` + if ((Get-FileHash dotnet.zip -Algorithm sha512).Hash -ne $dotnet_sha512) { ` + Write-Host 'CHECKSUM VERIFICATION FAILED!'; ` + exit 1; ` + }; ` + ` + mkdir dotnet; ` + tar -oxzf dotnet.zip -C dotnet; ` + Remove-Item -Force dotnet.zip + + +# Runtime image +FROM mcr.microsoft.com/windows/servercore:ltsc2019-amd64 + +ENV ` + # Configure web servers to bind to port 8080 when present + ASPNETCORE_HTTP_PORTS=8080 ` + # Enable detection of running in a container + DOTNET_RUNNING_IN_CONTAINER=true ` + # .NET Runtime version + DOTNET_VERSION=0.0.0 + +RUN setx /M PATH "%PATH%;C:\Program Files\dotnet" + +COPY --from=installer ["/dotnet", "/Program Files/dotnet"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/9.0/windowsservercore-ltsc2022/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/9.0/windowsservercore-ltsc2022/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..8f095df827 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/9.0/windowsservercore-ltsc2022/amd64/Dockerfile.verified.noextension @@ -0,0 +1,43 @@ +# escape=` + +# Installer image +FROM mcr.microsoft.com/windows/servercore:ltsc2022-amd64 AS installer + +ARG ACCESSTOKEN + +# Retrieve .NET Runtime +RUN powershell -Command ` + $ErrorActionPreference = 'Stop'; ` + $ProgressPreference = 'SilentlyContinue'; ` + ` + $dotnet_version = '0.0.0'; ` + ` + $Base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(\":$($Env:ACCESSTOKEN)\")); ` + $Headers = @{Authorization = \"Basic $Base64AuthInfo\"}; ` + Invoke-WebRequest -OutFile dotnet.zip \"https://builds.dotnet.microsoft.com/dotnet/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-win-x64.zip\" -Headers $Headers; ` + ` + $dotnet_sha512 = '{sha512_placeholder}'; ` + if ((Get-FileHash dotnet.zip -Algorithm sha512).Hash -ne $dotnet_sha512) { ` + Write-Host 'CHECKSUM VERIFICATION FAILED!'; ` + exit 1; ` + }; ` + ` + mkdir dotnet; ` + tar -oxzf dotnet.zip -C dotnet; ` + Remove-Item -Force dotnet.zip + + +# Runtime image +FROM mcr.microsoft.com/windows/servercore:ltsc2022-amd64 + +ENV ` + # Configure web servers to bind to port 8080 when present + ASPNETCORE_HTTP_PORTS=8080 ` + # Enable detection of running in a container + DOTNET_RUNNING_IN_CONTAINER=true ` + # .NET Runtime version + DOTNET_VERSION=0.0.0 + +RUN setx /M PATH "%PATH%;C:\Program Files\dotnet" + +COPY --from=installer ["/dotnet", "/Program Files/dotnet"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/9.0/windowsservercore-ltsc2025/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/9.0/windowsservercore-ltsc2025/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..566be4d1ca --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/runtime/9.0/windowsservercore-ltsc2025/amd64/Dockerfile.verified.noextension @@ -0,0 +1,43 @@ +# escape=` + +# Installer image +FROM mcr.microsoft.com/windows/servercore:ltsc2025-amd64 AS installer + +ARG ACCESSTOKEN + +# Retrieve .NET Runtime +RUN powershell -Command ` + $ErrorActionPreference = 'Stop'; ` + $ProgressPreference = 'SilentlyContinue'; ` + ` + $dotnet_version = '0.0.0'; ` + ` + $Base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(\":$($Env:ACCESSTOKEN)\")); ` + $Headers = @{Authorization = \"Basic $Base64AuthInfo\"}; ` + Invoke-WebRequest -OutFile dotnet.zip \"https://builds.dotnet.microsoft.com/dotnet/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-win-x64.zip\" -Headers $Headers; ` + ` + $dotnet_sha512 = '{sha512_placeholder}'; ` + if ((Get-FileHash dotnet.zip -Algorithm sha512).Hash -ne $dotnet_sha512) { ` + Write-Host 'CHECKSUM VERIFICATION FAILED!'; ` + exit 1; ` + }; ` + ` + mkdir dotnet; ` + tar -oxzf dotnet.zip -C dotnet; ` + Remove-Item -Force dotnet.zip + + +# Runtime image +FROM mcr.microsoft.com/windows/servercore:ltsc2025-amd64 + +ENV ` + # Configure web servers to bind to port 8080 when present + ASPNETCORE_HTTP_PORTS=8080 ` + # Enable detection of running in a container + DOTNET_RUNNING_IN_CONTAINER=true ` + # .NET Runtime version + DOTNET_VERSION=0.0.0 + +RUN setx /M PATH "%PATH%;C:\Program Files\dotnet" + +COPY --from=installer ["/dotnet", "/Program Files/dotnet"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/8.0/alpine3.20-aot/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/8.0/alpine3.20-aot/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..5f7812c897 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/8.0/alpine3.20-aot/amd64/Dockerfile.verified.noextension @@ -0,0 +1,8 @@ +# syntax=docker/dockerfile:1 +ARG REPO=mcr.microsoft.com/dotnet/sdk +FROM $REPO:0.0.0-alpine3.XX-amd64 + +RUN apk add --upgrade --no-cache \ + build-base \ + clang \ + zlib-dev diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/8.0/alpine3.20-aot/arm64v8/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/8.0/alpine3.20-aot/arm64v8/Dockerfile.verified.noextension new file mode 100644 index 0000000000..19046afa59 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/8.0/alpine3.20-aot/arm64v8/Dockerfile.verified.noextension @@ -0,0 +1,8 @@ +# syntax=docker/dockerfile:1 +ARG REPO=mcr.microsoft.com/dotnet/sdk +FROM $REPO:0.0.0-alpine3.XX-arm64v8 + +RUN apk add --upgrade --no-cache \ + build-base \ + clang \ + zlib-dev diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/8.0/alpine3.20/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/8.0/alpine3.20/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..c7d78f7899 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/8.0/alpine3.20/amd64/Dockerfile.verified.noextension @@ -0,0 +1,61 @@ +ARG REPO=mcr.microsoft.com/dotnet/aspnet +# Installer image +FROM $REPO:0.0.0-alpine3.XX-amd64 AS installer + +ARG ACCESSTOKEN + +# Install .NET SDK +RUN wget --header="Authorization: Basic `echo $ACCESSTOKEN:$ACCESSTOKEN | base64 -w 0`" -O dotnet.tar.gz "https://builds.dotnet.microsoft.com/dotnet/Sdk/0.0.0/dotnet-sdk-0.0.0-linux-musl-x64.tar.gz" \ + && dotnet_sha512='{sha512_placeholder}' \ + && echo "$dotnet_sha512 dotnet.tar.gz" | sha512sum -c - \ + && mkdir -p /usr/share/dotnet \ + && tar -oxzf dotnet.tar.gz -C /usr/share/dotnet ./packs ./sdk ./sdk-manifests ./templates ./LICENSE.txt ./ThirdPartyNotices.txt \ + && rm dotnet.tar.gz + + +# .NET SDK image +FROM $REPO:0.0.0-alpine3.XX-amd64 + +ENV \ + # Do not generate certificate + DOTNET_GENERATE_ASPNET_CERTIFICATE=false \ + # Do not show first run text + DOTNET_NOLOGO=true \ + # SDK version + DOTNET_SDK_VERSION=0.0.0 \ + # Disable the invariant mode (set in base image) + DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=false \ + # Enable correct mode for dotnet watch (only mode supported in a container) + DOTNET_USE_POLLING_FILE_WATCHER=true \ + # Skip extraction of XML docs - generally not useful within an image/container - helps performance + NUGET_XMLDOC_MODE=skip \ + # PowerShell telemetry for docker image usage + POWERSHELL_DISTRIBUTION_CHANNEL=PSDocker-DotnetSDK-Alpine-3.20 + +RUN apk add --upgrade --no-cache \ + curl \ + git \ + icu-data-full \ + icu-libs \ + tzdata + +COPY --from=installer ["/usr/share/dotnet", "/usr/share/dotnet"] + +# Trigger first run experience by running arbitrary cmd +RUN dotnet help + +# Install PowerShell global tool +RUN powershell_version=0.0.0 \ + && wget --header="Authorization: Basic `echo $ACCESSTOKEN:$ACCESSTOKEN | base64 -w 0`" -O PowerShell.Linux.Alpine.$powershell_version.nupkg "https://powershellinfraartifacts-gkhedzdeaghdezhr.z01.azurefd.net/tool/$powershell_version/PowerShell.Linux.Alpine.$powershell_version.nupkg" \ + && powershell_sha512='{sha512_placeholder}' \ + && echo "$powershell_sha512 PowerShell.Linux.Alpine.$powershell_version.nupkg" | sha512sum -c - \ + && mkdir -p /usr/share/powershell \ + && dotnet tool install --add-source / --tool-path /usr/share/powershell --version $powershell_version PowerShell.Linux.Alpine \ + && dotnet nuget locals all --clear \ + && rm PowerShell.Linux.Alpine.$powershell_version.nupkg \ + && ln -s /usr/share/powershell/pwsh /usr/bin/pwsh \ + && chmod 755 /usr/share/powershell/pwsh \ + # To reduce image size, remove the copy nupkg that nuget keeps. + && find /usr/share/powershell -print | grep -i '.*[.]nupkg$' | xargs rm \ + # Add ncurses-terminfo-base to resolve psreadline dependency + && apk add --no-cache ncurses-terminfo-base diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/8.0/alpine3.20/arm32v7/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/8.0/alpine3.20/arm32v7/Dockerfile.verified.noextension new file mode 100644 index 0000000000..3d6713af1c --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/8.0/alpine3.20/arm32v7/Dockerfile.verified.noextension @@ -0,0 +1,45 @@ +ARG REPO=mcr.microsoft.com/dotnet/aspnet +# Installer image +FROM $REPO:0.0.0-alpine3.XX-arm32v7 AS installer + +ARG ACCESSTOKEN + +# Install .NET SDK +RUN wget --header="Authorization: Basic `echo $ACCESSTOKEN:$ACCESSTOKEN | base64 -w 0`" -O dotnet.tar.gz "https://builds.dotnet.microsoft.com/dotnet/Sdk/0.0.0/dotnet-sdk-0.0.0-linux-musl-arm.tar.gz" \ + && dotnet_sha512='{sha512_placeholder}' \ + && echo "$dotnet_sha512 dotnet.tar.gz" | sha512sum -c - \ + && mkdir -p /usr/share/dotnet \ + && tar -oxzf dotnet.tar.gz -C /usr/share/dotnet ./packs ./sdk ./sdk-manifests ./templates ./LICENSE.txt ./ThirdPartyNotices.txt \ + && rm dotnet.tar.gz + + +# .NET SDK image +FROM $REPO:0.0.0-alpine3.XX-arm32v7 + +ENV \ + # Do not generate certificate + DOTNET_GENERATE_ASPNET_CERTIFICATE=false \ + # Do not show first run text + DOTNET_NOLOGO=true \ + # SDK version + DOTNET_SDK_VERSION=0.0.0 \ + # Disable the invariant mode (set in base image) + DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=false \ + # Enable correct mode for dotnet watch (only mode supported in a container) + DOTNET_USE_POLLING_FILE_WATCHER=true \ + # Skip extraction of XML docs - generally not useful within an image/container - helps performance + NUGET_XMLDOC_MODE=skip \ + # PowerShell telemetry for docker image usage + POWERSHELL_DISTRIBUTION_CHANNEL=PSDocker-DotnetSDK-Alpine-3.20-arm32 + +RUN apk add --upgrade --no-cache \ + curl \ + git \ + icu-data-full \ + icu-libs \ + tzdata + +COPY --from=installer ["/usr/share/dotnet", "/usr/share/dotnet"] + +# Trigger first run experience by running arbitrary cmd +RUN dotnet help diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/8.0/alpine3.20/arm64v8/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/8.0/alpine3.20/arm64v8/Dockerfile.verified.noextension new file mode 100644 index 0000000000..f57d127cdb --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/8.0/alpine3.20/arm64v8/Dockerfile.verified.noextension @@ -0,0 +1,45 @@ +ARG REPO=mcr.microsoft.com/dotnet/aspnet +# Installer image +FROM $REPO:0.0.0-alpine3.XX-arm64v8 AS installer + +ARG ACCESSTOKEN + +# Install .NET SDK +RUN wget --header="Authorization: Basic `echo $ACCESSTOKEN:$ACCESSTOKEN | base64 -w 0`" -O dotnet.tar.gz "https://builds.dotnet.microsoft.com/dotnet/Sdk/0.0.0/dotnet-sdk-0.0.0-linux-musl-arm64.tar.gz" \ + && dotnet_sha512='{sha512_placeholder}' \ + && echo "$dotnet_sha512 dotnet.tar.gz" | sha512sum -c - \ + && mkdir -p /usr/share/dotnet \ + && tar -oxzf dotnet.tar.gz -C /usr/share/dotnet ./packs ./sdk ./sdk-manifests ./templates ./LICENSE.txt ./ThirdPartyNotices.txt \ + && rm dotnet.tar.gz + + +# .NET SDK image +FROM $REPO:0.0.0-alpine3.XX-arm64v8 + +ENV \ + # Do not generate certificate + DOTNET_GENERATE_ASPNET_CERTIFICATE=false \ + # Do not show first run text + DOTNET_NOLOGO=true \ + # SDK version + DOTNET_SDK_VERSION=0.0.0 \ + # Disable the invariant mode (set in base image) + DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=false \ + # Enable correct mode for dotnet watch (only mode supported in a container) + DOTNET_USE_POLLING_FILE_WATCHER=true \ + # Skip extraction of XML docs - generally not useful within an image/container - helps performance + NUGET_XMLDOC_MODE=skip \ + # PowerShell telemetry for docker image usage + POWERSHELL_DISTRIBUTION_CHANNEL=PSDocker-DotnetSDK-Alpine-3.20-arm64 + +RUN apk add --upgrade --no-cache \ + curl \ + git \ + icu-data-full \ + icu-libs \ + tzdata + +COPY --from=installer ["/usr/share/dotnet", "/usr/share/dotnet"] + +# Trigger first run experience by running arbitrary cmd +RUN dotnet help diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/8.0/alpine3.21-aot/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/8.0/alpine3.21-aot/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..5f7812c897 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/8.0/alpine3.21-aot/amd64/Dockerfile.verified.noextension @@ -0,0 +1,8 @@ +# syntax=docker/dockerfile:1 +ARG REPO=mcr.microsoft.com/dotnet/sdk +FROM $REPO:0.0.0-alpine3.XX-amd64 + +RUN apk add --upgrade --no-cache \ + build-base \ + clang \ + zlib-dev diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/8.0/alpine3.21-aot/arm64v8/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/8.0/alpine3.21-aot/arm64v8/Dockerfile.verified.noextension new file mode 100644 index 0000000000..19046afa59 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/8.0/alpine3.21-aot/arm64v8/Dockerfile.verified.noextension @@ -0,0 +1,8 @@ +# syntax=docker/dockerfile:1 +ARG REPO=mcr.microsoft.com/dotnet/sdk +FROM $REPO:0.0.0-alpine3.XX-arm64v8 + +RUN apk add --upgrade --no-cache \ + build-base \ + clang \ + zlib-dev diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/8.0/alpine3.21/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/8.0/alpine3.21/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..9e8e0b9fe9 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/8.0/alpine3.21/amd64/Dockerfile.verified.noextension @@ -0,0 +1,61 @@ +ARG REPO=mcr.microsoft.com/dotnet/aspnet +# Installer image +FROM $REPO:0.0.0-alpine3.XX-amd64 AS installer + +ARG ACCESSTOKEN + +# Install .NET SDK +RUN wget --header="Authorization: Basic `echo $ACCESSTOKEN:$ACCESSTOKEN | base64 -w 0`" -O dotnet.tar.gz "https://builds.dotnet.microsoft.com/dotnet/Sdk/0.0.0/dotnet-sdk-0.0.0-linux-musl-x64.tar.gz" \ + && dotnet_sha512='{sha512_placeholder}' \ + && echo "$dotnet_sha512 dotnet.tar.gz" | sha512sum -c - \ + && mkdir -p /usr/share/dotnet \ + && tar -oxzf dotnet.tar.gz -C /usr/share/dotnet ./packs ./sdk ./sdk-manifests ./templates ./LICENSE.txt ./ThirdPartyNotices.txt \ + && rm dotnet.tar.gz + + +# .NET SDK image +FROM $REPO:0.0.0-alpine3.XX-amd64 + +ENV \ + # Do not generate certificate + DOTNET_GENERATE_ASPNET_CERTIFICATE=false \ + # Do not show first run text + DOTNET_NOLOGO=true \ + # SDK version + DOTNET_SDK_VERSION=0.0.0 \ + # Disable the invariant mode (set in base image) + DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=false \ + # Enable correct mode for dotnet watch (only mode supported in a container) + DOTNET_USE_POLLING_FILE_WATCHER=true \ + # Skip extraction of XML docs - generally not useful within an image/container - helps performance + NUGET_XMLDOC_MODE=skip \ + # PowerShell telemetry for docker image usage + POWERSHELL_DISTRIBUTION_CHANNEL=PSDocker-DotnetSDK-Alpine-3.21 + +RUN apk add --upgrade --no-cache \ + curl \ + git \ + icu-data-full \ + icu-libs \ + tzdata + +COPY --from=installer ["/usr/share/dotnet", "/usr/share/dotnet"] + +# Trigger first run experience by running arbitrary cmd +RUN dotnet help + +# Install PowerShell global tool +RUN powershell_version=0.0.0 \ + && wget --header="Authorization: Basic `echo $ACCESSTOKEN:$ACCESSTOKEN | base64 -w 0`" -O PowerShell.Linux.Alpine.$powershell_version.nupkg "https://powershellinfraartifacts-gkhedzdeaghdezhr.z01.azurefd.net/tool/$powershell_version/PowerShell.Linux.Alpine.$powershell_version.nupkg" \ + && powershell_sha512='{sha512_placeholder}' \ + && echo "$powershell_sha512 PowerShell.Linux.Alpine.$powershell_version.nupkg" | sha512sum -c - \ + && mkdir -p /usr/share/powershell \ + && dotnet tool install --add-source / --tool-path /usr/share/powershell --version $powershell_version PowerShell.Linux.Alpine \ + && dotnet nuget locals all --clear \ + && rm PowerShell.Linux.Alpine.$powershell_version.nupkg \ + && ln -s /usr/share/powershell/pwsh /usr/bin/pwsh \ + && chmod 755 /usr/share/powershell/pwsh \ + # To reduce image size, remove the copy nupkg that nuget keeps. + && find /usr/share/powershell -print | grep -i '.*[.]nupkg$' | xargs rm \ + # Add ncurses-terminfo-base to resolve psreadline dependency + && apk add --no-cache ncurses-terminfo-base diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/8.0/alpine3.21/arm32v7/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/8.0/alpine3.21/arm32v7/Dockerfile.verified.noextension new file mode 100644 index 0000000000..dbacf0147f --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/8.0/alpine3.21/arm32v7/Dockerfile.verified.noextension @@ -0,0 +1,45 @@ +ARG REPO=mcr.microsoft.com/dotnet/aspnet +# Installer image +FROM $REPO:0.0.0-alpine3.XX-arm32v7 AS installer + +ARG ACCESSTOKEN + +# Install .NET SDK +RUN wget --header="Authorization: Basic `echo $ACCESSTOKEN:$ACCESSTOKEN | base64 -w 0`" -O dotnet.tar.gz "https://builds.dotnet.microsoft.com/dotnet/Sdk/0.0.0/dotnet-sdk-0.0.0-linux-musl-arm.tar.gz" \ + && dotnet_sha512='{sha512_placeholder}' \ + && echo "$dotnet_sha512 dotnet.tar.gz" | sha512sum -c - \ + && mkdir -p /usr/share/dotnet \ + && tar -oxzf dotnet.tar.gz -C /usr/share/dotnet ./packs ./sdk ./sdk-manifests ./templates ./LICENSE.txt ./ThirdPartyNotices.txt \ + && rm dotnet.tar.gz + + +# .NET SDK image +FROM $REPO:0.0.0-alpine3.XX-arm32v7 + +ENV \ + # Do not generate certificate + DOTNET_GENERATE_ASPNET_CERTIFICATE=false \ + # Do not show first run text + DOTNET_NOLOGO=true \ + # SDK version + DOTNET_SDK_VERSION=0.0.0 \ + # Disable the invariant mode (set in base image) + DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=false \ + # Enable correct mode for dotnet watch (only mode supported in a container) + DOTNET_USE_POLLING_FILE_WATCHER=true \ + # Skip extraction of XML docs - generally not useful within an image/container - helps performance + NUGET_XMLDOC_MODE=skip \ + # PowerShell telemetry for docker image usage + POWERSHELL_DISTRIBUTION_CHANNEL=PSDocker-DotnetSDK-Alpine-3.21-arm32 + +RUN apk add --upgrade --no-cache \ + curl \ + git \ + icu-data-full \ + icu-libs \ + tzdata + +COPY --from=installer ["/usr/share/dotnet", "/usr/share/dotnet"] + +# Trigger first run experience by running arbitrary cmd +RUN dotnet help diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/8.0/alpine3.21/arm64v8/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/8.0/alpine3.21/arm64v8/Dockerfile.verified.noextension new file mode 100644 index 0000000000..ac1397d266 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/8.0/alpine3.21/arm64v8/Dockerfile.verified.noextension @@ -0,0 +1,45 @@ +ARG REPO=mcr.microsoft.com/dotnet/aspnet +# Installer image +FROM $REPO:0.0.0-alpine3.XX-arm64v8 AS installer + +ARG ACCESSTOKEN + +# Install .NET SDK +RUN wget --header="Authorization: Basic `echo $ACCESSTOKEN:$ACCESSTOKEN | base64 -w 0`" -O dotnet.tar.gz "https://builds.dotnet.microsoft.com/dotnet/Sdk/0.0.0/dotnet-sdk-0.0.0-linux-musl-arm64.tar.gz" \ + && dotnet_sha512='{sha512_placeholder}' \ + && echo "$dotnet_sha512 dotnet.tar.gz" | sha512sum -c - \ + && mkdir -p /usr/share/dotnet \ + && tar -oxzf dotnet.tar.gz -C /usr/share/dotnet ./packs ./sdk ./sdk-manifests ./templates ./LICENSE.txt ./ThirdPartyNotices.txt \ + && rm dotnet.tar.gz + + +# .NET SDK image +FROM $REPO:0.0.0-alpine3.XX-arm64v8 + +ENV \ + # Do not generate certificate + DOTNET_GENERATE_ASPNET_CERTIFICATE=false \ + # Do not show first run text + DOTNET_NOLOGO=true \ + # SDK version + DOTNET_SDK_VERSION=0.0.0 \ + # Disable the invariant mode (set in base image) + DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=false \ + # Enable correct mode for dotnet watch (only mode supported in a container) + DOTNET_USE_POLLING_FILE_WATCHER=true \ + # Skip extraction of XML docs - generally not useful within an image/container - helps performance + NUGET_XMLDOC_MODE=skip \ + # PowerShell telemetry for docker image usage + POWERSHELL_DISTRIBUTION_CHANNEL=PSDocker-DotnetSDK-Alpine-3.21-arm64 + +RUN apk add --upgrade --no-cache \ + curl \ + git \ + icu-data-full \ + icu-libs \ + tzdata + +COPY --from=installer ["/usr/share/dotnet", "/usr/share/dotnet"] + +# Trigger first run experience by running arbitrary cmd +RUN dotnet help diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/8.0/azurelinux3.0-aot/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/8.0/azurelinux3.0-aot/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..ab3e377c59 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/8.0/azurelinux3.0-aot/amd64/Dockerfile.verified.noextension @@ -0,0 +1,9 @@ +# syntax=docker/dockerfile:1 +ARG REPO=mcr.microsoft.com/dotnet/sdk +FROM $REPO:0.0.0-azurelinux3.0-amd64 + +RUN tdnf install -y \ + build-essential \ + clang \ + zlib-devel \ + && tdnf clean all diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/8.0/azurelinux3.0-aot/arm64v8/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/8.0/azurelinux3.0-aot/arm64v8/Dockerfile.verified.noextension new file mode 100644 index 0000000000..d54911d329 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/8.0/azurelinux3.0-aot/arm64v8/Dockerfile.verified.noextension @@ -0,0 +1,9 @@ +# syntax=docker/dockerfile:1 +ARG REPO=mcr.microsoft.com/dotnet/sdk +FROM $REPO:0.0.0-azurelinux3.0-arm64v8 + +RUN tdnf install -y \ + build-essential \ + clang \ + zlib-devel \ + && tdnf clean all diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/8.0/azurelinux3.0/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/8.0/azurelinux3.0/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..db8111adf2 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/8.0/azurelinux3.0/amd64/Dockerfile.verified.noextension @@ -0,0 +1,59 @@ +ARG REPO=mcr.microsoft.com/dotnet/aspnet +# Installer image +FROM $REPO:0.0.0-azurelinux3.0-amd64 AS installer + +ARG ACCESSTOKEN + +RUN tdnf install -y \ + tar \ + && tdnf clean all + +# Install .NET SDK +RUN curl -u :$ACCESSTOKEN --basic -fSL --output dotnet.tar.gz "https://builds.dotnet.microsoft.com/dotnet/Sdk/0.0.0/dotnet-sdk-0.0.0-linux-x64.tar.gz" \ + && dotnet_sha512='{sha512_placeholder}' \ + && echo "$dotnet_sha512 dotnet.tar.gz" | sha512sum -c - \ + && tar -oxzf dotnet.tar.gz -C /usr/share/dotnet ./packs ./sdk ./sdk-manifests ./templates ./LICENSE.txt ./ThirdPartyNotices.txt \ + && rm dotnet.tar.gz + + +# .NET SDK image +FROM $REPO:0.0.0-azurelinux3.0-amd64 + +ENV \ + # Do not generate certificate + DOTNET_GENERATE_ASPNET_CERTIFICATE=false \ + # Do not show first run text + DOTNET_NOLOGO=true \ + # SDK version + DOTNET_SDK_VERSION=0.0.0 \ + # Enable correct mode for dotnet watch (only mode supported in a container) + DOTNET_USE_POLLING_FILE_WATCHER=true \ + # Skip extraction of XML docs - generally not useful within an image/container - helps performance + NUGET_XMLDOC_MODE=skip \ + # PowerShell telemetry for docker image usage + POWERSHELL_DISTRIBUTION_CHANNEL=PSDocker-DotnetSDK-Azure-Linux-3.0 + +RUN tdnf install -y \ + git \ + libgcc-atomic \ + tar \ + && tdnf clean all + +COPY --from=installer ["/usr/share/dotnet", "/usr/share/dotnet"] + +# Trigger first run experience by running arbitrary cmd +RUN dotnet help + +# Install PowerShell global tool +RUN powershell_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output PowerShell.Linux.x64.$powershell_version.nupkg "https://powershellinfraartifacts-gkhedzdeaghdezhr.z01.azurefd.net/tool/$powershell_version/PowerShell.Linux.x64.$powershell_version.nupkg" \ + && powershell_sha512='{sha512_placeholder}' \ + && echo "$powershell_sha512 PowerShell.Linux.x64.$powershell_version.nupkg" | sha512sum -c - \ + && mkdir -p /usr/share/powershell \ + && dotnet tool install --add-source / --tool-path /usr/share/powershell --version $powershell_version PowerShell.Linux.x64 \ + && dotnet nuget locals all --clear \ + && rm PowerShell.Linux.x64.$powershell_version.nupkg \ + && ln -s /usr/share/powershell/pwsh /usr/bin/pwsh \ + && chmod 755 /usr/share/powershell/pwsh \ + # To reduce image size, remove the copy nupkg that nuget keeps. + && find /usr/share/powershell -print | grep -i '.*[.]nupkg$' | xargs rm diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/8.0/azurelinux3.0/arm64v8/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/8.0/azurelinux3.0/arm64v8/Dockerfile.verified.noextension new file mode 100644 index 0000000000..612c02bb43 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/8.0/azurelinux3.0/arm64v8/Dockerfile.verified.noextension @@ -0,0 +1,59 @@ +ARG REPO=mcr.microsoft.com/dotnet/aspnet +# Installer image +FROM $REPO:0.0.0-azurelinux3.0-arm64v8 AS installer + +ARG ACCESSTOKEN + +RUN tdnf install -y \ + tar \ + && tdnf clean all + +# Install .NET SDK +RUN curl -u :$ACCESSTOKEN --basic -fSL --output dotnet.tar.gz "https://builds.dotnet.microsoft.com/dotnet/Sdk/0.0.0/dotnet-sdk-0.0.0-linux-arm64.tar.gz" \ + && dotnet_sha512='{sha512_placeholder}' \ + && echo "$dotnet_sha512 dotnet.tar.gz" | sha512sum -c - \ + && tar -oxzf dotnet.tar.gz -C /usr/share/dotnet ./packs ./sdk ./sdk-manifests ./templates ./LICENSE.txt ./ThirdPartyNotices.txt \ + && rm dotnet.tar.gz + + +# .NET SDK image +FROM $REPO:0.0.0-azurelinux3.0-arm64v8 + +ENV \ + # Do not generate certificate + DOTNET_GENERATE_ASPNET_CERTIFICATE=false \ + # Do not show first run text + DOTNET_NOLOGO=true \ + # SDK version + DOTNET_SDK_VERSION=0.0.0 \ + # Enable correct mode for dotnet watch (only mode supported in a container) + DOTNET_USE_POLLING_FILE_WATCHER=true \ + # Skip extraction of XML docs - generally not useful within an image/container - helps performance + NUGET_XMLDOC_MODE=skip \ + # PowerShell telemetry for docker image usage + POWERSHELL_DISTRIBUTION_CHANNEL=PSDocker-DotnetSDK-Azure-Linux-3.0-arm64 + +RUN tdnf install -y \ + git \ + libgcc-atomic \ + tar \ + && tdnf clean all + +COPY --from=installer ["/usr/share/dotnet", "/usr/share/dotnet"] + +# Trigger first run experience by running arbitrary cmd +RUN dotnet help + +# Install PowerShell global tool +RUN powershell_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output PowerShell.Linux.arm64.$powershell_version.nupkg "https://powershellinfraartifacts-gkhedzdeaghdezhr.z01.azurefd.net/tool/$powershell_version/PowerShell.Linux.arm64.$powershell_version.nupkg" \ + && powershell_sha512='{sha512_placeholder}' \ + && echo "$powershell_sha512 PowerShell.Linux.arm64.$powershell_version.nupkg" | sha512sum -c - \ + && mkdir -p /usr/share/powershell \ + && dotnet tool install --add-source / --tool-path /usr/share/powershell --version $powershell_version PowerShell.Linux.arm64 \ + && dotnet nuget locals all --clear \ + && rm PowerShell.Linux.arm64.$powershell_version.nupkg \ + && ln -s /usr/share/powershell/pwsh /usr/bin/pwsh \ + && chmod 755 /usr/share/powershell/pwsh \ + # To reduce image size, remove the copy nupkg that nuget keeps. + && find /usr/share/powershell -print | grep -i '.*[.]nupkg$' | xargs rm diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/8.0/bookworm-slim/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/8.0/bookworm-slim/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..919ff22768 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/8.0/bookworm-slim/amd64/Dockerfile.verified.noextension @@ -0,0 +1,58 @@ +ARG REPO=mcr.microsoft.com/dotnet/aspnet +# Installer image +FROM amd64/buildpack-deps:bookworm-curl AS installer + +ARG ACCESSTOKEN + +# Install .NET SDK +RUN curl -u :$ACCESSTOKEN --basic -fSL --output dotnet.tar.gz "https://builds.dotnet.microsoft.com/dotnet/Sdk/0.0.0/dotnet-sdk-0.0.0-linux-x64.tar.gz" \ + && dotnet_sha512='{sha512_placeholder}' \ + && echo "$dotnet_sha512 dotnet.tar.gz" | sha512sum -c - \ + && mkdir -p /usr/share/dotnet \ + && tar -oxzf dotnet.tar.gz -C /usr/share/dotnet ./packs ./sdk ./sdk-manifests ./templates ./LICENSE.txt ./ThirdPartyNotices.txt \ + && rm dotnet.tar.gz + + +# .NET SDK image +FROM $REPO:0.0.0-bookworm-slim-amd64 + +ENV \ + # Do not generate certificate + DOTNET_GENERATE_ASPNET_CERTIFICATE=false \ + # Do not show first run text + DOTNET_NOLOGO=true \ + # SDK version + DOTNET_SDK_VERSION=0.0.0 \ + # Enable correct mode for dotnet watch (only mode supported in a container) + DOTNET_USE_POLLING_FILE_WATCHER=true \ + # Skip extraction of XML docs - generally not useful within an image/container - helps performance + NUGET_XMLDOC_MODE=skip \ + # PowerShell telemetry for docker image usage + POWERSHELL_DISTRIBUTION_CHANNEL=PSDocker-DotnetSDK-Debian-12 + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + curl \ + git \ + libatomic1 \ + wget \ + && rm -rf /var/lib/apt/lists/* + +COPY --from=installer ["/usr/share/dotnet", "/usr/share/dotnet"] + +# Trigger first run experience by running arbitrary cmd +RUN dotnet help + +# Install PowerShell global tool +RUN powershell_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output PowerShell.Linux.x64.$powershell_version.nupkg "https://powershellinfraartifacts-gkhedzdeaghdezhr.z01.azurefd.net/tool/$powershell_version/PowerShell.Linux.x64.$powershell_version.nupkg" \ + && powershell_sha512='{sha512_placeholder}' \ + && echo "$powershell_sha512 PowerShell.Linux.x64.$powershell_version.nupkg" | sha512sum -c - \ + && mkdir -p /usr/share/powershell \ + && dotnet tool install --add-source / --tool-path /usr/share/powershell --version $powershell_version PowerShell.Linux.x64 \ + && dotnet nuget locals all --clear \ + && rm PowerShell.Linux.x64.$powershell_version.nupkg \ + && ln -s /usr/share/powershell/pwsh /usr/bin/pwsh \ + && chmod 755 /usr/share/powershell/pwsh \ + # To reduce image size, remove the copy nupkg that nuget keeps. + && find /usr/share/powershell -print | grep -i '.*[.]nupkg$' | xargs rm diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/8.0/bookworm-slim/arm32v7/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/8.0/bookworm-slim/arm32v7/Dockerfile.verified.noextension new file mode 100644 index 0000000000..688d6f8325 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/8.0/bookworm-slim/arm32v7/Dockerfile.verified.noextension @@ -0,0 +1,58 @@ +ARG REPO=mcr.microsoft.com/dotnet/aspnet +# Installer image +FROM arm32v7/buildpack-deps:bookworm-curl AS installer + +ARG ACCESSTOKEN + +# Install .NET SDK +RUN curl -u :$ACCESSTOKEN --basic -fSL --output dotnet.tar.gz "https://builds.dotnet.microsoft.com/dotnet/Sdk/0.0.0/dotnet-sdk-0.0.0-linux-arm.tar.gz" \ + && dotnet_sha512='{sha512_placeholder}' \ + && echo "$dotnet_sha512 dotnet.tar.gz" | sha512sum -c - \ + && mkdir -p /usr/share/dotnet \ + && tar -oxzf dotnet.tar.gz -C /usr/share/dotnet ./packs ./sdk ./sdk-manifests ./templates ./LICENSE.txt ./ThirdPartyNotices.txt \ + && rm dotnet.tar.gz + + +# .NET SDK image +FROM $REPO:0.0.0-bookworm-slim-arm32v7 + +ENV \ + # Do not generate certificate + DOTNET_GENERATE_ASPNET_CERTIFICATE=false \ + # Do not show first run text + DOTNET_NOLOGO=true \ + # SDK version + DOTNET_SDK_VERSION=0.0.0 \ + # Enable correct mode for dotnet watch (only mode supported in a container) + DOTNET_USE_POLLING_FILE_WATCHER=true \ + # Skip extraction of XML docs - generally not useful within an image/container - helps performance + NUGET_XMLDOC_MODE=skip \ + # PowerShell telemetry for docker image usage + POWERSHELL_DISTRIBUTION_CHANNEL=PSDocker-DotnetSDK-Debian-12-arm32 + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + curl \ + git \ + libatomic1 \ + wget \ + && rm -rf /var/lib/apt/lists/* + +COPY --from=installer ["/usr/share/dotnet", "/usr/share/dotnet"] + +# Trigger first run experience by running arbitrary cmd +RUN dotnet help + +# Install PowerShell global tool +RUN powershell_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output PowerShell.Linux.arm32.$powershell_version.nupkg "https://powershellinfraartifacts-gkhedzdeaghdezhr.z01.azurefd.net/tool/$powershell_version/PowerShell.Linux.arm32.$powershell_version.nupkg" \ + && powershell_sha512='{sha512_placeholder}' \ + && echo "$powershell_sha512 PowerShell.Linux.arm32.$powershell_version.nupkg" | sha512sum -c - \ + && mkdir -p /usr/share/powershell \ + && dotnet tool install --add-source / --tool-path /usr/share/powershell --version $powershell_version PowerShell.Linux.arm32 \ + && dotnet nuget locals all --clear \ + && rm PowerShell.Linux.arm32.$powershell_version.nupkg \ + && ln -s /usr/share/powershell/pwsh /usr/bin/pwsh \ + && chmod 755 /usr/share/powershell/pwsh \ + # To reduce image size, remove the copy nupkg that nuget keeps. + && find /usr/share/powershell -print | grep -i '.*[.]nupkg$' | xargs rm diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/8.0/bookworm-slim/arm64v8/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/8.0/bookworm-slim/arm64v8/Dockerfile.verified.noextension new file mode 100644 index 0000000000..a6537d2c46 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/8.0/bookworm-slim/arm64v8/Dockerfile.verified.noextension @@ -0,0 +1,58 @@ +ARG REPO=mcr.microsoft.com/dotnet/aspnet +# Installer image +FROM arm64v8/buildpack-deps:bookworm-curl AS installer + +ARG ACCESSTOKEN + +# Install .NET SDK +RUN curl -u :$ACCESSTOKEN --basic -fSL --output dotnet.tar.gz "https://builds.dotnet.microsoft.com/dotnet/Sdk/0.0.0/dotnet-sdk-0.0.0-linux-arm64.tar.gz" \ + && dotnet_sha512='{sha512_placeholder}' \ + && echo "$dotnet_sha512 dotnet.tar.gz" | sha512sum -c - \ + && mkdir -p /usr/share/dotnet \ + && tar -oxzf dotnet.tar.gz -C /usr/share/dotnet ./packs ./sdk ./sdk-manifests ./templates ./LICENSE.txt ./ThirdPartyNotices.txt \ + && rm dotnet.tar.gz + + +# .NET SDK image +FROM $REPO:0.0.0-bookworm-slim-arm64v8 + +ENV \ + # Do not generate certificate + DOTNET_GENERATE_ASPNET_CERTIFICATE=false \ + # Do not show first run text + DOTNET_NOLOGO=true \ + # SDK version + DOTNET_SDK_VERSION=0.0.0 \ + # Enable correct mode for dotnet watch (only mode supported in a container) + DOTNET_USE_POLLING_FILE_WATCHER=true \ + # Skip extraction of XML docs - generally not useful within an image/container - helps performance + NUGET_XMLDOC_MODE=skip \ + # PowerShell telemetry for docker image usage + POWERSHELL_DISTRIBUTION_CHANNEL=PSDocker-DotnetSDK-Debian-12-arm64 + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + curl \ + git \ + libatomic1 \ + wget \ + && rm -rf /var/lib/apt/lists/* + +COPY --from=installer ["/usr/share/dotnet", "/usr/share/dotnet"] + +# Trigger first run experience by running arbitrary cmd +RUN dotnet help + +# Install PowerShell global tool +RUN powershell_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output PowerShell.Linux.arm64.$powershell_version.nupkg "https://powershellinfraartifacts-gkhedzdeaghdezhr.z01.azurefd.net/tool/$powershell_version/PowerShell.Linux.arm64.$powershell_version.nupkg" \ + && powershell_sha512='{sha512_placeholder}' \ + && echo "$powershell_sha512 PowerShell.Linux.arm64.$powershell_version.nupkg" | sha512sum -c - \ + && mkdir -p /usr/share/powershell \ + && dotnet tool install --add-source / --tool-path /usr/share/powershell --version $powershell_version PowerShell.Linux.arm64 \ + && dotnet nuget locals all --clear \ + && rm PowerShell.Linux.arm64.$powershell_version.nupkg \ + && ln -s /usr/share/powershell/pwsh /usr/bin/pwsh \ + && chmod 755 /usr/share/powershell/pwsh \ + # To reduce image size, remove the copy nupkg that nuget keeps. + && find /usr/share/powershell -print | grep -i '.*[.]nupkg$' | xargs rm diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/8.0/cbl-mariner2.0-aot/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/8.0/cbl-mariner2.0-aot/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..9d52c73848 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/8.0/cbl-mariner2.0-aot/amd64/Dockerfile.verified.noextension @@ -0,0 +1,9 @@ +# syntax=docker/dockerfile:1 +ARG REPO=mcr.microsoft.com/dotnet/sdk +FROM $REPO:0.0.0-cbl-mariner2.0-amd64 + +RUN tdnf install -y \ + build-essential \ + clang \ + zlib-devel \ + && tdnf clean all diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/8.0/cbl-mariner2.0-aot/arm64v8/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/8.0/cbl-mariner2.0-aot/arm64v8/Dockerfile.verified.noextension new file mode 100644 index 0000000000..5380501a6b --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/8.0/cbl-mariner2.0-aot/arm64v8/Dockerfile.verified.noextension @@ -0,0 +1,9 @@ +# syntax=docker/dockerfile:1 +ARG REPO=mcr.microsoft.com/dotnet/sdk +FROM $REPO:0.0.0-cbl-mariner2.0-arm64v8 + +RUN tdnf install -y \ + build-essential \ + clang \ + zlib-devel \ + && tdnf clean all diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/8.0/cbl-mariner2.0/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/8.0/cbl-mariner2.0/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..045203e451 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/8.0/cbl-mariner2.0/amd64/Dockerfile.verified.noextension @@ -0,0 +1,59 @@ +ARG REPO=mcr.microsoft.com/dotnet/aspnet +# Installer image +FROM $REPO:0.0.0-cbl-mariner2.0-amd64 AS installer + +ARG ACCESSTOKEN + +RUN tdnf install -y \ + tar \ + && tdnf clean all + +# Install .NET SDK +RUN curl -u :$ACCESSTOKEN --basic -fSL --output dotnet.tar.gz "https://builds.dotnet.microsoft.com/dotnet/Sdk/0.0.0/dotnet-sdk-0.0.0-linux-x64.tar.gz" \ + && dotnet_sha512='{sha512_placeholder}' \ + && echo "$dotnet_sha512 dotnet.tar.gz" | sha512sum -c - \ + && tar -oxzf dotnet.tar.gz -C /usr/share/dotnet ./packs ./sdk ./sdk-manifests ./templates ./LICENSE.txt ./ThirdPartyNotices.txt \ + && rm dotnet.tar.gz + + +# .NET SDK image +FROM $REPO:0.0.0-cbl-mariner2.0-amd64 + +ENV \ + # Do not generate certificate + DOTNET_GENERATE_ASPNET_CERTIFICATE=false \ + # Do not show first run text + DOTNET_NOLOGO=true \ + # SDK version + DOTNET_SDK_VERSION=0.0.0 \ + # Enable correct mode for dotnet watch (only mode supported in a container) + DOTNET_USE_POLLING_FILE_WATCHER=true \ + # Skip extraction of XML docs - generally not useful within an image/container - helps performance + NUGET_XMLDOC_MODE=skip \ + # PowerShell telemetry for docker image usage + POWERSHELL_DISTRIBUTION_CHANNEL=PSDocker-DotnetSDK-CBL-Mariner-2.0 + +RUN tdnf install -y \ + git \ + libatomic_ops \ + tar \ + && tdnf clean all + +COPY --from=installer ["/usr/share/dotnet", "/usr/share/dotnet"] + +# Trigger first run experience by running arbitrary cmd +RUN dotnet help + +# Install PowerShell global tool +RUN powershell_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output PowerShell.Linux.x64.$powershell_version.nupkg "https://powershellinfraartifacts-gkhedzdeaghdezhr.z01.azurefd.net/tool/$powershell_version/PowerShell.Linux.x64.$powershell_version.nupkg" \ + && powershell_sha512='{sha512_placeholder}' \ + && echo "$powershell_sha512 PowerShell.Linux.x64.$powershell_version.nupkg" | sha512sum -c - \ + && mkdir -p /usr/share/powershell \ + && dotnet tool install --add-source / --tool-path /usr/share/powershell --version $powershell_version PowerShell.Linux.x64 \ + && dotnet nuget locals all --clear \ + && rm PowerShell.Linux.x64.$powershell_version.nupkg \ + && ln -s /usr/share/powershell/pwsh /usr/bin/pwsh \ + && chmod 755 /usr/share/powershell/pwsh \ + # To reduce image size, remove the copy nupkg that nuget keeps. + && find /usr/share/powershell -print | grep -i '.*[.]nupkg$' | xargs rm diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/8.0/cbl-mariner2.0/arm64v8/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/8.0/cbl-mariner2.0/arm64v8/Dockerfile.verified.noextension new file mode 100644 index 0000000000..b25dd40858 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/8.0/cbl-mariner2.0/arm64v8/Dockerfile.verified.noextension @@ -0,0 +1,59 @@ +ARG REPO=mcr.microsoft.com/dotnet/aspnet +# Installer image +FROM $REPO:0.0.0-cbl-mariner2.0-arm64v8 AS installer + +ARG ACCESSTOKEN + +RUN tdnf install -y \ + tar \ + && tdnf clean all + +# Install .NET SDK +RUN curl -u :$ACCESSTOKEN --basic -fSL --output dotnet.tar.gz "https://builds.dotnet.microsoft.com/dotnet/Sdk/0.0.0/dotnet-sdk-0.0.0-linux-arm64.tar.gz" \ + && dotnet_sha512='{sha512_placeholder}' \ + && echo "$dotnet_sha512 dotnet.tar.gz" | sha512sum -c - \ + && tar -oxzf dotnet.tar.gz -C /usr/share/dotnet ./packs ./sdk ./sdk-manifests ./templates ./LICENSE.txt ./ThirdPartyNotices.txt \ + && rm dotnet.tar.gz + + +# .NET SDK image +FROM $REPO:0.0.0-cbl-mariner2.0-arm64v8 + +ENV \ + # Do not generate certificate + DOTNET_GENERATE_ASPNET_CERTIFICATE=false \ + # Do not show first run text + DOTNET_NOLOGO=true \ + # SDK version + DOTNET_SDK_VERSION=0.0.0 \ + # Enable correct mode for dotnet watch (only mode supported in a container) + DOTNET_USE_POLLING_FILE_WATCHER=true \ + # Skip extraction of XML docs - generally not useful within an image/container - helps performance + NUGET_XMLDOC_MODE=skip \ + # PowerShell telemetry for docker image usage + POWERSHELL_DISTRIBUTION_CHANNEL=PSDocker-DotnetSDK-CBL-Mariner-2.0-arm64 + +RUN tdnf install -y \ + git \ + libatomic_ops \ + tar \ + && tdnf clean all + +COPY --from=installer ["/usr/share/dotnet", "/usr/share/dotnet"] + +# Trigger first run experience by running arbitrary cmd +RUN dotnet help + +# Install PowerShell global tool +RUN powershell_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output PowerShell.Linux.arm64.$powershell_version.nupkg "https://powershellinfraartifacts-gkhedzdeaghdezhr.z01.azurefd.net/tool/$powershell_version/PowerShell.Linux.arm64.$powershell_version.nupkg" \ + && powershell_sha512='{sha512_placeholder}' \ + && echo "$powershell_sha512 PowerShell.Linux.arm64.$powershell_version.nupkg" | sha512sum -c - \ + && mkdir -p /usr/share/powershell \ + && dotnet tool install --add-source / --tool-path /usr/share/powershell --version $powershell_version PowerShell.Linux.arm64 \ + && dotnet nuget locals all --clear \ + && rm PowerShell.Linux.arm64.$powershell_version.nupkg \ + && ln -s /usr/share/powershell/pwsh /usr/bin/pwsh \ + && chmod 755 /usr/share/powershell/pwsh \ + # To reduce image size, remove the copy nupkg that nuget keeps. + && find /usr/share/powershell -print | grep -i '.*[.]nupkg$' | xargs rm diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/8.0/jammy-aot/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/8.0/jammy-aot/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..5cd4bc678a --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/8.0/jammy-aot/amd64/Dockerfile.verified.noextension @@ -0,0 +1,16 @@ +# syntax=docker/dockerfile:1 +ARG REPO=mcr.microsoft.com/dotnet/sdk +FROM $REPO:0.0.0-jammy-amd64 + +RUN echo "deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports/ jammy main restricted" > /etc/apt/sources.list.d/arm64.list \ + && echo "deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports/ jammy-updates main restricted" >> /etc/apt/sources.list.d/arm64.list \ + && sed -i -e 's/deb http/deb [arch=amd64] http/g' /etc/apt/sources.list \ + && dpkg --add-architecture arm64 \ + && apt-get update \ + && apt-get install -y --no-install-recommends \ + clang \ + gcc-aarch64-linux-gnu \ + llvm \ + zlib1g-dev \ + zlib1g-dev:arm64 \ + && rm -rf /var/lib/apt/lists/* diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/8.0/jammy-aot/arm64v8/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/8.0/jammy-aot/arm64v8/Dockerfile.verified.noextension new file mode 100644 index 0000000000..0d94dde796 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/8.0/jammy-aot/arm64v8/Dockerfile.verified.noextension @@ -0,0 +1,16 @@ +# syntax=docker/dockerfile:1 +ARG REPO=mcr.microsoft.com/dotnet/sdk +FROM $REPO:0.0.0-jammy-arm64v8 + +RUN echo "deb [arch=amd64] http://archive.ubuntu.com/ubuntu/ jammy main restricted" > /etc/apt/sources.list.d/amd64.list \ + && echo "deb [arch=amd64] http://archive.ubuntu.com/ubuntu/ jammy-updates main restricted" >> /etc/apt/sources.list.d/amd64.list \ + && sed -i -e 's/deb http/deb [arch=arm64] http/g' /etc/apt/sources.list \ + && dpkg --add-architecture amd64 \ + && apt-get update \ + && apt-get install -y --no-install-recommends \ + clang \ + gcc-x86-64-linux-gnu \ + llvm \ + zlib1g-dev \ + zlib1g-dev:amd64 \ + && rm -rf /var/lib/apt/lists/* diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/8.0/jammy/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/8.0/jammy/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..fdbfa5d6e5 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/8.0/jammy/amd64/Dockerfile.verified.noextension @@ -0,0 +1,58 @@ +ARG REPO=mcr.microsoft.com/dotnet/aspnet +# Installer image +FROM amd64/buildpack-deps:jammy-curl AS installer + +ARG ACCESSTOKEN + +# Install .NET SDK +RUN curl -u :$ACCESSTOKEN --basic -fSL --output dotnet.tar.gz "https://builds.dotnet.microsoft.com/dotnet/Sdk/0.0.0/dotnet-sdk-0.0.0-linux-x64.tar.gz" \ + && dotnet_sha512='{sha512_placeholder}' \ + && echo "$dotnet_sha512 dotnet.tar.gz" | sha512sum -c - \ + && mkdir -p /usr/share/dotnet \ + && tar -oxzf dotnet.tar.gz -C /usr/share/dotnet ./packs ./sdk ./sdk-manifests ./templates ./LICENSE.txt ./ThirdPartyNotices.txt \ + && rm dotnet.tar.gz + + +# .NET SDK image +FROM $REPO:0.0.0-jammy-amd64 + +ENV \ + # Do not generate certificate + DOTNET_GENERATE_ASPNET_CERTIFICATE=false \ + # Do not show first run text + DOTNET_NOLOGO=true \ + # SDK version + DOTNET_SDK_VERSION=0.0.0 \ + # Enable correct mode for dotnet watch (only mode supported in a container) + DOTNET_USE_POLLING_FILE_WATCHER=true \ + # Skip extraction of XML docs - generally not useful within an image/container - helps performance + NUGET_XMLDOC_MODE=skip \ + # PowerShell telemetry for docker image usage + POWERSHELL_DISTRIBUTION_CHANNEL=PSDocker-DotnetSDK-Ubuntu-22.04 + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + curl \ + git \ + libatomic1 \ + wget \ + && rm -rf /var/lib/apt/lists/* + +COPY --from=installer ["/usr/share/dotnet", "/usr/share/dotnet"] + +# Trigger first run experience by running arbitrary cmd +RUN dotnet help + +# Install PowerShell global tool +RUN powershell_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output PowerShell.Linux.x64.$powershell_version.nupkg "https://powershellinfraartifacts-gkhedzdeaghdezhr.z01.azurefd.net/tool/$powershell_version/PowerShell.Linux.x64.$powershell_version.nupkg" \ + && powershell_sha512='{sha512_placeholder}' \ + && echo "$powershell_sha512 PowerShell.Linux.x64.$powershell_version.nupkg" | sha512sum -c - \ + && mkdir -p /usr/share/powershell \ + && dotnet tool install --add-source / --tool-path /usr/share/powershell --version $powershell_version PowerShell.Linux.x64 \ + && dotnet nuget locals all --clear \ + && rm PowerShell.Linux.x64.$powershell_version.nupkg \ + && ln -s /usr/share/powershell/pwsh /usr/bin/pwsh \ + && chmod 755 /usr/share/powershell/pwsh \ + # To reduce image size, remove the copy nupkg that nuget keeps. + && find /usr/share/powershell -print | grep -i '.*[.]nupkg$' | xargs rm diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/8.0/jammy/arm32v7/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/8.0/jammy/arm32v7/Dockerfile.verified.noextension new file mode 100644 index 0000000000..ab4d1d50c5 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/8.0/jammy/arm32v7/Dockerfile.verified.noextension @@ -0,0 +1,58 @@ +ARG REPO=mcr.microsoft.com/dotnet/aspnet +# Installer image +FROM arm32v7/buildpack-deps:jammy-curl AS installer + +ARG ACCESSTOKEN + +# Install .NET SDK +RUN curl -u :$ACCESSTOKEN --basic -fSL --output dotnet.tar.gz "https://builds.dotnet.microsoft.com/dotnet/Sdk/0.0.0/dotnet-sdk-0.0.0-linux-arm.tar.gz" \ + && dotnet_sha512='{sha512_placeholder}' \ + && echo "$dotnet_sha512 dotnet.tar.gz" | sha512sum -c - \ + && mkdir -p /usr/share/dotnet \ + && tar -oxzf dotnet.tar.gz -C /usr/share/dotnet ./packs ./sdk ./sdk-manifests ./templates ./LICENSE.txt ./ThirdPartyNotices.txt \ + && rm dotnet.tar.gz + + +# .NET SDK image +FROM $REPO:0.0.0-jammy-arm32v7 + +ENV \ + # Do not generate certificate + DOTNET_GENERATE_ASPNET_CERTIFICATE=false \ + # Do not show first run text + DOTNET_NOLOGO=true \ + # SDK version + DOTNET_SDK_VERSION=0.0.0 \ + # Enable correct mode for dotnet watch (only mode supported in a container) + DOTNET_USE_POLLING_FILE_WATCHER=true \ + # Skip extraction of XML docs - generally not useful within an image/container - helps performance + NUGET_XMLDOC_MODE=skip \ + # PowerShell telemetry for docker image usage + POWERSHELL_DISTRIBUTION_CHANNEL=PSDocker-DotnetSDK-Ubuntu-22.04-arm32 + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + curl \ + git \ + libatomic1 \ + wget \ + && rm -rf /var/lib/apt/lists/* + +COPY --from=installer ["/usr/share/dotnet", "/usr/share/dotnet"] + +# Trigger first run experience by running arbitrary cmd +RUN dotnet help + +# Install PowerShell global tool +RUN powershell_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output PowerShell.Linux.arm32.$powershell_version.nupkg "https://powershellinfraartifacts-gkhedzdeaghdezhr.z01.azurefd.net/tool/$powershell_version/PowerShell.Linux.arm32.$powershell_version.nupkg" \ + && powershell_sha512='{sha512_placeholder}' \ + && echo "$powershell_sha512 PowerShell.Linux.arm32.$powershell_version.nupkg" | sha512sum -c - \ + && mkdir -p /usr/share/powershell \ + && dotnet tool install --add-source / --tool-path /usr/share/powershell --version $powershell_version PowerShell.Linux.arm32 \ + && dotnet nuget locals all --clear \ + && rm PowerShell.Linux.arm32.$powershell_version.nupkg \ + && ln -s /usr/share/powershell/pwsh /usr/bin/pwsh \ + && chmod 755 /usr/share/powershell/pwsh \ + # To reduce image size, remove the copy nupkg that nuget keeps. + && find /usr/share/powershell -print | grep -i '.*[.]nupkg$' | xargs rm diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/8.0/jammy/arm64v8/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/8.0/jammy/arm64v8/Dockerfile.verified.noextension new file mode 100644 index 0000000000..7c9f0fc861 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/8.0/jammy/arm64v8/Dockerfile.verified.noextension @@ -0,0 +1,58 @@ +ARG REPO=mcr.microsoft.com/dotnet/aspnet +# Installer image +FROM arm64v8/buildpack-deps:jammy-curl AS installer + +ARG ACCESSTOKEN + +# Install .NET SDK +RUN curl -u :$ACCESSTOKEN --basic -fSL --output dotnet.tar.gz "https://builds.dotnet.microsoft.com/dotnet/Sdk/0.0.0/dotnet-sdk-0.0.0-linux-arm64.tar.gz" \ + && dotnet_sha512='{sha512_placeholder}' \ + && echo "$dotnet_sha512 dotnet.tar.gz" | sha512sum -c - \ + && mkdir -p /usr/share/dotnet \ + && tar -oxzf dotnet.tar.gz -C /usr/share/dotnet ./packs ./sdk ./sdk-manifests ./templates ./LICENSE.txt ./ThirdPartyNotices.txt \ + && rm dotnet.tar.gz + + +# .NET SDK image +FROM $REPO:0.0.0-jammy-arm64v8 + +ENV \ + # Do not generate certificate + DOTNET_GENERATE_ASPNET_CERTIFICATE=false \ + # Do not show first run text + DOTNET_NOLOGO=true \ + # SDK version + DOTNET_SDK_VERSION=0.0.0 \ + # Enable correct mode for dotnet watch (only mode supported in a container) + DOTNET_USE_POLLING_FILE_WATCHER=true \ + # Skip extraction of XML docs - generally not useful within an image/container - helps performance + NUGET_XMLDOC_MODE=skip \ + # PowerShell telemetry for docker image usage + POWERSHELL_DISTRIBUTION_CHANNEL=PSDocker-DotnetSDK-Ubuntu-22.04-arm64 + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + curl \ + git \ + libatomic1 \ + wget \ + && rm -rf /var/lib/apt/lists/* + +COPY --from=installer ["/usr/share/dotnet", "/usr/share/dotnet"] + +# Trigger first run experience by running arbitrary cmd +RUN dotnet help + +# Install PowerShell global tool +RUN powershell_version=0.0.0 \ + && curl -u :$ACCESSTOKEN --basic -fSL --output PowerShell.Linux.arm64.$powershell_version.nupkg "https://powershellinfraartifacts-gkhedzdeaghdezhr.z01.azurefd.net/tool/$powershell_version/PowerShell.Linux.arm64.$powershell_version.nupkg" \ + && powershell_sha512='{sha512_placeholder}' \ + && echo "$powershell_sha512 PowerShell.Linux.arm64.$powershell_version.nupkg" | sha512sum -c - \ + && mkdir -p /usr/share/powershell \ + && dotnet tool install --add-source / --tool-path /usr/share/powershell --version $powershell_version PowerShell.Linux.arm64 \ + && dotnet nuget locals all --clear \ + && rm PowerShell.Linux.arm64.$powershell_version.nupkg \ + && ln -s /usr/share/powershell/pwsh /usr/bin/pwsh \ + && chmod 755 /usr/share/powershell/pwsh \ + # To reduce image size, remove the copy nupkg that nuget keeps. + && find /usr/share/powershell -print | grep -i '.*[.]nupkg$' | xargs rm diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/8.0/nanoserver-1809/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/8.0/nanoserver-1809/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..965f4177a2 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/8.0/nanoserver-1809/amd64/Dockerfile.verified.noextension @@ -0,0 +1,100 @@ +# escape=` + +ARG REPO=mcr.microsoft.com/dotnet/aspnet + +# Installer image +FROM mcr.microsoft.com/windows/servercore:1809-amd64 AS installer + +ARG ACCESSTOKEN + +# Download MinGit +RUN powershell -Command " ` + $ErrorActionPreference = 'Stop'; ` + $ProgressPreference = 'SilentlyContinue'; ` + ` + ` + $Base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(\":$($Env:ACCESSTOKEN)\")); ` + $Headers = @{Authorization = \"Basic $Base64AuthInfo\"}; ` + Invoke-WebRequest -OutFile mingit.zip \"https://github.com/git-for-windows/git/releases/download/v0.0.0.windows.0/MinGit-0.0.0-64-bit.zip\" -Headers $Headers; ` + ` + $mingit_sha256 = '{sha256_placeholder}'; ` + if ((Get-FileHash mingit.zip -Algorithm sha256).Hash -ne $mingit_sha256) { ` + Write-Host 'CHECKSUM VERIFICATION FAILED!'; ` + exit 1; ` + }; ` + mkdir MinGit; ` + tar -oxzf mingit.zip -C MinGit; ` + Remove-Item -Force mingit.zip" + +SHELL ["powershell", "-command"] +RUN ` + $ErrorActionPreference = 'Stop'; ` + $ProgressPreference = 'SilentlyContinue'; ` + ` + # Retrieve .NET SDK + $sdk_version = '0.0.0'; ` + ` + $Base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(\":$($Env:ACCESSTOKEN)\")); ` + $Headers = @{Authorization = \"Basic $Base64AuthInfo\"}; ` + Invoke-WebRequest -OutFile dotnet.zip \"https://builds.dotnet.microsoft.com/dotnet/Sdk/$sdk_version/dotnet-sdk-$sdk_version-win-x64.zip\" -Headers $Headers; ` + ` + $dotnet_sha512 = '{sha512_placeholder}'; ` + if ((Get-FileHash dotnet.zip -Algorithm sha512).Hash -ne $dotnet_sha512) { ` + Write-Host 'CHECKSUM VERIFICATION FAILED!'; ` + exit 1; ` + }; ` + mkdir dotnet; ` + tar -oxzf dotnet.zip -C dotnet; ` + Remove-Item -Force dotnet.zip; ` + ` + # Install PowerShell global tool + $powershell_version = '0.0.0'; ` + ` + $Base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(\":$($Env:ACCESSTOKEN)\")); ` + $Headers = @{Authorization = \"Basic $Base64AuthInfo\"}; ` + Invoke-WebRequest -OutFile PowerShell.Windows.x64.$powershell_version.nupkg \"https://powershellinfraartifacts-gkhedzdeaghdezhr.z01.azurefd.net/tool/$powershell_version/PowerShell.Windows.x64.$powershell_version.nupkg\" -Headers $Headers; ` + ` + $powershell_sha512 = '{sha512_placeholder}'; ` + if ((Get-FileHash PowerShell.Windows.x64.$powershell_version.nupkg -Algorithm sha512).Hash -ne $powershell_sha512) { ` + Write-Host 'CHECKSUM VERIFICATION FAILED!'; ` + exit 1; ` + }; ` + & \dotnet\dotnet tool install --add-source . --tool-path \powershell --version $powershell_version PowerShell.Windows.x64; ` + & \dotnet\dotnet nuget locals all --clear; ` + Remove-Item -Force PowerShell.Windows.x64.$powershell_version.nupkg; ` + Remove-Item -Path \powershell\.store\powershell.windows.x64\$powershell_version\powershell.windows.x64\$powershell_version\powershell.windows.x64.$powershell_version.nupkg -Force; ` + ` + # Delete everything in the dotnet folder that's not needed in the SDK layer but will instead be derived from base layers + Get-ChildItem -Exclude 'LICENSE.txt','ThirdPartyNotices.txt','packs','sdk','sdk-manifests','templates','shared' -Path dotnet ` + | Remove-Item -Force -Recurse; ` + Get-ChildItem -Exclude 'Microsoft.WindowsDesktop.App' -Path dotnet\shared ` + | Remove-Item -Force -Recurse + +# SDK image +FROM $REPO:0.0.0-nanoserver-1809 + +ENV ` + # Do not generate certificate + DOTNET_GENERATE_ASPNET_CERTIFICATE=false ` + # Do not show first run text + DOTNET_NOLOGO=true ` + # SDK version + DOTNET_SDK_VERSION=0.0.0 ` + # Enable correct mode for dotnet watch (only mode supported in a container) + DOTNET_USE_POLLING_FILE_WATCHER=true ` + # Skip extraction of XML docs - generally not useful within an image/container - helps performance + NUGET_XMLDOC_MODE=skip ` + # PowerShell telemetry for docker image usage + POWERSHELL_DISTRIBUTION_CHANNEL=PSDocker-DotnetSDK-NanoServer-1809 + +# In order to set system PATH, ContainerAdministrator must be used +USER ContainerAdministrator +RUN setx /M PATH "%PATH%;C:\Program Files\powershell;C:\Program Files\MinGit\cmd" +USER ContainerUser + +COPY --from=installer ["/dotnet", "/Program Files/dotnet"] +COPY --from=installer ["/powershell", "/Program Files/powershell"] +COPY --from=installer ["/MinGit", "/Program Files/MinGit"] + +# Trigger first run experience by running arbitrary cmd +RUN dotnet help diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/8.0/nanoserver-ltsc2022/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/8.0/nanoserver-ltsc2022/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..8ee45d0105 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/8.0/nanoserver-ltsc2022/amd64/Dockerfile.verified.noextension @@ -0,0 +1,100 @@ +# escape=` + +ARG REPO=mcr.microsoft.com/dotnet/aspnet + +# Installer image +FROM mcr.microsoft.com/windows/servercore:ltsc2022-amd64 AS installer + +ARG ACCESSTOKEN + +# Download MinGit +RUN powershell -Command " ` + $ErrorActionPreference = 'Stop'; ` + $ProgressPreference = 'SilentlyContinue'; ` + ` + ` + $Base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(\":$($Env:ACCESSTOKEN)\")); ` + $Headers = @{Authorization = \"Basic $Base64AuthInfo\"}; ` + Invoke-WebRequest -OutFile mingit.zip \"https://github.com/git-for-windows/git/releases/download/v0.0.0.windows.0/MinGit-0.0.0-64-bit.zip\" -Headers $Headers; ` + ` + $mingit_sha256 = '{sha256_placeholder}'; ` + if ((Get-FileHash mingit.zip -Algorithm sha256).Hash -ne $mingit_sha256) { ` + Write-Host 'CHECKSUM VERIFICATION FAILED!'; ` + exit 1; ` + }; ` + mkdir MinGit; ` + tar -oxzf mingit.zip -C MinGit; ` + Remove-Item -Force mingit.zip" + +SHELL ["powershell", "-command"] +RUN ` + $ErrorActionPreference = 'Stop'; ` + $ProgressPreference = 'SilentlyContinue'; ` + ` + # Retrieve .NET SDK + $sdk_version = '0.0.0'; ` + ` + $Base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(\":$($Env:ACCESSTOKEN)\")); ` + $Headers = @{Authorization = \"Basic $Base64AuthInfo\"}; ` + Invoke-WebRequest -OutFile dotnet.zip \"https://builds.dotnet.microsoft.com/dotnet/Sdk/$sdk_version/dotnet-sdk-$sdk_version-win-x64.zip\" -Headers $Headers; ` + ` + $dotnet_sha512 = '{sha512_placeholder}'; ` + if ((Get-FileHash dotnet.zip -Algorithm sha512).Hash -ne $dotnet_sha512) { ` + Write-Host 'CHECKSUM VERIFICATION FAILED!'; ` + exit 1; ` + }; ` + mkdir dotnet; ` + tar -oxzf dotnet.zip -C dotnet; ` + Remove-Item -Force dotnet.zip; ` + ` + # Install PowerShell global tool + $powershell_version = '0.0.0'; ` + ` + $Base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(\":$($Env:ACCESSTOKEN)\")); ` + $Headers = @{Authorization = \"Basic $Base64AuthInfo\"}; ` + Invoke-WebRequest -OutFile PowerShell.Windows.x64.$powershell_version.nupkg \"https://powershellinfraartifacts-gkhedzdeaghdezhr.z01.azurefd.net/tool/$powershell_version/PowerShell.Windows.x64.$powershell_version.nupkg\" -Headers $Headers; ` + ` + $powershell_sha512 = '{sha512_placeholder}'; ` + if ((Get-FileHash PowerShell.Windows.x64.$powershell_version.nupkg -Algorithm sha512).Hash -ne $powershell_sha512) { ` + Write-Host 'CHECKSUM VERIFICATION FAILED!'; ` + exit 1; ` + }; ` + & \dotnet\dotnet tool install --add-source . --tool-path \powershell --version $powershell_version PowerShell.Windows.x64; ` + & \dotnet\dotnet nuget locals all --clear; ` + Remove-Item -Force PowerShell.Windows.x64.$powershell_version.nupkg; ` + Remove-Item -Path \powershell\.store\powershell.windows.x64\$powershell_version\powershell.windows.x64\$powershell_version\powershell.windows.x64.$powershell_version.nupkg -Force; ` + ` + # Delete everything in the dotnet folder that's not needed in the SDK layer but will instead be derived from base layers + Get-ChildItem -Exclude 'LICENSE.txt','ThirdPartyNotices.txt','packs','sdk','sdk-manifests','templates','shared' -Path dotnet ` + | Remove-Item -Force -Recurse; ` + Get-ChildItem -Exclude 'Microsoft.WindowsDesktop.App' -Path dotnet\shared ` + | Remove-Item -Force -Recurse + +# SDK image +FROM $REPO:0.0.0-nanoserver-ltsc2022 + +ENV ` + # Do not generate certificate + DOTNET_GENERATE_ASPNET_CERTIFICATE=false ` + # Do not show first run text + DOTNET_NOLOGO=true ` + # SDK version + DOTNET_SDK_VERSION=0.0.0 ` + # Enable correct mode for dotnet watch (only mode supported in a container) + DOTNET_USE_POLLING_FILE_WATCHER=true ` + # Skip extraction of XML docs - generally not useful within an image/container - helps performance + NUGET_XMLDOC_MODE=skip ` + # PowerShell telemetry for docker image usage + POWERSHELL_DISTRIBUTION_CHANNEL=PSDocker-DotnetSDK-NanoServer-ltsc2022 + +# In order to set system PATH, ContainerAdministrator must be used +USER ContainerAdministrator +RUN setx /M PATH "%PATH%;C:\Program Files\powershell;C:\Program Files\MinGit\cmd" +USER ContainerUser + +COPY --from=installer ["/dotnet", "/Program Files/dotnet"] +COPY --from=installer ["/powershell", "/Program Files/powershell"] +COPY --from=installer ["/MinGit", "/Program Files/MinGit"] + +# Trigger first run experience by running arbitrary cmd +RUN dotnet help diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/8.0/nanoserver-ltsc2025/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/8.0/nanoserver-ltsc2025/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..c83e9a1651 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/8.0/nanoserver-ltsc2025/amd64/Dockerfile.verified.noextension @@ -0,0 +1,100 @@ +# escape=` + +ARG REPO=mcr.microsoft.com/dotnet/aspnet + +# Installer image +FROM mcr.microsoft.com/windows/servercore:ltsc2025-amd64 AS installer + +ARG ACCESSTOKEN + +# Download MinGit +RUN powershell -Command " ` + $ErrorActionPreference = 'Stop'; ` + $ProgressPreference = 'SilentlyContinue'; ` + ` + ` + $Base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(\":$($Env:ACCESSTOKEN)\")); ` + $Headers = @{Authorization = \"Basic $Base64AuthInfo\"}; ` + Invoke-WebRequest -OutFile mingit.zip \"https://github.com/git-for-windows/git/releases/download/v0.0.0.windows.0/MinGit-0.0.0-64-bit.zip\" -Headers $Headers; ` + ` + $mingit_sha256 = '{sha256_placeholder}'; ` + if ((Get-FileHash mingit.zip -Algorithm sha256).Hash -ne $mingit_sha256) { ` + Write-Host 'CHECKSUM VERIFICATION FAILED!'; ` + exit 1; ` + }; ` + mkdir MinGit; ` + tar -oxzf mingit.zip -C MinGit; ` + Remove-Item -Force mingit.zip" + +SHELL ["powershell", "-command"] +RUN ` + $ErrorActionPreference = 'Stop'; ` + $ProgressPreference = 'SilentlyContinue'; ` + ` + # Retrieve .NET SDK + $sdk_version = '0.0.0'; ` + ` + $Base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(\":$($Env:ACCESSTOKEN)\")); ` + $Headers = @{Authorization = \"Basic $Base64AuthInfo\"}; ` + Invoke-WebRequest -OutFile dotnet.zip \"https://builds.dotnet.microsoft.com/dotnet/Sdk/$sdk_version/dotnet-sdk-$sdk_version-win-x64.zip\" -Headers $Headers; ` + ` + $dotnet_sha512 = '{sha512_placeholder}'; ` + if ((Get-FileHash dotnet.zip -Algorithm sha512).Hash -ne $dotnet_sha512) { ` + Write-Host 'CHECKSUM VERIFICATION FAILED!'; ` + exit 1; ` + }; ` + mkdir dotnet; ` + tar -oxzf dotnet.zip -C dotnet; ` + Remove-Item -Force dotnet.zip; ` + ` + # Install PowerShell global tool + $powershell_version = '0.0.0'; ` + ` + $Base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(\":$($Env:ACCESSTOKEN)\")); ` + $Headers = @{Authorization = \"Basic $Base64AuthInfo\"}; ` + Invoke-WebRequest -OutFile PowerShell.Windows.x64.$powershell_version.nupkg \"https://powershellinfraartifacts-gkhedzdeaghdezhr.z01.azurefd.net/tool/$powershell_version/PowerShell.Windows.x64.$powershell_version.nupkg\" -Headers $Headers; ` + ` + $powershell_sha512 = '{sha512_placeholder}'; ` + if ((Get-FileHash PowerShell.Windows.x64.$powershell_version.nupkg -Algorithm sha512).Hash -ne $powershell_sha512) { ` + Write-Host 'CHECKSUM VERIFICATION FAILED!'; ` + exit 1; ` + }; ` + & \dotnet\dotnet tool install --add-source . --tool-path \powershell --version $powershell_version PowerShell.Windows.x64; ` + & \dotnet\dotnet nuget locals all --clear; ` + Remove-Item -Force PowerShell.Windows.x64.$powershell_version.nupkg; ` + Remove-Item -Path \powershell\.store\powershell.windows.x64\$powershell_version\powershell.windows.x64\$powershell_version\powershell.windows.x64.$powershell_version.nupkg -Force; ` + ` + # Delete everything in the dotnet folder that's not needed in the SDK layer but will instead be derived from base layers + Get-ChildItem -Exclude 'LICENSE.txt','ThirdPartyNotices.txt','packs','sdk','sdk-manifests','templates','shared' -Path dotnet ` + | Remove-Item -Force -Recurse; ` + Get-ChildItem -Exclude 'Microsoft.WindowsDesktop.App' -Path dotnet\shared ` + | Remove-Item -Force -Recurse + +# SDK image +FROM $REPO:0.0.0-nanoserver-ltsc2025 + +ENV ` + # Do not generate certificate + DOTNET_GENERATE_ASPNET_CERTIFICATE=false ` + # Do not show first run text + DOTNET_NOLOGO=true ` + # SDK version + DOTNET_SDK_VERSION=0.0.0 ` + # Enable correct mode for dotnet watch (only mode supported in a container) + DOTNET_USE_POLLING_FILE_WATCHER=true ` + # Skip extraction of XML docs - generally not useful within an image/container - helps performance + NUGET_XMLDOC_MODE=skip ` + # PowerShell telemetry for docker image usage + POWERSHELL_DISTRIBUTION_CHANNEL=PSDocker-DotnetSDK-NanoServer-ltsc2025 + +# In order to set system PATH, ContainerAdministrator must be used +USER ContainerAdministrator +RUN setx /M PATH "%PATH%;C:\Program Files\powershell;C:\Program Files\MinGit\cmd" +USER ContainerUser + +COPY --from=installer ["/dotnet", "/Program Files/dotnet"] +COPY --from=installer ["/powershell", "/Program Files/powershell"] +COPY --from=installer ["/MinGit", "/Program Files/MinGit"] + +# Trigger first run experience by running arbitrary cmd +RUN dotnet help diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/8.0/noble-aot/amd64/Dockerfile.verified.noextension b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/8.0/noble-aot/amd64/Dockerfile.verified.noextension new file mode 100644 index 0000000000..fd31b5e8b3 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyInternalDockerfilesOutput/sdk/8.0/noble-aot/amd64/Dockerfile.verified.noextension @@ -0,0 +1,23 @@ +# syntax=docker/dockerfile:1 +ARG REPO=mcr.microsoft.com/dotnet/sdk +FROM $REPO:0.0.0-noble-amd64 + +COPY < Date: Thu, 9 Jan 2025 14:12:52 -0800 Subject: [PATCH 4/5] Update gitattributes --- .gitattributes | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitattributes b/.gitattributes index d86f5d4acf..e3b2be7715 100644 --- a/.gitattributes +++ b/.gitattributes @@ -79,4 +79,4 @@ src/coreclr/tests/src/JIT/Performance/CodeQuality/BenchmarksGame/k-nucleotide/kn src/coreclr/tests/src/JIT/Performance/CodeQuality/BenchmarksGame/k-nucleotide/knucleotide-input-big.txt text eol=lf src/coreclr/tests/src/performance/Scenario/JitBench/Resources/word2vecnet.patch text eol=lf -tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests.VerifyGeneratedDockerfilesOutput/* -merge linguist-generated=true +tests/Microsoft.DotNet.Docker.Tests/Baselines/** linguist-generated From df2ed7ae83b58df2b1ec7a47f666c8d3409b3372 Mon Sep 17 00:00:00 2001 From: Logan Bussell Date: Thu, 9 Jan 2025 14:26:39 -0800 Subject: [PATCH 5/5] Add dotnet tool configuration --- .config/dotnet-tools.json | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 .config/dotnet-tools.json diff --git a/.config/dotnet-tools.json b/.config/dotnet-tools.json new file mode 100644 index 0000000000..e0566507d5 --- /dev/null +++ b/.config/dotnet-tools.json @@ -0,0 +1,13 @@ +{ + "version": 1, + "isRoot": true, + "tools": { + "verify.tool": { + "version": "0.6.0", + "commands": [ + "dotnet-verify" + ], + "rollForward": false + } + } +} \ No newline at end of file