From 77f4470058b7756a9cc844fcec5e552ba9ff2cc0 Mon Sep 17 00:00:00 2001 From: kasperk81 <83082615+kasperk81@users.noreply.github.com> Date: Mon, 24 Jun 2024 19:27:23 +0300 Subject: [PATCH 1/4] rename SDK_CONTAINER_* to DOTNET_CONTAINER --- .../Microsoft.NET.Build.Containers/ContainerHelpers.cs | 4 ++-- .../Registry/RegistrySettings.cs | 10 +++++----- src/Containers/docs/ReleaseNotes/v7.0.400.md | 6 +++--- .../RegistryTests.cs | 2 +- 4 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/Containers/Microsoft.NET.Build.Containers/ContainerHelpers.cs b/src/Containers/Microsoft.NET.Build.Containers/ContainerHelpers.cs index 81cfde3bab90..0b0d2cd927d5 100644 --- a/src/Containers/Microsoft.NET.Build.Containers/ContainerHelpers.cs +++ b/src/Containers/Microsoft.NET.Build.Containers/ContainerHelpers.cs @@ -16,9 +16,9 @@ namespace Microsoft.NET.Build.Containers; public static class ContainerHelpers { - internal const string HostObjectUser = "SDK_CONTAINER_REGISTRY_UNAME"; + internal const string HostObjectUser = "DOTNET_CONTAINER_REGISTRY_UNAME"; - internal const string HostObjectPass = "SDK_CONTAINER_REGISTRY_PWORD"; + internal const string HostObjectPass = "DOTNET_CONTAINER_REGISTRY_PWORD"; internal const string DockerRegistryAlias = "docker.io"; diff --git a/src/Containers/Microsoft.NET.Build.Containers/Registry/RegistrySettings.cs b/src/Containers/Microsoft.NET.Build.Containers/Registry/RegistrySettings.cs index 19e5b6eef6a3..41bd9844844b 100644 --- a/src/Containers/Microsoft.NET.Build.Containers/Registry/RegistrySettings.cs +++ b/src/Containers/Microsoft.NET.Build.Containers/Registry/RegistrySettings.cs @@ -53,12 +53,12 @@ public RegistrySettings(string? registryName = null, IEnvironmentProvider? envir internal struct EnvVariables { - internal const string ChunkedUploadSizeBytes = "SDK_CONTAINER_REGISTRY_CHUNKED_UPLOAD_SIZE_BYTES"; + internal const string ChunkedUploadSizeBytes = "DOTNET_CONTAINER_REGISTRY_CHUNKED_UPLOAD_SIZE_BYTES"; - internal const string ForceChunkedUpload = "SDK_CONTAINER_DEBUG_REGISTRY_FORCE_CHUNKED_UPLOAD"; - internal const string ParallelUploadEnabled = "SDK_CONTAINER_REGISTRY_PARALLEL_UPLOAD"; + internal const string ForceChunkedUpload = "DOTNET_CONTAINER_DEBUG_REGISTRY_FORCE_CHUNKED_UPLOAD"; + internal const string ParallelUploadEnabled = "DOTNET_CONTAINER_REGISTRY_PARALLEL_UPLOAD"; - internal const string InsecureRegistries = "SDK_CONTAINER_INSECURE_REGISTRIES"; + internal const string InsecureRegistries = "DOTNET_CONTAINER_INSECURE_REGISTRIES"; } private static bool IsInsecureRegistry(IEnvironmentProvider environment, string registryName) @@ -70,7 +70,7 @@ private static bool IsInsecureRegistry(IEnvironmentProvider environment, string return true; } - // SDK_CONTAINER_INSECURE_REGISTRIES is a semicolon separated list of insecure registry names. + // DOTNET_CONTAINER_INSECURE_REGISTRIES is a semicolon separated list of insecure registry names. string? insecureRegistriesEnv = environment.GetEnvironmentVariable(EnvVariables.InsecureRegistries); if (insecureRegistriesEnv is not null) { diff --git a/src/Containers/docs/ReleaseNotes/v7.0.400.md b/src/Containers/docs/ReleaseNotes/v7.0.400.md index 94ae3054009b..0986e20ab196 100644 --- a/src/Containers/docs/ReleaseNotes/v7.0.400.md +++ b/src/Containers/docs/ReleaseNotes/v7.0.400.md @@ -11,13 +11,13 @@ This version brings the following new features and enhancements: In addition, we fixed some protocol bugs that blocked usage with registries like Harbor. * Several environment variables were added to allow more explicit control over the layer upload process: - * SDK_CONTAINER_REGISTRY_PARALLEL_UPLOAD + * DOTNET_CONTAINER_REGISTRY_PARALLEL_UPLOAD * determines if layers of the generated image can be uploaded in parallel or in series. * defaults to `true` for all registries except AWS ECR - * SDK_CONTAINER_DEBUG_REGISTRY_FORCE_CHUNKED_UPLOAD + * DOTNET_CONTAINER_DEBUG_REGISTRY_FORCE_CHUNKED_UPLOAD * if set to `true`, we will always try to upload layers in chunks instead of all in one upload. * defaults to `false`. - * SDK_CONTAINER_REGISTRY_CHUNKED_UPLOAD_SIZE_BYTES + * DOTNET_CONTAINER_REGISTRY_CHUNKED_UPLOAD_SIZE_BYTES * allows for explicit control over the size of the chunks uploaded when using chunked uploads. * note that by default we prefer atomic uploads, so setting this might not have any impact if your registry supports atomic uploads. * does not have a default, but the default chunk size is 64Kb. diff --git a/src/Tests/Microsoft.NET.Build.Containers.UnitTests/RegistryTests.cs b/src/Tests/Microsoft.NET.Build.Containers.UnitTests/RegistryTests.cs index 11c80a75c845..d01aab77d77b 100644 --- a/src/Tests/Microsoft.NET.Build.Containers.UnitTests/RegistryTests.cs +++ b/src/Tests/Microsoft.NET.Build.Containers.UnitTests/RegistryTests.cs @@ -531,7 +531,7 @@ public void IsRegistryInsecure(string registryName, string? insecureRegistriesEn var environment = new Dictionary(); if (insecureRegistriesEnvvar is not null) { - environment["SDK_CONTAINER_INSECURE_REGISTRIES"] = insecureRegistriesEnvvar; + environment["DOTNET_CONTAINER_INSECURE_REGISTRIES"] = insecureRegistriesEnvvar; } var registrySettings = new RegistrySettings(registryName, new MockEnvironmentProvider(environment)); From 7b2e3400965a3e58165c2b5493804f960f0e250e Mon Sep 17 00:00:00 2001 From: kasperk81 <83082615+kasperk81@users.noreply.github.com> Date: Mon, 24 Jun 2024 20:10:27 +0300 Subject: [PATCH 2/4] maintain legacy --- .../AuthHandshakeMessageHandler.cs | 4 ++-- .../ContainerHelpers.cs | 2 ++ .../Registry/RegistrySettings.cs | 16 +++++++++++++--- 3 files changed, 17 insertions(+), 5 deletions(-) diff --git a/src/Containers/Microsoft.NET.Build.Containers/AuthHandshakeMessageHandler.cs b/src/Containers/Microsoft.NET.Build.Containers/AuthHandshakeMessageHandler.cs index 543db320b5c4..172f968baa30 100644 --- a/src/Containers/Microsoft.NET.Build.Containers/AuthHandshakeMessageHandler.cs +++ b/src/Containers/Microsoft.NET.Build.Containers/AuthHandshakeMessageHandler.cs @@ -157,8 +157,8 @@ public DateTimeOffset ResolvedExpiration private async Task<(AuthenticationHeaderValue, DateTimeOffset)?> GetAuthenticationAsync(string registry, string scheme, AuthInfo? bearerAuthInfo, CancellationToken cancellationToken) { // Allow overrides for auth via environment variables - string? credU = Environment.GetEnvironmentVariable(ContainerHelpers.HostObjectUser); - string? credP = Environment.GetEnvironmentVariable(ContainerHelpers.HostObjectPass); + string? credU = Environment.GetEnvironmentVariable(ContainerHelpers.HostObjectUser) ?? Environment.GetEnvironmentVariable(ContainerHelpers.HostObjectUserLegacy); + string? credP = Environment.GetEnvironmentVariable(ContainerHelpers.HostObjectPass) ?? Environment.GetEnvironmentVariable(ContainerHelpers.HostObjectPassLegacy); // fetch creds for the host DockerCredentials? privateRepoCreds; diff --git a/src/Containers/Microsoft.NET.Build.Containers/ContainerHelpers.cs b/src/Containers/Microsoft.NET.Build.Containers/ContainerHelpers.cs index 0b0d2cd927d5..137755cdeb3d 100644 --- a/src/Containers/Microsoft.NET.Build.Containers/ContainerHelpers.cs +++ b/src/Containers/Microsoft.NET.Build.Containers/ContainerHelpers.cs @@ -17,8 +17,10 @@ namespace Microsoft.NET.Build.Containers; public static class ContainerHelpers { internal const string HostObjectUser = "DOTNET_CONTAINER_REGISTRY_UNAME"; + internal const string HostObjectUserLegacy = "SDK_CONTAINER_REGISTRY_UNAME"; internal const string HostObjectPass = "DOTNET_CONTAINER_REGISTRY_PWORD"; + internal const string HostObjectPassLegacy = "SDK_CONTAINER_REGISTRY_PWORD"; internal const string DockerRegistryAlias = "docker.io"; diff --git a/src/Containers/Microsoft.NET.Build.Containers/Registry/RegistrySettings.cs b/src/Containers/Microsoft.NET.Build.Containers/Registry/RegistrySettings.cs index 41bd9844844b..31f99d978a38 100644 --- a/src/Containers/Microsoft.NET.Build.Containers/Registry/RegistrySettings.cs +++ b/src/Containers/Microsoft.NET.Build.Containers/Registry/RegistrySettings.cs @@ -12,9 +12,15 @@ public RegistrySettings(string? registryName = null, IEnvironmentProvider? envir { environment ??= new EnvironmentProvider(); - ChunkedUploadSizeBytes = environment.GetEnvironmentVariableAsNullableInt(EnvVariables.ChunkedUploadSizeBytes); - ForceChunkedUpload = environment.GetEnvironmentVariableAsBool(EnvVariables.ForceChunkedUpload, defaultValue: false); - ParallelUploadEnabled = environment.GetEnvironmentVariableAsBool(EnvVariables.ParallelUploadEnabled, defaultValue: true); + ChunkedUploadSizeBytes = Environment.GetEnvironmentVariable(EnvVariables.ChunkedUploadSizeBytes) is not null ? + environment.GetEnvironmentVariableAsNullableInt(EnvVariables.ChunkedUploadSizeBytes) : + environment.GetEnvironmentVariableAsNullableInt(EnvVariables.ChunkedUploadSizeBytesLegacy); + ForceChunkedUpload = Environment.GetEnvironmentVariable(EnvVariables.ForceChunkedUpload) is not null ? + environment.GetEnvironmentVariableAsBool(EnvVariables.ForceChunkedUpload, defaultValue: false) : + environment.GetEnvironmentVariableAsBool(EnvVariables.ForceChunkedUploadLegacy, defaultValue: false); + ParallelUploadEnabled = Environment.GetEnvironmentVariable(EnvVariables.ParallelUploadEnabled) is not null ? + environment.GetEnvironmentVariableAsBool(EnvVariables.ParallelUploadEnabled, defaultValue: true) : + environment.GetEnvironmentVariableAsBool(EnvVariables.ParallelUploadEnabledLegacy, defaultValue: true); if (registryName is not null) { @@ -54,11 +60,15 @@ public RegistrySettings(string? registryName = null, IEnvironmentProvider? envir internal struct EnvVariables { internal const string ChunkedUploadSizeBytes = "DOTNET_CONTAINER_REGISTRY_CHUNKED_UPLOAD_SIZE_BYTES"; + internal const string ChunkedUploadSizeBytesLegacy = "SDK_CONTAINER_REGISTRY_CHUNKED_UPLOAD_SIZE_BYTES"; internal const string ForceChunkedUpload = "DOTNET_CONTAINER_DEBUG_REGISTRY_FORCE_CHUNKED_UPLOAD"; + internal const string ForceChunkedUploadLegacy = "SDK_CONTAINER_DEBUG_REGISTRY_FORCE_CHUNKED_UPLOAD"; internal const string ParallelUploadEnabled = "DOTNET_CONTAINER_REGISTRY_PARALLEL_UPLOAD"; + internal const string ParallelUploadEnabledLegacy = "SDK_CONTAINER_REGISTRY_PARALLEL_UPLOAD"; internal const string InsecureRegistries = "DOTNET_CONTAINER_INSECURE_REGISTRIES"; + internal const string InsecureRegistriesLegacy = "SDK_CONTAINER_INSECURE_REGISTRIES"; } private static bool IsInsecureRegistry(IEnvironmentProvider environment, string registryName) From f44eb8eb729163b94489890037d72d7abc29fbaa Mon Sep 17 00:00:00 2001 From: kasperk81 <83082615+kasperk81@users.noreply.github.com> Date: Mon, 24 Jun 2024 20:11:32 +0300 Subject: [PATCH 3/4] clean --- .../Microsoft.NET.Build.Containers/Registry/RegistrySettings.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/src/Containers/Microsoft.NET.Build.Containers/Registry/RegistrySettings.cs b/src/Containers/Microsoft.NET.Build.Containers/Registry/RegistrySettings.cs index 31f99d978a38..eb4d44072d90 100644 --- a/src/Containers/Microsoft.NET.Build.Containers/Registry/RegistrySettings.cs +++ b/src/Containers/Microsoft.NET.Build.Containers/Registry/RegistrySettings.cs @@ -68,7 +68,6 @@ internal struct EnvVariables internal const string ParallelUploadEnabledLegacy = "SDK_CONTAINER_REGISTRY_PARALLEL_UPLOAD"; internal const string InsecureRegistries = "DOTNET_CONTAINER_INSECURE_REGISTRIES"; - internal const string InsecureRegistriesLegacy = "SDK_CONTAINER_INSECURE_REGISTRIES"; } private static bool IsInsecureRegistry(IEnvironmentProvider environment, string registryName) From 7217f0a46eb0c2e5f9ee1273e3b422c36359f816 Mon Sep 17 00:00:00 2001 From: kasperk81 <83082615+kasperk81@users.noreply.github.com> Date: Mon, 24 Jun 2024 20:41:04 +0300 Subject: [PATCH 4/4] simplify nullable int case --- .../Registry/RegistrySettings.cs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/Containers/Microsoft.NET.Build.Containers/Registry/RegistrySettings.cs b/src/Containers/Microsoft.NET.Build.Containers/Registry/RegistrySettings.cs index eb4d44072d90..9ea9005af46a 100644 --- a/src/Containers/Microsoft.NET.Build.Containers/Registry/RegistrySettings.cs +++ b/src/Containers/Microsoft.NET.Build.Containers/Registry/RegistrySettings.cs @@ -12,8 +12,7 @@ public RegistrySettings(string? registryName = null, IEnvironmentProvider? envir { environment ??= new EnvironmentProvider(); - ChunkedUploadSizeBytes = Environment.GetEnvironmentVariable(EnvVariables.ChunkedUploadSizeBytes) is not null ? - environment.GetEnvironmentVariableAsNullableInt(EnvVariables.ChunkedUploadSizeBytes) : + ChunkedUploadSizeBytes = environment.GetEnvironmentVariableAsNullableInt(EnvVariables.ChunkedUploadSizeBytes) ?? environment.GetEnvironmentVariableAsNullableInt(EnvVariables.ChunkedUploadSizeBytesLegacy); ForceChunkedUpload = Environment.GetEnvironmentVariable(EnvVariables.ForceChunkedUpload) is not null ? environment.GetEnvironmentVariableAsBool(EnvVariables.ForceChunkedUpload, defaultValue: false) :