diff --git a/.github/instructions/csharp.instructions.md b/.github/instructions/csharp.instructions.md index e60ead57ea..076ee5b44e 100644 --- a/.github/instructions/csharp.instructions.md +++ b/.github/instructions/csharp.instructions.md @@ -60,3 +60,7 @@ Other patterns: - Comments inside methods should explain "why," not "what". - Comments should provide context and rationale behind the code. - Avoid redundant comments that restate the code - not all code needs comments. + +## Testing + +- Do not add comments like `// Arrange`, `// Act`, or `// Assert` in unit tests. diff --git a/.github/linters/.linkspector.yml b/.github/linters/.linkspector.yml index 57c826e21d..2b896fe668 100644 --- a/.github/linters/.linkspector.yml +++ b/.github/linters/.linkspector.yml @@ -9,6 +9,7 @@ dirs: - . - .github excludedDirs: + - eng/announcement-templates - eng/readme-templates ignorePatterns: - pattern: "^https://github.com/microsoft/mcr.*$" diff --git a/.github/workflows/lint-code-base.yml b/.github/workflows/lint-code-base.yml index 205b8a9d0a..19a194add3 100644 --- a/.github/workflows/lint-code-base.yml +++ b/.github/workflows/lint-code-base.yml @@ -25,6 +25,6 @@ jobs: uses: github/super-linter@v6 # https://github.com/github/super-linter env: DEFAULT_BRANCH: main - FILTER_REGEX_EXCLUDE: eng/docker-tools/.*|eng/readme-templates/.*|.portal-docs/.* + FILTER_REGEX_EXCLUDE: eng/announcement-templates/.*|eng/docker-tools/.*|eng/readme-templates/.*|.portal-docs/.* GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} VALIDATE_MARKDOWN: true diff --git a/eng/announcement-templates/Render.cs b/eng/announcement-templates/Render.cs new file mode 100755 index 0000000000..5130aac672 --- /dev/null +++ b/eng/announcement-templates/Render.cs @@ -0,0 +1,218 @@ +#!/usr/bin/env dotnet +#:package Fluid.Core@2.31.0 +#:package Spectre.Console@0.54.1-alpha.0.26 +#:package System.CommandLine@2.0.2 + +using System.CommandLine; +using Fluid; +using Spectre.Console; + +var renderCommand = new RenderTemplateCommand(templateFileInfo => +{ + if (!templateFileInfo.Exists) + { + Console.Error.WriteLine($"Template file not found: {templateFileInfo.FullName}"); + return 1; + } + + if (!TemplateDefinitions.TemplateIsSupported(templateFileInfo)) + { + Console.Error.WriteLine($"Unsupported template file: {templateFileInfo.Name}"); + return 1; + } + + // Parse the template first, so any errors are caught before prompting for input + var template = TemplateDefinitions.ParseTemplate(templateFileInfo, out var parseError); + if (template is null) + { + Console.Error.WriteLine($"Failed to parse template: {parseError}"); + return 1; + } + + // Display some helpful reference information right before prompting the user for input. + DisplayPatchTuesdayReferenceText(); + + // This will prompt the user for the template parameters. + TemplateContext context = TemplateDefinitions.GetTemplateContext(templateFileInfo); + + // Finally, render the template with the provided parameters. + var result = template.Render(context); + + AnsiConsole.WriteLine(); + AnsiConsole.Write(new Rule("[green]Generated Announcement[/]")); + AnsiConsole.WriteLine(); + Console.WriteLine(result); + + return 0; +}); + +var parseResult = renderCommand.Parse(args); +return parseResult.Invoke(); + + +static void DisplayPatchTuesdayReferenceText() +{ + AnsiConsole.WriteLine(); + AnsiConsole.MarkupLine("[grey]Patch Tuesdays Reference:[/]"); + for (int i = -4; i <= 4; i++) + { + var pt = DateOnly.GetPatchTuesday(i); + var label = i == 0 ? "this month" : i.ToString("+0;-0"); + AnsiConsole.MarkupLine($"[grey] {label,11}: {pt:yyyy-MM-dd}[/]"); + } + + AnsiConsole.WriteLine(); +} + +static class TemplateDefinitions +{ + // All supported templates and their associated context factories. + private static readonly Dictionary> s_templateContexts = new() + { + ["alpine-floating-tag-update.md"] = AlpineFloatingTagTemplateParameters.ContextFactory, + }; + + public static TemplateContext GetTemplateContext(FileInfo templateFileInfo) + { + var contextFactory = s_templateContexts[templateFileInfo.Name]; + var templateContext = contextFactory(); + return templateContext; + } + + public static IFluidTemplate? ParseTemplate(FileInfo templateFile, out string? error) + { + var parser = new FluidParser(); + var templateText = File.ReadAllText(templateFile.FullName); + + if (!parser.TryParse(templateText, out var template, out string? internalError)) + { + error = internalError; + return null; + } + + error = null; + return template; + } + + public static bool TemplateIsSupported(FileInfo templateFile) => + s_templateContexts.ContainsKey(templateFile.Name); +} + +sealed class RenderTemplateCommand : RootCommand +{ + public RenderTemplateCommand(Func handler) : base("Render announcement template") + { + var templateFileArgument = new Argument("templateFile") + { + Description = "The template file to read and display on the console", + }; + Arguments.Add(templateFileArgument); + + SetAction(parseResult => + { + var templateFileResult = parseResult.GetValue(templateFileArgument); + if (parseResult.Errors.Count == 0 && templateFileResult is FileInfo validTemplateFile) + { + return handler(validTemplateFile); + } + + if (parseResult.Errors.Count > 0) + { + foreach (var error in parseResult.Errors) + Console.Error.WriteLine(error.Message); + + return 1; + } + + // Show help text + Parse("-h").Invoke(); + + return 0; + }); + } +} + +sealed record AlpineFloatingTagTemplateParameters( + string NewVersion, + string OldVersion, + DateTime PublishDate, + DateTime ReleaseDate, + DateTime EolDate, + string PublishDiscussionUrl, + string DotnetExampleVersion) +{ + public static Func ContextFactory { get; } = () => + { + var model = PromptForInput(); + return new TemplateContext(model); + }; + + public static AlpineFloatingTagTemplateParameters PromptForInput() + { + var newVersion = AnsiConsole.Prompt( + new TextPrompt("New Alpine version:") + .DefaultValue("3.XX")); + + var oldVersion = AnsiConsole.Prompt( + new TextPrompt("Previous Alpine version:") + .DefaultValue("3.XX")); + + var publishDate = AnsiConsole.Prompt( + new TextPrompt($"When was Alpine {newVersion} published?") + .DefaultValue(DateOnly.GetPatchTuesday(-1))); + + const string DiscussionQueryLink = "https://github.com/dotnet/dotnet-docker/discussions/categories/announcements?discussions_q=is%3Aopen+category%3AAnnouncements+alpine"; + var publishDiscussionUrl = AnsiConsole.Prompt( + new TextPrompt($"Link to announcement for publishing Alpine {newVersion} images (see {DiscussionQueryLink}):")); + + var releaseDate = AnsiConsole.Prompt( + new TextPrompt($"When were floating tags moved from Alpine {oldVersion} to {newVersion}?") + .DefaultValue(DateOnly.GetPatchTuesday(0))); + + var eolDate = AnsiConsole.Prompt( + new TextPrompt($"When will we stop publishing Alpine {oldVersion} images?") + .DefaultValue(DateOnly.GetPatchTuesday(3))); + + var dotnetExampleVersion = AnsiConsole.Prompt( + new TextPrompt(".NET example version for tags:") + .DefaultValue("10.0")); + + return new AlpineFloatingTagTemplateParameters( + newVersion, + oldVersion, + publishDate.ToDateTime(TimeOnly.MinValue), + releaseDate.ToDateTime(TimeOnly.MinValue), + eolDate.ToDateTime(TimeOnly.MinValue), + publishDiscussionUrl, + dotnetExampleVersion); + } +} + +internal static class DateOnlyExtensions +{ + extension(DateOnly date) + { + /// + /// Gets the Patch Tuesday (second Tuesday of the month) for a month + /// relative to the current month. + /// + /// + /// The number of months from the current month. + /// 0 = this month, 1 = next month, -3 = three months ago. + /// + /// The date of Patch Tuesday for the target month. + public static DateOnly GetPatchTuesday(int offset = 0) + { + var today = DateOnly.FromDateTime(DateTime.Today); + var targetMonth = today.AddMonths(offset); + var firstOfMonth = new DateOnly(targetMonth.Year, targetMonth.Month, 1); + + // Find the first Tuesday + var daysUntilTuesday = ((int)DayOfWeek.Tuesday - (int)firstOfMonth.DayOfWeek + 7) % 7; + var firstTuesday = firstOfMonth.AddDays(daysUntilTuesday); + + // Second Tuesday is 7 days later + return firstTuesday.AddDays(7); + } + } +} diff --git a/eng/announcement-templates/alpine-floating-tag-update.md b/eng/announcement-templates/alpine-floating-tag-update.md new file mode 100644 index 0000000000..8ec5986b4c --- /dev/null +++ b/eng/announcement-templates/alpine-floating-tag-update.md @@ -0,0 +1,23 @@ +# Alpine Floating Tags Updated to Alpine {{ NewVersion }} + +In {{ PublishDate | date: "%B %Y" }}, [Alpine {{ NewVersion }} container images were published]({{ PublishDiscussionUrl }}). For today's {{ ReleaseDate | date: "%B %Y" }} .NET release, all Alpine floating tags now point to Alpine {{ NewVersion }} instead of Alpine {{ OldVersion }} according to our [tagging policy](https://github.com/dotnet/dotnet-docker/blob/main/documentation/supported-tags.md). + +Per the [.NET Docker platform support policy](https://github.com/dotnet/dotnet-docker/blob/main/documentation/supported-platforms.md#linux), Alpine {{ OldVersion }} images will no longer be maintained starting on {{ EolDate | date: "%B %-d, %Y" }} (3 months after Alpine {{ NewVersion }} images were released). + +## Details + +Please review the [Alpine {{ NewVersion }} changelog](https://alpinelinux.org/posts/Alpine-{{ NewVersion }}.0-released.html) for more details on changes that were made in this version of Alpine. + +The affected floating tags use this naming pattern: + +* `-alpine` (e.g. `{{ DotnetExampleVersion }}-alpine`) +* `-alpine-` (e.g. `{{ DotnetExampleVersion }}-alpine-extra`) +* `-alpine-` (e.g. `{{ DotnetExampleVersion }}-alpine-amd64`) +* `-alpine--` (e.g. `{{ DotnetExampleVersion }}-alpine-extra-amd64`) + +The following image repos have been updated: + +* dotnet/sdk - [Microsoft Artifact Registry](https://mcr.microsoft.com/product/dotnet/sdk/about) +* dotnet/aspnet - [Microsoft Artifact Registry](https://mcr.microsoft.com/product/dotnet/aspnet/about) +* dotnet/runtime - [Microsoft Artifact Registry](https://mcr.microsoft.com/product/dotnet/runtime/about) +* dotnet/runtime-deps - [Microsoft Artifact Registry](https://mcr.microsoft.com/product/dotnet/runtime-deps/about) diff --git a/eng/pipelines/dotnet-core-samples-pr.yml b/eng/pipelines/dotnet-core-samples-pr.yml index 047d5ee413..9a5b5b2361 100644 --- a/eng/pipelines/dotnet-core-samples-pr.yml +++ b/eng/pipelines/dotnet-core-samples-pr.yml @@ -15,9 +15,6 @@ pr: variables: - template: /eng/pipelines/variables/samples.yml@self -- name: publishEolAnnotations - value: false - readonly: true resources: repositories: diff --git a/eng/pipelines/dotnet-core-samples.yml b/eng/pipelines/dotnet-core-samples.yml index 36e114c415..131b2ae38b 100644 --- a/eng/pipelines/dotnet-core-samples.yml +++ b/eng/pipelines/dotnet-core-samples.yml @@ -14,9 +14,6 @@ parameters: variables: - template: /eng/pipelines/variables/samples.yml@self - template: /eng/docker-tools/templates/variables/dotnet/secrets.yml@self -- name: publishEolAnnotations - value: true - readonly: true resources: repositories: diff --git a/eng/pipelines/pipelines/update-dependencies-internal.yml b/eng/pipelines/pipelines/update-dependencies-internal.yml index c81a9371e3..bc537e2d7a 100644 --- a/eng/pipelines/pipelines/update-dependencies-internal.yml +++ b/eng/pipelines/pipelines/update-dependencies-internal.yml @@ -1,8 +1,8 @@ parameters: -# Build ID of the .NET staging pipeline to fetch updates from. This can be a -# pipeline run of the real staging pipeline or the staging test pipeline, but -# the stagingStorageAccount parameter must match which pipeline is used here. -- name: buildId +# Stage container name (e.g., "stage-1234567") to fetch updates from. This can be +# from the real staging pipeline or the staging test pipeline, but the +# stagingStorageAccount parameter must match which pipeline is used here. +- name: stageContainer type: string default: "" # Staging storage account for .NET release artifacts @@ -42,7 +42,7 @@ extends: inlineScript: >- dotnet run --project eng/update-dependencies/update-dependencies.csproj -- from-staging-pipeline - ${{ parameters.buildId }} + ${{ parameters.stageContainer }} --mode Remote --azdo-organization "$(System.CollectionUri)" --azdo-project "$(System.TeamProject)" diff --git a/eng/pipelines/update-dependencies-internal-official.yml b/eng/pipelines/update-dependencies-internal-official.yml index d33b5029e3..56df087fe7 100644 --- a/eng/pipelines/update-dependencies-internal-official.yml +++ b/eng/pipelines/update-dependencies-internal-official.yml @@ -21,7 +21,7 @@ resources: extends: template: /eng/pipelines/pipelines/update-dependencies-internal.yml@self parameters: - buildId: "$(resources.pipeline.dotnet-staging-pipeline.runID)" + stageContainer: "stage-$(resources.pipeline.dotnet-staging-pipeline.runID)" stagingStorageAccount: "dotnetstage" targetBranch: "$(targetBranch)" gitServiceConnectionName: "$(updateDepsInt.serviceConnectionName)" diff --git a/eng/pipelines/update-dependencies-internal-unofficial.yml b/eng/pipelines/update-dependencies-internal-unofficial.yml index 30d132696a..44fafd52f2 100644 --- a/eng/pipelines/update-dependencies-internal-unofficial.yml +++ b/eng/pipelines/update-dependencies-internal-unofficial.yml @@ -24,7 +24,7 @@ resources: extends: template: /eng/pipelines/pipelines/update-dependencies-internal.yml@self parameters: - buildId: "$(resources.pipeline.dotnet-staging-pipeline.runID)" + stageContainer: "stage-$(resources.pipeline.dotnet-staging-pipeline.runID)" stagingStorageAccount: "dotnetstage" targetBranch: "${{ parameters.targetBranch }}" gitServiceConnectionName: "$(updateDepsInt-test.serviceConnectionName)" diff --git a/eng/pipelines/update-dependencies-official.yml b/eng/pipelines/update-dependencies-official.yml index 828fda6bb0..9800c65d5a 100644 --- a/eng/pipelines/update-dependencies-official.yml +++ b/eng/pipelines/update-dependencies-official.yml @@ -16,9 +16,7 @@ parameters: - name: updateDotnet displayName: Update .NET? type: boolean - # Updates are disabled until .NET 11 Alpha images are added. - # Re-enable when https://github.com/dotnet/dotnet-docker/issues/6824 is resolved. - default: false + default: true - name: updateAspire displayName: Update Aspire Dashboard? type: boolean diff --git a/eng/pipelines/variables/core-official.yml b/eng/pipelines/variables/core-official.yml index 8309eb8167..d85fea15e2 100644 --- a/eng/pipelines/variables/core-official.yml +++ b/eng/pipelines/variables/core-official.yml @@ -12,7 +12,5 @@ variables: - name: officialBranchPrefixes value: internal/release/ -# Temporarily disabled due to https://github.com/dotnet/docker-tools/issues/1905 -# Uncomment when the issue is resolved. -# - name: publishEolAnnotations -# value: true +# Set publishEolAnnotations to true or false in the Azure Pipelines UI to +# control EOL annotation publishing. The default should be true. diff --git a/eng/update-dependencies/AzdoAuthProvider.cs b/eng/update-dependencies/AzdoAuthProvider.cs index b85465e18d..73f4932a6f 100644 --- a/eng/update-dependencies/AzdoAuthProvider.cs +++ b/eng/update-dependencies/AzdoAuthProvider.cs @@ -2,13 +2,27 @@ // The .NET Foundation licenses this file to you under the MIT license. using Azure.Identity; +using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using Microsoft.VisualStudio.Services.Common; using Microsoft.VisualStudio.Services.WebApi; namespace Dotnet.Docker; -public class AzdoAuthProvider +public interface IAzdoAuthProvider +{ + /// + /// Gets an Azure DevOps REST API access token. + /// + string AccessToken { get; } + + /// + /// Gets a connection to Azure DevOps Services. + /// + VssConnection GetVssConnection(string azdoOrg); +} + +public class AzdoAuthProvider : IAzdoAuthProvider { /// /// This scope provides access to Azure DevOps Services REST API. @@ -19,11 +33,13 @@ public class AzdoAuthProvider private const string Scope = "499b84ac-1321-427f-aa17-267ca6975798/.default"; private readonly ILogger _logger; + private readonly IEnvironmentService _environmentService; private readonly Lazy _accessToken; - public AzdoAuthProvider(ILogger logger) + public AzdoAuthProvider(ILogger logger, IEnvironmentService environmentService) { _logger = logger; + _environmentService = environmentService; _accessToken = new(GetAccessTokenInternal); } @@ -54,13 +70,13 @@ public VssConnection GetVssConnection(string azdoOrg) private string GetAccessTokenInternal() { - var accessToken = Environment.GetEnvironmentVariable("SYSTEM_ACCESSTOKEN"); + var accessToken = _environmentService.GetSystemAccessToken(); if (!string.IsNullOrWhiteSpace(accessToken)) { return accessToken; } - _logger.LogInformation("Environment variable SYSTEM_ACCESSTOKEN was not set." + _logger.LogWarning("Environment variable SYSTEM_ACCESSTOKEN was not set." + " Did you forget to explicitly pass it in to your pipeline step?" + " See https://learn.microsoft.com/azure/devops/pipelines/build/variables#systemaccesstoken"); @@ -70,3 +86,9 @@ private string GetAccessTokenInternal() return accessToken; } } + +internal static class AzdoAuthProviderExtensions +{ + public static IServiceCollection AddAzdoAuthProvider(this IServiceCollection services) => + services.AddSingleton(); +} diff --git a/eng/update-dependencies/AzdoHttpClient.cs b/eng/update-dependencies/AzdoHttpClient.cs index 65667ed67d..32fcf243d2 100644 --- a/eng/update-dependencies/AzdoHttpClient.cs +++ b/eng/update-dependencies/AzdoHttpClient.cs @@ -1,21 +1,18 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -using System; -using System.Net.Http; using System.Net.Http.Headers; using System.Text; -using System.Threading; -using System.Threading.Tasks; +using Microsoft.Extensions.DependencyInjection; namespace Dotnet.Docker; internal class AzdoHttpClient { - private readonly AzdoAuthProvider _azdoAuthProvider; + private readonly IAzdoAuthProvider _azdoAuthProvider; private readonly HttpClient _httpClient; - public AzdoHttpClient(AzdoAuthProvider azdoAuthProvider, HttpClient httpClient) + public AzdoHttpClient(IAzdoAuthProvider azdoAuthProvider, HttpClient httpClient) { _azdoAuthProvider = azdoAuthProvider; _httpClient = httpClient; @@ -31,3 +28,17 @@ public AzdoHttpClient(AzdoAuthProvider azdoAuthProvider, HttpClient httpClient) public async Task GetAsync(string requestUri, CancellationToken ct = default) => await _httpClient.GetAsync(requestUri, ct); } + +internal static class AzdoHttpClientExtensions +{ + public static IServiceCollection AddAzdoHttpClient(this IServiceCollection services) + { + // Add dependencies + services.AddHttpClient(); + services.AddAzdoAuthProvider(); + + // Add self + services.AddHttpClient(); + return services; + } +} diff --git a/eng/update-dependencies/AzurePipelinesHelper.cs b/eng/update-dependencies/AzurePipelinesHelper.cs deleted file mode 100644 index 71e33c8754..0000000000 --- a/eng/update-dependencies/AzurePipelinesHelper.cs +++ /dev/null @@ -1,24 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. - -namespace Dotnet.Docker; - -/// -/// Helper methods for working in an Azure Pipelines environment. -/// -internal static class AzurePipelinesHelper -{ - // List of predefined Azure Pipelines variables: - // https://learn.microsoft.com/azure/devops/pipelines/build/variables#system-variables - - /// - /// Gets the current build ID if running in Azure Pipelines, or an empty string otherwise. - /// - public static string GetBuildId() => Environment.GetEnvironmentVariable("BUILD_BUILDID") ?? ""; - - /// - /// Determines if the code is running in an Azure Pipelines environment. - /// - public static bool IsRunningInAzurePipelines() => - !string.IsNullOrEmpty(Environment.GetEnvironmentVariable("TF_BUILD")); -} diff --git a/eng/update-dependencies/BuildLabelService.cs b/eng/update-dependencies/BuildLabelService.cs new file mode 100644 index 0000000000..1ce40c1710 --- /dev/null +++ b/eng/update-dependencies/BuildLabelService.cs @@ -0,0 +1,46 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.DependencyInjection.Extensions; + +namespace Dotnet.Docker; + +/// +/// Service for adding build tags to Azure Pipelines runs. +/// +public interface IBuildLabelService +{ + /// + /// Adds one or more build tags to the current Azure Pipelines run. + /// + /// + /// When not running in Azure Pipelines, the logging directives are harmlessly echoed. + /// + void AddBuildTags(params IEnumerable tags); +} + +/// +internal sealed class BuildLabelService(TextWriter output) : IBuildLabelService +{ + // Azure Pipelines logging command format: + // https://learn.microsoft.com/azure/devops/pipelines/scripts/logging-commands + + /// + public void AddBuildTags(params IEnumerable tags) + { + foreach (var tag in tags) + { + output.WriteLine($"##vso[build.addbuildtag]{tag}"); + } + } +} + +internal static class BuildLabelServiceExtensions +{ + public static IServiceCollection AddBuildLabelService(this IServiceCollection services) + { + services.TryAddSingleton(new BuildLabelService(Console.Out)); + return services; + } +} diff --git a/eng/update-dependencies/CreatePullRequestOptionsExtensions.cs b/eng/update-dependencies/CreatePullRequestOptionsExtensions.cs index 237555fd0d..2b426a07f8 100644 --- a/eng/update-dependencies/CreatePullRequestOptionsExtensions.cs +++ b/eng/update-dependencies/CreatePullRequestOptionsExtensions.cs @@ -50,17 +50,19 @@ public static (string Name, string Email) GetCommitterIdentity(this CreatePullRe /// /// Should be something short but descriptive, like "sync" or "update-deps-int-{buildNumber}". /// + /// + /// Optional build ID to append as a suffix. When running in Azure Pipelines, callers should + /// pass the build ID to make the branch name unique across pipeline runs. + /// /// /// A valid branch name that is descriptive but not guaranteed to be unique. /// - public static string CreatePrBranchName(this CreatePullRequestOptions options, string name) + public static string CreatePrBranchName(this CreatePullRequestOptions options, string name, string buildId = "") { ArgumentException.ThrowIfNullOrEmpty(options.PrBranchPrefix); ArgumentException.ThrowIfNullOrEmpty(options.TargetBranch); - var buildIdSuffix = AzurePipelinesHelper.IsRunningInAzurePipelines() - ? $"-{AzurePipelinesHelper.GetBuildId()}" - : string.Empty; + var buildIdSuffix = string.IsNullOrWhiteSpace(buildId) ? string.Empty : $"-{buildId}"; var sanitizedTargetBranch = options.TargetBranch.Replace('/', '-'); var prefix = options.PrBranchPrefix.TrimEnd('/'); diff --git a/eng/update-dependencies/EnvironmentService.cs b/eng/update-dependencies/EnvironmentService.cs new file mode 100644 index 0000000000..a80052a2e1 --- /dev/null +++ b/eng/update-dependencies/EnvironmentService.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. + +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.DependencyInjection.Extensions; +using Microsoft.VisualStudio.Services.Profile; + +namespace Dotnet.Docker; + +/// +/// Provides access to environment variables and runtime context. +/// +public interface IEnvironmentService +{ + /// + /// Gets the Azure DevOps system access token from the SYSTEM_ACCESSTOKEN environment variable. + /// + string? GetSystemAccessToken(); + + /// + /// Gets the current build ID if running in Azure Pipelines, or null otherwise. + /// + string? GetBuildId(); + + /// + /// Determines if the code is running in an Azure Pipelines environment. + /// + bool IsRunningInAzurePipelines(); +} + +/// +internal sealed class EnvironmentService : IEnvironmentService +{ + // List of predefined Azure Pipelines variables: + // https://learn.microsoft.com/azure/devops/pipelines/build/variables#system-variables + + /// + public string? GetSystemAccessToken() => + Environment.GetEnvironmentVariable("SYSTEM_ACCESSTOKEN"); + + /// + public string? GetBuildId() => + IsRunningInAzurePipelines() + ? Environment.GetEnvironmentVariable("BUILD_BUILDID") + : null; + + /// + public bool IsRunningInAzurePipelines() => + !string.IsNullOrEmpty(Environment.GetEnvironmentVariable("TF_BUILD")); +} + +internal static class EnvironmentServiceExtensions +{ + public static IServiceCollection AddEnvironmentService(this IServiceCollection services) + { + services.TryAddSingleton(); + return services; + } +} diff --git a/eng/update-dependencies/FromStagingPipelineCommand.cs b/eng/update-dependencies/FromStagingPipelineCommand.cs index f1ed445f2d..7e5ede5e77 100644 --- a/eng/update-dependencies/FromStagingPipelineCommand.cs +++ b/eng/update-dependencies/FromStagingPipelineCommand.cs @@ -17,20 +17,29 @@ internal partial class FromStagingPipelineCommand : BaseCommand _logger; - private readonly PipelineArtifactProvider _pipelineArtifactProvider; + private readonly IPipelineArtifactProvider _pipelineArtifactProvider; + private readonly IPipelinesService _pipelinesService; private readonly IInternalVersionsService _internalVersionsService; + private readonly IEnvironmentService _environmentService; + private readonly IBuildLabelService _buildLabelService; private readonly Func> _createGitRepoContextAsync; public FromStagingPipelineCommand( ILogger logger, - PipelineArtifactProvider pipelineArtifactProvider, + IPipelineArtifactProvider pipelineArtifactProvider, + IPipelinesService pipelinesService, IInternalVersionsService internalVersionsService, + IEnvironmentService environmentService, + IBuildLabelService buildLabelService, IGitRepoHelperFactory gitRepoHelperFactory) { _logger = logger; _pipelineArtifactProvider = pipelineArtifactProvider; + _pipelinesService = pipelinesService; _internalVersionsService = internalVersionsService; - _createGitRepoContextAsync = options => GitRepoContext.CreateAsync(_logger, gitRepoHelperFactory, options); + _environmentService = environmentService; + _buildLabelService = buildLabelService; + _createGitRepoContextAsync = options => GitRepoContext.CreateAsync(_logger, gitRepoHelperFactory, options, _environmentService); } public override async Task ExecuteAsync(FromStagingPipelineOptions options) @@ -42,8 +51,17 @@ public override async Task ExecuteAsync(FromStagingPipelineOptions options) var gitRepoContext = await _createGitRepoContextAsync(options); _logger.LogInformation( - "Updating dependencies based on staging pipeline run ID {options.StagingPipelineRunId}", - options.StagingPipelineRunId); + "Updating dependencies based on stage container {StageContainer}", + options.StageContainer); + + var stagingPipelineRunId = options.GetStagingPipelineRunId(); + + // Log staging pipeline tags for diagnostic purposes + var stagingPipelineTags = await _pipelinesService.GetBuildTagsAsync( + options.AzdoOrganization, + options.AzdoProject, + stagingPipelineRunId); + _logger.LogInformation("Staging pipeline tags: {Tags}", string.Join(", ", stagingPipelineTags)); string internalBaseUrl = string.Empty; if (options.Internal) @@ -53,28 +71,31 @@ public override async Task ExecuteAsync(FromStagingPipelineOptions options) $"{FromStagingPipelineOptions.StagingStorageAccountOption} must be set when using the {FromStagingPipelineOptions.InternalOption} option." ); - // Each pipeline run has a corresponding blob container named stage-${options.StagingPipelineRunId}. // Release metadata is stored in metadata/ReleaseManifest.json. // Release assets are stored individually under in assets/shipping/assets/[Sdk|Runtime|aspnetcore|...]. // Full example: https://dotnetstagetest.blob.core.windows.net/stage-2XXXXXX/assets/shipping/assets/Runtime/10.0.0-preview.N.XXXXX.YYY/dotnet-runtime-10.0.0-preview.N.XXXXX.YYY-linux-arm64.tar.gz + _buildLabelService.AddBuildTags($"Container - {options.StageContainer}"); internalBaseUrl = NormalizeStorageAccountUrl(options.StagingStorageAccount) - + $"/stage-{options.StagingPipelineRunId}/assets/shipping/assets"; + + $"/{options.StageContainer}/assets/shipping/assets"; } var releaseConfig = await _pipelineArtifactProvider.GetReleaseConfigAsync( options.AzdoOrganization, options.AzdoProject, - options.StagingPipelineRunId); + stagingPipelineRunId); string dotnetProductVersion = VersionHelper.ResolveProductVersion(releaseConfig.RuntimeBuild); DotNetVersion dotNetVersion = DotNetVersion.Parse(releaseConfig.RuntimeBuild); string majorMinorVersionString = dotNetVersion.ToString(2); - // Record pipeline run ID for this internal version, for later use by sync-internal-release command - _internalVersionsService.RecordInternalStagingBuild( - repoRoot: gitRepoContext.LocalRepoPath, - dotNetVersion: dotNetVersion, - stagingPipelineRunId: options.StagingPipelineRunId); + if (options.Internal) + { + // Record stage container for this internal version, for later use by sync-internal-release command + _internalVersionsService.RecordInternalStagingBuild( + repoRoot: gitRepoContext.LocalRepoPath, + dotNetVersion: dotNetVersion, + stageContainer: options.StageContainer); + } var productVersions = (options.Internal, releaseConfig.SdkOnly) switch { @@ -117,10 +138,10 @@ public override async Task ExecuteAsync(FromStagingPipelineOptions options) string.Join(", ", productVersions.Select(kv => $"{kv.Key}: {kv.Value}"))); // Example build URL: https://dev.azure.com///_build/results?buildId= - var buildUrl = $"{options.AzdoOrganization}/{options.AzdoProject}/_build/results?buildId={options.StagingPipelineRunId}"; + var buildUrl = $"{options.AzdoOrganization}/{options.AzdoProject}/_build/results?buildId={stagingPipelineRunId}"; _logger.LogInformation( - "Applying internal build {BuildNumber} ({BuildUrl})", - options.StagingPipelineRunId, buildUrl); + "Applying internal build {StageContainer} ({BuildUrl})", + options.StageContainer, buildUrl); _logger.LogInformation( "Ignore any git-related logging output below, because git " @@ -140,9 +161,9 @@ public override async Task ExecuteAsync(FromStagingPipelineOptions options) if (exitCode != 0) { _logger.LogError( - "Failed to apply staging pipeline run ID {StagingPipelineRunId}. " + "Failed to apply stage container {StageContainer}. " + "Command exited with code {ExitCode}.", - options.StagingPipelineRunId, exitCode); + options.StageContainer, exitCode); return exitCode; } @@ -159,7 +180,7 @@ public override async Task ExecuteAsync(FromStagingPipelineOptions options) {string.Join(Environment.NewLine, newVersionsList)} - These versions are from .NET staging pipeline run [#{options.StagingPipelineRunId}]({buildUrl}). + These versions are from .NET staging pipeline run [{options.StageContainer}]({buildUrl}). """; await gitRepoContext.CommitAndCreatePullRequest(commitMessage, prTitle, prBody); @@ -209,7 +230,8 @@ private record GitRepoContext(string LocalRepoPath, CommitAndCreatePullRequest C public static async Task CreateAsync( ILogger logger, IGitRepoHelperFactory gitRepoFactory, - FromStagingPipelineOptions options) + FromStagingPipelineOptions options, + IEnvironmentService environmentService) { CommitAndCreatePullRequest createPullRequest; string localRepoPath; @@ -218,7 +240,8 @@ public static async Task CreateAsync( { var remoteUrl = options.GetAzdoRepoUrl(); var targetBranch = options.TargetBranch; - var prBranch = options.CreatePrBranchName($"update-deps-int-{options.StagingPipelineRunId}"); + var buildId = environmentService.GetBuildId() ?? ""; + var prBranch = options.CreatePrBranchName($"update-deps-int-{options.StageContainer}", buildId); var committer = options.GetCommitterIdentity(); // Clone the repo and configure git identity for commits diff --git a/eng/update-dependencies/FromStagingPipelineOptions.cs b/eng/update-dependencies/FromStagingPipelineOptions.cs index d5f9ef93b1..d2bf427656 100644 --- a/eng/update-dependencies/FromStagingPipelineOptions.cs +++ b/eng/update-dependencies/FromStagingPipelineOptions.cs @@ -2,18 +2,19 @@ // The .NET Foundation licenses this file to you under the MIT license. using System.CommandLine; +using System.Text.RegularExpressions; namespace Dotnet.Docker; -internal record FromStagingPipelineOptions : CreatePullRequestOptions, IOptions +internal partial record FromStagingPipelineOptions : CreatePullRequestOptions, IOptions { public const string StagingStorageAccountOptionName = "--staging-storage-account"; public const string InternalOption = "--internal"; /// - /// The staging pipeline run ID to use as a source for the update. + /// The stage container name (e.g., "stage-1234567") to use as a source for the update. /// - public required int StagingPipelineRunId { get; init; } + public required string StageContainer { get; init; } /// /// Whether or not to use the internal versions of the staged build. @@ -33,10 +34,10 @@ internal record FromStagingPipelineOptions : CreatePullRequestOptions, IOptions public static new List Arguments { get; } = [ - new Argument("staging-pipeline-run-id") + new Argument("stage-container") { Arity = ArgumentArity.ExactlyOne, - Description = "The staging pipeline run ID to use as a source for the update" + Description = "The stage container name to use as a source for the update (e.g., 'stage-1234567')" }, ..CreatePullRequestOptions.Arguments, ]; @@ -67,3 +68,26 @@ internal record FromStagingPipelineOptions : CreatePullRequestOptions, IOptions ..CreatePullRequestOptions.Options, ]; } + +internal static partial class StagingPipelineOptionsExtensions +{ + [GeneratedRegex(@"^stage-(\d+)$")] + private static partial Regex StageContainerRegex { get; } + + /// + /// Extracts the staging pipeline run ID from the stage container name. + /// + /// + /// Thrown if the stage container name is not in the expected format. + /// + public static int GetStagingPipelineRunId(this FromStagingPipelineOptions options) + { + var match = StageContainerRegex.Match(options.StageContainer); + if (!match.Success) + { + throw new ArgumentException( + $"Invalid stage container name '{options.StageContainer}'. Expected format: 'stage-{{buildId}}' (e.g., 'stage-1234567')"); + } + return int.Parse(match.Groups[1].Value); + } +} diff --git a/eng/update-dependencies/Model/Release/ReleaseConfig.cs b/eng/update-dependencies/Model/Release/ReleaseConfig.cs index 442527cd1c..adbc15398d 100644 --- a/eng/update-dependencies/Model/Release/ReleaseConfig.cs +++ b/eng/update-dependencies/Model/Release/ReleaseConfig.cs @@ -1,8 +1,7 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -using System; -using System.Collections.Generic; +using System.Diagnostics.CodeAnalysis; using System.Text.Json; using System.Text.Json.Serialization; @@ -26,7 +25,7 @@ internal record ReleaseConfig public required string Runtime { get; init; } - public required string Asp { get; init; } + public string? Asp { get; init; } public required List Sdks { get; init; } @@ -34,13 +33,13 @@ internal record ReleaseConfig public required string RuntimeBuild { get; init; } [JsonPropertyName("Asp_Build")] - public required string AspBuild { get; init; } + public string? AspBuild { get; init; } [JsonPropertyName("Sdk_Builds")] public required List SdkBuilds { get; init; } [JsonPropertyName("Release_Date")] - public required string ReleaseDate { get; init; } + public string? ReleaseDate { get; init; } public required bool Security { get; init; } @@ -49,6 +48,8 @@ internal record ReleaseConfig public required bool Internal { get; init; } + [MemberNotNullWhen(false, nameof(Asp))] + [MemberNotNullWhen(false, nameof(AspBuild))] public required bool SdkOnly { get; init; } private static readonly JsonSerializerOptions s_jsonOptions = new() diff --git a/eng/update-dependencies/PipelineArtifactProvider.cs b/eng/update-dependencies/PipelineArtifactProvider.cs index c3358bee92..8b7fc2a542 100644 --- a/eng/update-dependencies/PipelineArtifactProvider.cs +++ b/eng/update-dependencies/PipelineArtifactProvider.cs @@ -1,10 +1,9 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -using System; -using System.Collections.Generic; -using System.Threading.Tasks; using Dotnet.Docker.Model.Release; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.DependencyInjection.Extensions; using Microsoft.Extensions.Logging; using Microsoft.TeamFoundation.Build.WebApi; @@ -21,13 +20,24 @@ namespace Dotnet.Docker; /// internal record PipelineArtifactFile(string ArtifactName, string SubPath); +internal interface IPipelineArtifactProvider +{ + /// + /// Gets the .NET release config from a run of the staging pipeline. + /// + Task GetReleaseConfigAsync( + string azdoOrganization, + string azdoProject, + int stagingPipelineRunId); +} + internal class PipelineArtifactProvider( - AzdoAuthProvider azdoAuthProvider, + IPipelinesService pipelinesService, ILogger logger, - AzdoHttpClient azdoHttpClient -) + AzdoHttpClient azdoHttpClient) + : IPipelineArtifactProvider { - private readonly AzdoAuthProvider _azdoAuthProvider = azdoAuthProvider; + private readonly IPipelinesService _pipelinesService = pipelinesService; private readonly ILogger _logger = logger; private readonly AzdoHttpClient _azdoHttpClient = azdoHttpClient; @@ -82,9 +92,6 @@ private async Task GetArtifactTextContentAsync( throw new ArgumentException("--azdo-project is required", nameof(azdoProject)); } - var connection = _azdoAuthProvider.GetVssConnection(azdoOrganization); - var buildsClient = connection.GetClient(); - List exceptions = []; foreach (PipelineArtifactFile pipelineArtifact in artifactsToTry) @@ -96,7 +103,8 @@ private async Task GetArtifactTextContentAsync( try { // Attempt to get the artifact for the specified pipeline run - BuildArtifact resolvedArtifact = await buildsClient.GetArtifactAsync( + BuildArtifact resolvedArtifact = await _pipelinesService.GetArtifactAsync( + azdoOrganization, azdoProject, stagingPipelineRunId, pipelineArtifact.ArtifactName); @@ -127,3 +135,14 @@ private async Task GetArtifactTextContentAsync( throw new AggregateException("Failed to retrieve artifact content.", exceptions); } } + +internal static class PipelineArtifactProviderExtensions +{ + public static IServiceCollection AddPipelineArtifactProvider(this IServiceCollection services) + { + services.AddPipelinesService(); + services.AddAzdoHttpClient(); + services.TryAddSingleton(); + return services; + } +} diff --git a/eng/update-dependencies/PipelinesService.cs b/eng/update-dependencies/PipelinesService.cs new file mode 100644 index 0000000000..054b2f9ccd --- /dev/null +++ b/eng/update-dependencies/PipelinesService.cs @@ -0,0 +1,56 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +using Microsoft.Extensions.DependencyInjection; +using Microsoft.TeamFoundation.Build.WebApi; + +namespace Dotnet.Docker; + +internal interface IPipelinesService +{ + /// + /// Gets a build artifact from an Azure DevOps pipeline run. + /// + Task GetArtifactAsync(string azdoOrg, string azdoProject, int buildId, string artifactName); + + /// + /// Gets the build tags from an Azure DevOps pipeline run. + /// + Task> GetBuildTagsAsync(string azdoOrg, string azdoProject, int buildId); +} + +/// +internal sealed class PipelinesService(IAzdoAuthProvider azdoAuthProvider) : IPipelinesService +{ + private readonly IAzdoAuthProvider _azdoAuthProvider = azdoAuthProvider; + + /// + public async Task GetArtifactAsync(string azdoOrg, string azdoProject, int buildId, string artifactName) + { + var client = GetBuildHttpClient(azdoOrg); + return await client.GetArtifactAsync(azdoProject, buildId, artifactName); + } + + /// + public async Task> GetBuildTagsAsync(string azdoOrg, string azdoProject, int buildId) + { + var client = GetBuildHttpClient(azdoOrg); + return await client.GetBuildTagsAsync(azdoProject, buildId); + } + + private BuildHttpClient GetBuildHttpClient(string azdoOrg) + { + var connection = _azdoAuthProvider.GetVssConnection(azdoOrg); + return connection.GetClient(); + } +} + +internal static class PipelinesServiceExtensions +{ + public static IServiceCollection AddPipelinesService(this IServiceCollection services) + { + services.AddAzdoAuthProvider(); + services.AddSingleton(); + return services; + } +} diff --git a/eng/update-dependencies/Program.cs b/eng/update-dependencies/Program.cs index 05e01a57e9..3ade33c299 100644 --- a/eng/update-dependencies/Program.cs +++ b/eng/update-dependencies/Program.cs @@ -124,11 +124,9 @@ services.AddKeyedSingleton(BuildRepo.Vmr); services.AddKeyedSingleton(BuildRepo.Aspire); - services.AddHttpClient(); - services.AddHttpClient(); - - services.AddSingleton(); - services.AddSingleton(); + services.AddEnvironmentService(); + services.AddBuildLabelService(); + services.AddPipelineArtifactProvider(); services.AddSingleton(); // Dependencies that can be updated using the FromComponentCommand diff --git a/eng/update-dependencies/Sync/IInternalVersionsService.cs b/eng/update-dependencies/Sync/IInternalVersionsService.cs index 21ed9babf9..aebaf4ca5d 100644 --- a/eng/update-dependencies/Sync/IInternalVersionsService.cs +++ b/eng/update-dependencies/Sync/IInternalVersionsService.cs @@ -17,19 +17,19 @@ namespace Dotnet.Docker.Sync; internal interface IInternalVersionsService { /// - /// Records a staging pipeline run ID in the repo. + /// Records a stage container in the repo. /// /// - /// This will only store one staging pipeline run ID per . + /// This will only store one stage container per . /// If a version already exists for the same dockerfileVersion, it will be /// overwritten. /// /// .NET build or product version - /// the build ID of the staging pipeline run - void RecordInternalStagingBuild(string repoRoot, DotNetVersion dotNetVersion, int stagingPipelineRunId); + /// the stage container name (e.g., "stage-1234567") + void RecordInternalStagingBuild(string repoRoot, DotNetVersion dotNetVersion, string stageContainer); /// /// Gets any previously recorded internal staging builds in the repo. /// - InternalStagingBuilds GetInternalStagingBuilds(string repoRoot); + InternalStageContainers GetInternalStagingBuilds(string repoRoot); } diff --git a/eng/update-dependencies/Sync/InternalStagingBuilds.cs b/eng/update-dependencies/Sync/InternalStageContainers.cs similarity index 59% rename from eng/update-dependencies/Sync/InternalStagingBuilds.cs rename to eng/update-dependencies/Sync/InternalStageContainers.cs index 7a6d4c428a..570327737b 100644 --- a/eng/update-dependencies/Sync/InternalStagingBuilds.cs +++ b/eng/update-dependencies/Sync/InternalStageContainers.cs @@ -7,21 +7,20 @@ namespace Dotnet.Docker.Sync; /// -/// Records information about what internal staging pipeline run IDs were used -/// for which .NET Dockerfile versions. +/// Records information about what stage containers were used for which .NET Dockerfile versions. /// /// -/// Mapping of Major.Minor .NET version to staging pipeline run ID. +/// Mapping of Major.Minor .NET version to stage container name. /// -internal sealed record InternalStagingBuilds(ImmutableDictionary Versions) +internal sealed record InternalStageContainers(ImmutableDictionary Versions) { /// - /// Parses from lines of text. + /// Parses from lines of text. /// /// - /// Each line should be formatted as: = + /// Each line should be formatted as: <dockerfileVersion>=<stageContainer> /// - public static InternalStagingBuilds Parse(IEnumerable lines) + public static InternalStageContainers Parse(IEnumerable lines) { var versions = lines .Select(line => line.Split('=', 2)) @@ -30,20 +29,20 @@ public static InternalStagingBuilds Parse(IEnumerable lines) // Reduce the version to major.minor only. // If we don't, we could end up with multiple entries for the same version. parts => DotNetVersion.Parse(parts[0]).ToMajorMinorVersion(), - parts => int.Parse(parts[1])); + parts => parts[1]); - return new InternalStagingBuilds(versions); + return new InternalStageContainers(versions); } /// - /// Returns a new with the specified + /// Returns a new with the specified /// version added. /// - public InternalStagingBuilds Add(DotNetVersion dotNetVersion, int stagingPipelineRunId) => - this with { Versions = Versions.SetItem(dotNetVersion.ToMajorMinorVersion(), stagingPipelineRunId) }; + public InternalStageContainers Add(DotNetVersion dotNetVersion, string stageContainer) => + this with { Versions = Versions.SetItem(dotNetVersion.ToMajorMinorVersion(), stageContainer) }; // Internal versions file should have one line per dockerfileVersion, and - // each line should be formatted as: = + // each line should be formatted as: = public override string ToString() => string.Join(Environment.NewLine, Versions diff --git a/eng/update-dependencies/Sync/InternalVersionsService.cs b/eng/update-dependencies/Sync/InternalVersionsService.cs index eca3136257..8d78055f80 100644 --- a/eng/update-dependencies/Sync/InternalVersionsService.cs +++ b/eng/update-dependencies/Sync/InternalVersionsService.cs @@ -9,28 +9,28 @@ namespace Dotnet.Docker.Sync; /// internal sealed class InternalVersionsService : IInternalVersionsService { - private const string InternalVersionsFileName = "internal-versions.txt"; + private const string InternalVersionsFileName = "stage-containers.txt"; /// - public InternalStagingBuilds GetInternalStagingBuilds(string repoRoot) + public InternalStageContainers GetInternalStagingBuilds(string repoRoot) { var internalVersionFile = Path.Combine(repoRoot, InternalVersionsFileName); try { var fileContents = File.ReadAllLines(internalVersionFile); - return InternalStagingBuilds.Parse(fileContents); + return InternalStageContainers.Parse(fileContents); } catch (FileNotFoundException) { - return new InternalStagingBuilds(ImmutableDictionary.Empty); + return new InternalStageContainers(ImmutableDictionary.Empty); } } /// - public void RecordInternalStagingBuild(string repoRoot, DotNetVersion dotNetVersion, int stagingPipelineRunId) + public void RecordInternalStagingBuild(string repoRoot, DotNetVersion dotNetVersion, string stageContainerName) { - // Internal versions file should have one line per dockerfileVersion - // Each line should be formatted as: = + // Stage containers file should have one line per dockerfileVersion + // Each line should be formatted as: = // // The preferable way to do this would be to record the version in // manifest.versions.json, however that would require one of the following: @@ -39,7 +39,8 @@ public void RecordInternalStagingBuild(string repoRoot, DotNetVersion dotNetVers // 2) lots of regex JSON manipulation which is error-prone and harder to maintain // // So for now, the separate file and format is a compromise. - var builds = GetInternalStagingBuilds(repoRoot).Add(dotNetVersion, stagingPipelineRunId); + var builds = GetInternalStagingBuilds(repoRoot); + builds = builds.Add(dotNetVersion, stageContainerName); var internalVersionFile = Path.Combine(repoRoot, InternalVersionsFileName); File.WriteAllText(internalVersionFile, builds.ToString()); } diff --git a/eng/update-dependencies/Sync/SyncInternalReleaseCommand.cs b/eng/update-dependencies/Sync/SyncInternalReleaseCommand.cs index 32bd07ae20..b2d342eece 100644 --- a/eng/update-dependencies/Sync/SyncInternalReleaseCommand.cs +++ b/eng/update-dependencies/Sync/SyncInternalReleaseCommand.cs @@ -22,12 +22,14 @@ internal sealed class SyncInternalReleaseCommand( IGitRepoHelperFactory gitRepoHelperFactory, ICommand updateFromStagingPipeline, IInternalVersionsService internalVersionsService, + IEnvironmentService environmentService, ILogger logger ) : BaseCommand { private readonly IGitRepoHelperFactory _gitRepoHelperFactory = gitRepoHelperFactory; private readonly ICommand _updateFromStagingPipeline = updateFromStagingPipeline; private readonly IInternalVersionsService _internalVersionsService = internalVersionsService; + private readonly IEnvironmentService _environmentService = environmentService; private readonly ILogger _logger = logger; public override async Task ExecuteAsync(SyncInternalReleaseOptions options) @@ -93,6 +95,8 @@ await repo.Remote.CreateRemoteBranchAsync( ancestorRef: $"origin/{options.TargetBranch}", descendantRef: $"origin/{options.SourceBranch}"); + var buildId = _environmentService.GetBuildId() ?? ""; + if (targetIsAncestorOfSource) { _logger.LogInformation( @@ -100,7 +104,7 @@ await repo.Remote.CreateRemoteBranchAsync( options.TargetBranch, options.SourceBranch); // "ff" here is an abbreviation for "fast-forward" - just want to keep branch names short - var fastForwardPrBranch = options.CreatePrBranchName("ff"); + var fastForwardPrBranch = options.CreatePrBranchName("ff", buildId); await repo.Remote.CreateRemoteBranchAsync( newBranch: fastForwardPrBranch, baseBranch: options.SourceBranch); @@ -142,7 +146,7 @@ await repo.Remote.CreatePullRequestAsync(new( var internalBuilds = _internalVersionsService.GetInternalStagingBuilds(repo.Local.LocalPath); // Reset the target branch to match the source branch. - var prBranchName = options.CreatePrBranchName(name: "sync"); + var prBranchName = options.CreatePrBranchName(name: "sync", buildId: buildId); await repo.Local.CreateAndCheckoutLocalBranchAsync(prBranchName); await repo.Local.RestoreAsync(source: sourceSha); await repo.Local.StageAsync("."); @@ -150,13 +154,13 @@ await repo.Local.CommitAsync( message: $"Reset {options.TargetBranch} to match {options.SourceBranch} commit {sourceSha}", author: commitAuthor); - // Re-apply internal .NET version updates for each recorded staging pipeline run ID. - foreach (var (dockerfileVersion, stagingPipelineRunId) in internalBuilds.Versions) + // Re-apply internal .NET version updates for each recorded stage container. + foreach (var (dockerfileVersion, stageContainer) in internalBuilds.Versions) { await ApplyInternalBuildAsync( options: options, localRepo: repo.Local, - stagingPipelineRunId: stagingPipelineRunId, + stageContainer: stageContainer, stagingStorageAccount: options.StagingStorageAccount, committerIdentity: commitAuthor); } @@ -176,8 +180,8 @@ await repo.Remote.CreatePullRequestAsync(new( /// /// Apply an internal build by invoking the FromStagingPipelineCommand. /// - /// - /// ID of the Azure DevOps pipeline run to get build information from. + /// + /// Stage container name (e.g., "stage-1234567") to get build information from. /// /// /// The identity to use when committing changes. @@ -185,7 +189,7 @@ await repo.Remote.CreatePullRequestAsync(new( private async Task ApplyInternalBuildAsync( SyncInternalReleaseOptions options, ILocalGitRepoHelper localRepo, - int stagingPipelineRunId, + string stageContainer, string stagingStorageAccount, (string Name, string Email) committerIdentity) { @@ -197,7 +201,7 @@ private async Task ApplyInternalBuildAsync( { RepoRoot = localRepo.LocalPath, Internal = true, - StagingPipelineRunId = stagingPipelineRunId, + StageContainer = stageContainer, StagingStorageAccount = stagingStorageAccount, AzdoOrganization = options.AzdoOrganization, AzdoProject = options.AzdoProject, @@ -208,12 +212,12 @@ private async Task ApplyInternalBuildAsync( if (exitCode != 0) { throw new InvalidOperationException( - $"Failed to apply internal build {stagingPipelineRunId}. Command exited with code {exitCode}."); + $"Failed to apply internal build {stageContainer}. Command exited with code {exitCode}."); } - _logger.LogInformation("Finished applying internal build {BuildNumber}", stagingPipelineRunId); + _logger.LogInformation("Finished applying internal build {StageContainer}", stageContainer); await localRepo.StageAsync("."); - await localRepo.CommitAsync($"Update dependencies from build {stagingPipelineRunId}", committerIdentity); + await localRepo.CommitAsync($"Update dependencies from {stageContainer}", committerIdentity); } } diff --git a/manifest.versions.json b/manifest.versions.json index 9b03f85f39..45af85dafe 100644 --- a/manifest.versions.json +++ b/manifest.versions.json @@ -37,7 +37,7 @@ "aspnet|10.0|build-version": "10.0.2", "aspnet-composite|10.0|build-version": "$(aspnet|10.0|build-version)", - "aspnet|11.0|build-version": "11.0.0-preview.1.26103.109", + "aspnet|11.0|build-version": "11.0.0-preview.1.26104.118", "aspnet-composite|11.0|build-version": "$(aspnet|11.0|build-version)", "chisel|latest|build-version": "v1.3.0", @@ -123,8 +123,8 @@ "libssl|noble": "3t64", "libssl|resolute": "3t64", - "mingit|latest|x64|url": "https://github.com/git-for-windows/git/releases/download/v2.52.0.windows.1/MinGit-2.52.0-64-bit.zip", - "mingit|latest|x64|sha": "f42a561840627747ad48e6ece05a14093292d31f3393a401a7f7c780ee7695c2", + "mingit|latest|x64|url": "https://github.com/git-for-windows/git/releases/download/v2.53.0.windows.1/MinGit-2.53.0-64-bit.zip", + "mingit|latest|x64|sha": "82b562c918ec87b2ef5316ed79bb199e3a25719bb871a0f10294acf21ebd08cd", "mingit|8.0|x64|url": "$(mingit|latest|x64|url)", "mingit|8.0|x64|sha": "$(mingit|latest|x64|sha)", "mingit|9.0|x64|url": "$(mingit|latest|x64|url)", @@ -216,7 +216,7 @@ "runtime|8.0|build-version": "8.0.23", "runtime|9.0|build-version": "9.0.12", "runtime|10.0|build-version": "10.0.2", - "runtime|11.0|build-version": "11.0.0-preview.1.26103.109", + "runtime|11.0|build-version": "11.0.0-preview.1.26104.118", "sdk|8.0|build-version": "8.0.417", "sdk|8.0|product-version": "8.0.417", @@ -245,7 +245,7 @@ "sdk|10.0|fixed-tag": "$(sdk|10.0|product-version)", "sdk|10.0|minor-tag": "$(dotnet|10.0|minor-tag)", - "sdk|11.0|build-version": "11.0.100-preview.1.26103.109", + "sdk|11.0|build-version": "11.0.100-preview.1.26104.118", "sdk|11.0|product-version": "11.0.100-preview.1", "sdk|11.0|base-url|main": "$(dotnet|11.0|base-url|main)", "sdk|11.0|base-url|nightly": "$(dotnet|11.0|base-url|nightly)", @@ -255,7 +255,7 @@ "sdk|11.0|minor-tag": "$(dotnet|11.0|minor-tag)", "syft|repo": "anchore/syft", - "syft|version": "v1.40.0", + "syft|version": "v1.41.1", "syft|tag": "$(syft|version)-debug" } } diff --git a/src/aspnet/11.0/alpine3.23-composite-extra/amd64/Dockerfile b/src/aspnet/11.0/alpine3.23-composite-extra/amd64/Dockerfile index 162a2e6cc4..08ea2d84c8 100644 --- a/src/aspnet/11.0/alpine3.23-composite-extra/amd64/Dockerfile +++ b/src/aspnet/11.0/alpine3.23-composite-extra/amd64/Dockerfile @@ -4,7 +4,7 @@ ARG REPO=mcr.microsoft.com/dotnet/runtime-deps FROM $REPO:11.0.0-preview.1-alpine3.23-extra-amd64 AS installer # Retrieve ASP.NET Composite Runtime -RUN aspnetcore_version=11.0.0-preview.1.26103.109 \ +RUN aspnetcore_version=11.0.0-preview.1.26104.118 \ && wget \ https://ci.dot.net/public/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-composite-$aspnetcore_version-linux-musl-x64.tar.gz \ https://ci.dot.net/public-checksums/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-composite-$aspnetcore_version-linux-musl-x64.tar.gz.sha512 \ @@ -21,9 +21,9 @@ FROM $REPO:11.0.0-preview.1-alpine3.23-extra-amd64 ENV \ # .NET Runtime version - DOTNET_VERSION=11.0.0-preview.1.26103.109 \ + DOTNET_VERSION=11.0.0-preview.1.26104.118 \ # ASP.NET Core version - ASPNET_VERSION=11.0.0-preview.1.26103.109 + ASPNET_VERSION=11.0.0-preview.1.26104.118 COPY --from=installer ["/dotnet", "/usr/share/dotnet"] RUN ln -s /usr/share/dotnet/dotnet /usr/bin/dotnet diff --git a/src/aspnet/11.0/alpine3.23-composite-extra/arm32v7/Dockerfile b/src/aspnet/11.0/alpine3.23-composite-extra/arm32v7/Dockerfile index 138c16c64b..6afede4a6b 100644 --- a/src/aspnet/11.0/alpine3.23-composite-extra/arm32v7/Dockerfile +++ b/src/aspnet/11.0/alpine3.23-composite-extra/arm32v7/Dockerfile @@ -4,7 +4,7 @@ ARG REPO=mcr.microsoft.com/dotnet/runtime-deps FROM $REPO:11.0.0-preview.1-alpine3.23-extra-arm32v7 AS installer # Retrieve ASP.NET Composite Runtime -RUN aspnetcore_version=11.0.0-preview.1.26103.109 \ +RUN aspnetcore_version=11.0.0-preview.1.26104.118 \ && wget \ https://ci.dot.net/public/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-composite-$aspnetcore_version-linux-musl-arm.tar.gz \ https://ci.dot.net/public-checksums/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-composite-$aspnetcore_version-linux-musl-arm.tar.gz.sha512 \ @@ -21,9 +21,9 @@ FROM $REPO:11.0.0-preview.1-alpine3.23-extra-arm32v7 ENV \ # .NET Runtime version - DOTNET_VERSION=11.0.0-preview.1.26103.109 \ + DOTNET_VERSION=11.0.0-preview.1.26104.118 \ # ASP.NET Core version - ASPNET_VERSION=11.0.0-preview.1.26103.109 + ASPNET_VERSION=11.0.0-preview.1.26104.118 COPY --from=installer ["/dotnet", "/usr/share/dotnet"] RUN ln -s /usr/share/dotnet/dotnet /usr/bin/dotnet diff --git a/src/aspnet/11.0/alpine3.23-composite-extra/arm64v8/Dockerfile b/src/aspnet/11.0/alpine3.23-composite-extra/arm64v8/Dockerfile index f539aeb63c..25d750e99b 100644 --- a/src/aspnet/11.0/alpine3.23-composite-extra/arm64v8/Dockerfile +++ b/src/aspnet/11.0/alpine3.23-composite-extra/arm64v8/Dockerfile @@ -4,7 +4,7 @@ ARG REPO=mcr.microsoft.com/dotnet/runtime-deps FROM $REPO:11.0.0-preview.1-alpine3.23-extra-arm64v8 AS installer # Retrieve ASP.NET Composite Runtime -RUN aspnetcore_version=11.0.0-preview.1.26103.109 \ +RUN aspnetcore_version=11.0.0-preview.1.26104.118 \ && wget \ https://ci.dot.net/public/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-composite-$aspnetcore_version-linux-musl-arm64.tar.gz \ https://ci.dot.net/public-checksums/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-composite-$aspnetcore_version-linux-musl-arm64.tar.gz.sha512 \ @@ -21,9 +21,9 @@ FROM $REPO:11.0.0-preview.1-alpine3.23-extra-arm64v8 ENV \ # .NET Runtime version - DOTNET_VERSION=11.0.0-preview.1.26103.109 \ + DOTNET_VERSION=11.0.0-preview.1.26104.118 \ # ASP.NET Core version - ASPNET_VERSION=11.0.0-preview.1.26103.109 + ASPNET_VERSION=11.0.0-preview.1.26104.118 COPY --from=installer ["/dotnet", "/usr/share/dotnet"] RUN ln -s /usr/share/dotnet/dotnet /usr/bin/dotnet diff --git a/src/aspnet/11.0/alpine3.23-composite/amd64/Dockerfile b/src/aspnet/11.0/alpine3.23-composite/amd64/Dockerfile index 669b86cfd9..114753da8d 100644 --- a/src/aspnet/11.0/alpine3.23-composite/amd64/Dockerfile +++ b/src/aspnet/11.0/alpine3.23-composite/amd64/Dockerfile @@ -4,7 +4,7 @@ ARG REPO=mcr.microsoft.com/dotnet/runtime-deps FROM $REPO:11.0.0-preview.1-alpine3.23-amd64 AS installer # Retrieve ASP.NET Composite Runtime -RUN aspnetcore_version=11.0.0-preview.1.26103.109 \ +RUN aspnetcore_version=11.0.0-preview.1.26104.118 \ && wget \ https://ci.dot.net/public/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-composite-$aspnetcore_version-linux-musl-x64.tar.gz \ https://ci.dot.net/public-checksums/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-composite-$aspnetcore_version-linux-musl-x64.tar.gz.sha512 \ @@ -21,9 +21,9 @@ FROM $REPO:11.0.0-preview.1-alpine3.23-amd64 ENV \ # .NET Runtime version - DOTNET_VERSION=11.0.0-preview.1.26103.109 \ + DOTNET_VERSION=11.0.0-preview.1.26104.118 \ # ASP.NET Core version - ASPNET_VERSION=11.0.0-preview.1.26103.109 + ASPNET_VERSION=11.0.0-preview.1.26104.118 COPY --from=installer ["/dotnet", "/usr/share/dotnet"] RUN ln -s /usr/share/dotnet/dotnet /usr/bin/dotnet diff --git a/src/aspnet/11.0/alpine3.23-composite/arm32v7/Dockerfile b/src/aspnet/11.0/alpine3.23-composite/arm32v7/Dockerfile index 8cb31d98ea..c9b74b862e 100644 --- a/src/aspnet/11.0/alpine3.23-composite/arm32v7/Dockerfile +++ b/src/aspnet/11.0/alpine3.23-composite/arm32v7/Dockerfile @@ -4,7 +4,7 @@ ARG REPO=mcr.microsoft.com/dotnet/runtime-deps FROM $REPO:11.0.0-preview.1-alpine3.23-arm32v7 AS installer # Retrieve ASP.NET Composite Runtime -RUN aspnetcore_version=11.0.0-preview.1.26103.109 \ +RUN aspnetcore_version=11.0.0-preview.1.26104.118 \ && wget \ https://ci.dot.net/public/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-composite-$aspnetcore_version-linux-musl-arm.tar.gz \ https://ci.dot.net/public-checksums/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-composite-$aspnetcore_version-linux-musl-arm.tar.gz.sha512 \ @@ -21,9 +21,9 @@ FROM $REPO:11.0.0-preview.1-alpine3.23-arm32v7 ENV \ # .NET Runtime version - DOTNET_VERSION=11.0.0-preview.1.26103.109 \ + DOTNET_VERSION=11.0.0-preview.1.26104.118 \ # ASP.NET Core version - ASPNET_VERSION=11.0.0-preview.1.26103.109 + ASPNET_VERSION=11.0.0-preview.1.26104.118 COPY --from=installer ["/dotnet", "/usr/share/dotnet"] RUN ln -s /usr/share/dotnet/dotnet /usr/bin/dotnet diff --git a/src/aspnet/11.0/alpine3.23-composite/arm64v8/Dockerfile b/src/aspnet/11.0/alpine3.23-composite/arm64v8/Dockerfile index 5db1ebc9cd..275190a324 100644 --- a/src/aspnet/11.0/alpine3.23-composite/arm64v8/Dockerfile +++ b/src/aspnet/11.0/alpine3.23-composite/arm64v8/Dockerfile @@ -4,7 +4,7 @@ ARG REPO=mcr.microsoft.com/dotnet/runtime-deps FROM $REPO:11.0.0-preview.1-alpine3.23-arm64v8 AS installer # Retrieve ASP.NET Composite Runtime -RUN aspnetcore_version=11.0.0-preview.1.26103.109 \ +RUN aspnetcore_version=11.0.0-preview.1.26104.118 \ && wget \ https://ci.dot.net/public/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-composite-$aspnetcore_version-linux-musl-arm64.tar.gz \ https://ci.dot.net/public-checksums/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-composite-$aspnetcore_version-linux-musl-arm64.tar.gz.sha512 \ @@ -21,9 +21,9 @@ FROM $REPO:11.0.0-preview.1-alpine3.23-arm64v8 ENV \ # .NET Runtime version - DOTNET_VERSION=11.0.0-preview.1.26103.109 \ + DOTNET_VERSION=11.0.0-preview.1.26104.118 \ # ASP.NET Core version - ASPNET_VERSION=11.0.0-preview.1.26103.109 + ASPNET_VERSION=11.0.0-preview.1.26104.118 COPY --from=installer ["/dotnet", "/usr/share/dotnet"] RUN ln -s /usr/share/dotnet/dotnet /usr/bin/dotnet diff --git a/src/aspnet/11.0/alpine3.23-extra/amd64/Dockerfile b/src/aspnet/11.0/alpine3.23-extra/amd64/Dockerfile index 388cbd9e46..89f22c2088 100644 --- a/src/aspnet/11.0/alpine3.23-extra/amd64/Dockerfile +++ b/src/aspnet/11.0/alpine3.23-extra/amd64/Dockerfile @@ -4,7 +4,7 @@ ARG REPO=mcr.microsoft.com/dotnet/runtime FROM $REPO:11.0.0-preview.1-alpine3.23-extra-amd64 AS installer # Retrieve ASP.NET Core -RUN aspnetcore_version=11.0.0-preview.1.26103.109 \ +RUN aspnetcore_version=11.0.0-preview.1.26104.118 \ && wget \ https://ci.dot.net/public/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-musl-x64.tar.gz \ https://ci.dot.net/public-checksums/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-musl-x64.tar.gz.sha512 \ @@ -20,6 +20,6 @@ RUN aspnetcore_version=11.0.0-preview.1.26103.109 \ FROM $REPO:11.0.0-preview.1-alpine3.23-extra-amd64 # ASP.NET Core version -ENV ASPNET_VERSION=11.0.0-preview.1.26103.109 +ENV ASPNET_VERSION=11.0.0-preview.1.26104.118 COPY --from=installer ["/dotnet", "/usr/share/dotnet"] diff --git a/src/aspnet/11.0/alpine3.23-extra/arm32v7/Dockerfile b/src/aspnet/11.0/alpine3.23-extra/arm32v7/Dockerfile index f0f51fbcaf..3e20427dd6 100644 --- a/src/aspnet/11.0/alpine3.23-extra/arm32v7/Dockerfile +++ b/src/aspnet/11.0/alpine3.23-extra/arm32v7/Dockerfile @@ -4,7 +4,7 @@ ARG REPO=mcr.microsoft.com/dotnet/runtime FROM $REPO:11.0.0-preview.1-alpine3.23-extra-arm32v7 AS installer # Retrieve ASP.NET Core -RUN aspnetcore_version=11.0.0-preview.1.26103.109 \ +RUN aspnetcore_version=11.0.0-preview.1.26104.118 \ && wget \ https://ci.dot.net/public/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-musl-arm.tar.gz \ https://ci.dot.net/public-checksums/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-musl-arm.tar.gz.sha512 \ @@ -20,6 +20,6 @@ RUN aspnetcore_version=11.0.0-preview.1.26103.109 \ FROM $REPO:11.0.0-preview.1-alpine3.23-extra-arm32v7 # ASP.NET Core version -ENV ASPNET_VERSION=11.0.0-preview.1.26103.109 +ENV ASPNET_VERSION=11.0.0-preview.1.26104.118 COPY --from=installer ["/dotnet", "/usr/share/dotnet"] diff --git a/src/aspnet/11.0/alpine3.23-extra/arm64v8/Dockerfile b/src/aspnet/11.0/alpine3.23-extra/arm64v8/Dockerfile index de28352898..edc67b7386 100644 --- a/src/aspnet/11.0/alpine3.23-extra/arm64v8/Dockerfile +++ b/src/aspnet/11.0/alpine3.23-extra/arm64v8/Dockerfile @@ -4,7 +4,7 @@ ARG REPO=mcr.microsoft.com/dotnet/runtime FROM $REPO:11.0.0-preview.1-alpine3.23-extra-arm64v8 AS installer # Retrieve ASP.NET Core -RUN aspnetcore_version=11.0.0-preview.1.26103.109 \ +RUN aspnetcore_version=11.0.0-preview.1.26104.118 \ && wget \ https://ci.dot.net/public/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-musl-arm64.tar.gz \ https://ci.dot.net/public-checksums/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-musl-arm64.tar.gz.sha512 \ @@ -20,6 +20,6 @@ RUN aspnetcore_version=11.0.0-preview.1.26103.109 \ FROM $REPO:11.0.0-preview.1-alpine3.23-extra-arm64v8 # ASP.NET Core version -ENV ASPNET_VERSION=11.0.0-preview.1.26103.109 +ENV ASPNET_VERSION=11.0.0-preview.1.26104.118 COPY --from=installer ["/dotnet", "/usr/share/dotnet"] diff --git a/src/aspnet/11.0/alpine3.23/amd64/Dockerfile b/src/aspnet/11.0/alpine3.23/amd64/Dockerfile index 83d9b0e2db..707d3717d1 100644 --- a/src/aspnet/11.0/alpine3.23/amd64/Dockerfile +++ b/src/aspnet/11.0/alpine3.23/amd64/Dockerfile @@ -4,7 +4,7 @@ ARG REPO=mcr.microsoft.com/dotnet/runtime FROM $REPO:11.0.0-preview.1-alpine3.23-amd64 AS installer # Retrieve ASP.NET Core -RUN aspnetcore_version=11.0.0-preview.1.26103.109 \ +RUN aspnetcore_version=11.0.0-preview.1.26104.118 \ && wget \ https://ci.dot.net/public/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-musl-x64.tar.gz \ https://ci.dot.net/public-checksums/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-musl-x64.tar.gz.sha512 \ @@ -20,6 +20,6 @@ RUN aspnetcore_version=11.0.0-preview.1.26103.109 \ FROM $REPO:11.0.0-preview.1-alpine3.23-amd64 # ASP.NET Core version -ENV ASPNET_VERSION=11.0.0-preview.1.26103.109 +ENV ASPNET_VERSION=11.0.0-preview.1.26104.118 COPY --from=installer ["/dotnet", "/usr/share/dotnet"] diff --git a/src/aspnet/11.0/alpine3.23/arm32v7/Dockerfile b/src/aspnet/11.0/alpine3.23/arm32v7/Dockerfile index 457bf4cd56..6ce1d14572 100644 --- a/src/aspnet/11.0/alpine3.23/arm32v7/Dockerfile +++ b/src/aspnet/11.0/alpine3.23/arm32v7/Dockerfile @@ -4,7 +4,7 @@ ARG REPO=mcr.microsoft.com/dotnet/runtime FROM $REPO:11.0.0-preview.1-alpine3.23-arm32v7 AS installer # Retrieve ASP.NET Core -RUN aspnetcore_version=11.0.0-preview.1.26103.109 \ +RUN aspnetcore_version=11.0.0-preview.1.26104.118 \ && wget \ https://ci.dot.net/public/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-musl-arm.tar.gz \ https://ci.dot.net/public-checksums/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-musl-arm.tar.gz.sha512 \ @@ -20,6 +20,6 @@ RUN aspnetcore_version=11.0.0-preview.1.26103.109 \ FROM $REPO:11.0.0-preview.1-alpine3.23-arm32v7 # ASP.NET Core version -ENV ASPNET_VERSION=11.0.0-preview.1.26103.109 +ENV ASPNET_VERSION=11.0.0-preview.1.26104.118 COPY --from=installer ["/dotnet", "/usr/share/dotnet"] diff --git a/src/aspnet/11.0/alpine3.23/arm64v8/Dockerfile b/src/aspnet/11.0/alpine3.23/arm64v8/Dockerfile index d9ec9825d6..db7141d86e 100644 --- a/src/aspnet/11.0/alpine3.23/arm64v8/Dockerfile +++ b/src/aspnet/11.0/alpine3.23/arm64v8/Dockerfile @@ -4,7 +4,7 @@ ARG REPO=mcr.microsoft.com/dotnet/runtime FROM $REPO:11.0.0-preview.1-alpine3.23-arm64v8 AS installer # Retrieve ASP.NET Core -RUN aspnetcore_version=11.0.0-preview.1.26103.109 \ +RUN aspnetcore_version=11.0.0-preview.1.26104.118 \ && wget \ https://ci.dot.net/public/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-musl-arm64.tar.gz \ https://ci.dot.net/public-checksums/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-musl-arm64.tar.gz.sha512 \ @@ -20,6 +20,6 @@ RUN aspnetcore_version=11.0.0-preview.1.26103.109 \ FROM $REPO:11.0.0-preview.1-alpine3.23-arm64v8 # ASP.NET Core version -ENV ASPNET_VERSION=11.0.0-preview.1.26103.109 +ENV ASPNET_VERSION=11.0.0-preview.1.26104.118 COPY --from=installer ["/dotnet", "/usr/share/dotnet"] diff --git a/src/aspnet/11.0/azurelinux3.0-distroless-composite-extra/amd64/Dockerfile b/src/aspnet/11.0/azurelinux3.0-distroless-composite-extra/amd64/Dockerfile index b0d3cb2fb3..9bf41d3e66 100644 --- a/src/aspnet/11.0/azurelinux3.0-distroless-composite-extra/amd64/Dockerfile +++ b/src/aspnet/11.0/azurelinux3.0-distroless-composite-extra/amd64/Dockerfile @@ -10,7 +10,7 @@ RUN tdnf install -y \ && tdnf clean all # Retrieve ASP.NET Composite Runtime -RUN aspnetcore_version=11.0.0-preview.1.26103.109 \ +RUN aspnetcore_version=11.0.0-preview.1.26104.118 \ && curl --fail --show-error --location \ --remote-name https://ci.dot.net/public/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-composite-$aspnetcore_version-linux-x64.tar.gz \ --remote-name https://ci.dot.net/public-checksums/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-composite-$aspnetcore_version-linux-x64.tar.gz.sha512 \ @@ -30,9 +30,9 @@ FROM $REPO:11.0.0-preview.1-azurelinux3.0-distroless-extra-amd64 ENV \ # .NET Runtime version - DOTNET_VERSION=11.0.0-preview.1.26103.109 \ + DOTNET_VERSION=11.0.0-preview.1.26104.118 \ # ASP.NET Core version - ASPNET_VERSION=11.0.0-preview.1.26103.109 + ASPNET_VERSION=11.0.0-preview.1.26104.118 COPY --from=installer ["/usr/share/dotnet", "/usr/share/dotnet"] COPY --from=installer ["/dotnet-symlink", "/usr/bin"] diff --git a/src/aspnet/11.0/azurelinux3.0-distroless-composite-extra/arm64v8/Dockerfile b/src/aspnet/11.0/azurelinux3.0-distroless-composite-extra/arm64v8/Dockerfile index 3982678690..a044c15589 100644 --- a/src/aspnet/11.0/azurelinux3.0-distroless-composite-extra/arm64v8/Dockerfile +++ b/src/aspnet/11.0/azurelinux3.0-distroless-composite-extra/arm64v8/Dockerfile @@ -10,7 +10,7 @@ RUN tdnf install -y \ && tdnf clean all # Retrieve ASP.NET Composite Runtime -RUN aspnetcore_version=11.0.0-preview.1.26103.109 \ +RUN aspnetcore_version=11.0.0-preview.1.26104.118 \ && curl --fail --show-error --location \ --remote-name https://ci.dot.net/public/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-composite-$aspnetcore_version-linux-arm64.tar.gz \ --remote-name https://ci.dot.net/public-checksums/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-composite-$aspnetcore_version-linux-arm64.tar.gz.sha512 \ @@ -30,9 +30,9 @@ FROM $REPO:11.0.0-preview.1-azurelinux3.0-distroless-extra-arm64v8 ENV \ # .NET Runtime version - DOTNET_VERSION=11.0.0-preview.1.26103.109 \ + DOTNET_VERSION=11.0.0-preview.1.26104.118 \ # ASP.NET Core version - ASPNET_VERSION=11.0.0-preview.1.26103.109 + ASPNET_VERSION=11.0.0-preview.1.26104.118 COPY --from=installer ["/usr/share/dotnet", "/usr/share/dotnet"] COPY --from=installer ["/dotnet-symlink", "/usr/bin"] diff --git a/src/aspnet/11.0/azurelinux3.0-distroless-composite/amd64/Dockerfile b/src/aspnet/11.0/azurelinux3.0-distroless-composite/amd64/Dockerfile index b849b57587..6535b718ad 100644 --- a/src/aspnet/11.0/azurelinux3.0-distroless-composite/amd64/Dockerfile +++ b/src/aspnet/11.0/azurelinux3.0-distroless-composite/amd64/Dockerfile @@ -10,7 +10,7 @@ RUN tdnf install -y \ && tdnf clean all # Retrieve ASP.NET Composite Runtime -RUN aspnetcore_version=11.0.0-preview.1.26103.109 \ +RUN aspnetcore_version=11.0.0-preview.1.26104.118 \ && curl --fail --show-error --location \ --remote-name https://ci.dot.net/public/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-composite-$aspnetcore_version-linux-x64.tar.gz \ --remote-name https://ci.dot.net/public-checksums/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-composite-$aspnetcore_version-linux-x64.tar.gz.sha512 \ @@ -30,9 +30,9 @@ FROM $REPO:11.0.0-preview.1-azurelinux3.0-distroless-amd64 ENV \ # .NET Runtime version - DOTNET_VERSION=11.0.0-preview.1.26103.109 \ + DOTNET_VERSION=11.0.0-preview.1.26104.118 \ # ASP.NET Core version - ASPNET_VERSION=11.0.0-preview.1.26103.109 + ASPNET_VERSION=11.0.0-preview.1.26104.118 COPY --from=installer ["/usr/share/dotnet", "/usr/share/dotnet"] COPY --from=installer ["/dotnet-symlink", "/usr/bin"] diff --git a/src/aspnet/11.0/azurelinux3.0-distroless-composite/arm64v8/Dockerfile b/src/aspnet/11.0/azurelinux3.0-distroless-composite/arm64v8/Dockerfile index 2253e28703..0e426a8e3a 100644 --- a/src/aspnet/11.0/azurelinux3.0-distroless-composite/arm64v8/Dockerfile +++ b/src/aspnet/11.0/azurelinux3.0-distroless-composite/arm64v8/Dockerfile @@ -10,7 +10,7 @@ RUN tdnf install -y \ && tdnf clean all # Retrieve ASP.NET Composite Runtime -RUN aspnetcore_version=11.0.0-preview.1.26103.109 \ +RUN aspnetcore_version=11.0.0-preview.1.26104.118 \ && curl --fail --show-error --location \ --remote-name https://ci.dot.net/public/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-composite-$aspnetcore_version-linux-arm64.tar.gz \ --remote-name https://ci.dot.net/public-checksums/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-composite-$aspnetcore_version-linux-arm64.tar.gz.sha512 \ @@ -30,9 +30,9 @@ FROM $REPO:11.0.0-preview.1-azurelinux3.0-distroless-arm64v8 ENV \ # .NET Runtime version - DOTNET_VERSION=11.0.0-preview.1.26103.109 \ + DOTNET_VERSION=11.0.0-preview.1.26104.118 \ # ASP.NET Core version - ASPNET_VERSION=11.0.0-preview.1.26103.109 + ASPNET_VERSION=11.0.0-preview.1.26104.118 COPY --from=installer ["/usr/share/dotnet", "/usr/share/dotnet"] COPY --from=installer ["/dotnet-symlink", "/usr/bin"] diff --git a/src/aspnet/11.0/azurelinux3.0-distroless-extra/amd64/Dockerfile b/src/aspnet/11.0/azurelinux3.0-distroless-extra/amd64/Dockerfile index d3e12210d4..084b948f06 100644 --- a/src/aspnet/11.0/azurelinux3.0-distroless-extra/amd64/Dockerfile +++ b/src/aspnet/11.0/azurelinux3.0-distroless-extra/amd64/Dockerfile @@ -10,7 +10,7 @@ RUN tdnf install -y \ && tdnf clean all # Retrieve ASP.NET Core -RUN aspnetcore_version=11.0.0-preview.1.26103.109 \ +RUN aspnetcore_version=11.0.0-preview.1.26104.118 \ && curl --fail --show-error --location \ --remote-name https://ci.dot.net/public/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-x64.tar.gz \ --remote-name https://ci.dot.net/public-checksums/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-x64.tar.gz.sha512 \ @@ -26,6 +26,6 @@ RUN aspnetcore_version=11.0.0-preview.1.26103.109 \ FROM $REPO:11.0.0-preview.1-azurelinux3.0-distroless-extra-amd64 # ASP.NET Core version -ENV ASPNET_VERSION=11.0.0-preview.1.26103.109 +ENV ASPNET_VERSION=11.0.0-preview.1.26104.118 COPY --from=installer ["/dotnet", "/usr/share/dotnet"] diff --git a/src/aspnet/11.0/azurelinux3.0-distroless-extra/arm64v8/Dockerfile b/src/aspnet/11.0/azurelinux3.0-distroless-extra/arm64v8/Dockerfile index 3dfef6a680..f169d27179 100644 --- a/src/aspnet/11.0/azurelinux3.0-distroless-extra/arm64v8/Dockerfile +++ b/src/aspnet/11.0/azurelinux3.0-distroless-extra/arm64v8/Dockerfile @@ -10,7 +10,7 @@ RUN tdnf install -y \ && tdnf clean all # Retrieve ASP.NET Core -RUN aspnetcore_version=11.0.0-preview.1.26103.109 \ +RUN aspnetcore_version=11.0.0-preview.1.26104.118 \ && curl --fail --show-error --location \ --remote-name https://ci.dot.net/public/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-arm64.tar.gz \ --remote-name https://ci.dot.net/public-checksums/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-arm64.tar.gz.sha512 \ @@ -26,6 +26,6 @@ RUN aspnetcore_version=11.0.0-preview.1.26103.109 \ FROM $REPO:11.0.0-preview.1-azurelinux3.0-distroless-extra-arm64v8 # ASP.NET Core version -ENV ASPNET_VERSION=11.0.0-preview.1.26103.109 +ENV ASPNET_VERSION=11.0.0-preview.1.26104.118 COPY --from=installer ["/dotnet", "/usr/share/dotnet"] diff --git a/src/aspnet/11.0/azurelinux3.0-distroless/amd64/Dockerfile b/src/aspnet/11.0/azurelinux3.0-distroless/amd64/Dockerfile index 6177218dda..c58c071121 100644 --- a/src/aspnet/11.0/azurelinux3.0-distroless/amd64/Dockerfile +++ b/src/aspnet/11.0/azurelinux3.0-distroless/amd64/Dockerfile @@ -10,7 +10,7 @@ RUN tdnf install -y \ && tdnf clean all # Retrieve ASP.NET Core -RUN aspnetcore_version=11.0.0-preview.1.26103.109 \ +RUN aspnetcore_version=11.0.0-preview.1.26104.118 \ && curl --fail --show-error --location \ --remote-name https://ci.dot.net/public/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-x64.tar.gz \ --remote-name https://ci.dot.net/public-checksums/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-x64.tar.gz.sha512 \ @@ -26,6 +26,6 @@ RUN aspnetcore_version=11.0.0-preview.1.26103.109 \ FROM $REPO:11.0.0-preview.1-azurelinux3.0-distroless-amd64 # ASP.NET Core version -ENV ASPNET_VERSION=11.0.0-preview.1.26103.109 +ENV ASPNET_VERSION=11.0.0-preview.1.26104.118 COPY --from=installer ["/dotnet", "/usr/share/dotnet"] diff --git a/src/aspnet/11.0/azurelinux3.0-distroless/arm64v8/Dockerfile b/src/aspnet/11.0/azurelinux3.0-distroless/arm64v8/Dockerfile index 19eeac44d2..4c6cb16696 100644 --- a/src/aspnet/11.0/azurelinux3.0-distroless/arm64v8/Dockerfile +++ b/src/aspnet/11.0/azurelinux3.0-distroless/arm64v8/Dockerfile @@ -10,7 +10,7 @@ RUN tdnf install -y \ && tdnf clean all # Retrieve ASP.NET Core -RUN aspnetcore_version=11.0.0-preview.1.26103.109 \ +RUN aspnetcore_version=11.0.0-preview.1.26104.118 \ && curl --fail --show-error --location \ --remote-name https://ci.dot.net/public/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-arm64.tar.gz \ --remote-name https://ci.dot.net/public-checksums/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-arm64.tar.gz.sha512 \ @@ -26,6 +26,6 @@ RUN aspnetcore_version=11.0.0-preview.1.26103.109 \ FROM $REPO:11.0.0-preview.1-azurelinux3.0-distroless-arm64v8 # ASP.NET Core version -ENV ASPNET_VERSION=11.0.0-preview.1.26103.109 +ENV ASPNET_VERSION=11.0.0-preview.1.26104.118 COPY --from=installer ["/dotnet", "/usr/share/dotnet"] diff --git a/src/aspnet/11.0/azurelinux3.0/amd64/Dockerfile b/src/aspnet/11.0/azurelinux3.0/amd64/Dockerfile index 09dbea2da1..f267962713 100644 --- a/src/aspnet/11.0/azurelinux3.0/amd64/Dockerfile +++ b/src/aspnet/11.0/azurelinux3.0/amd64/Dockerfile @@ -8,7 +8,7 @@ RUN tdnf install -y \ && tdnf clean all # Retrieve ASP.NET Core -RUN aspnetcore_version=11.0.0-preview.1.26103.109 \ +RUN aspnetcore_version=11.0.0-preview.1.26104.118 \ && curl --fail --show-error --location \ --remote-name https://ci.dot.net/public/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-x64.tar.gz \ --remote-name https://ci.dot.net/public-checksums/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-x64.tar.gz.sha512 \ @@ -24,6 +24,6 @@ RUN aspnetcore_version=11.0.0-preview.1.26103.109 \ FROM $REPO:11.0.0-preview.1-azurelinux3.0-amd64 # ASP.NET Core version -ENV ASPNET_VERSION=11.0.0-preview.1.26103.109 +ENV ASPNET_VERSION=11.0.0-preview.1.26104.118 COPY --from=installer ["/dotnet", "/usr/share/dotnet"] diff --git a/src/aspnet/11.0/azurelinux3.0/arm64v8/Dockerfile b/src/aspnet/11.0/azurelinux3.0/arm64v8/Dockerfile index 04f5192961..cbaa954e81 100644 --- a/src/aspnet/11.0/azurelinux3.0/arm64v8/Dockerfile +++ b/src/aspnet/11.0/azurelinux3.0/arm64v8/Dockerfile @@ -8,7 +8,7 @@ RUN tdnf install -y \ && tdnf clean all # Retrieve ASP.NET Core -RUN aspnetcore_version=11.0.0-preview.1.26103.109 \ +RUN aspnetcore_version=11.0.0-preview.1.26104.118 \ && curl --fail --show-error --location \ --remote-name https://ci.dot.net/public/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-arm64.tar.gz \ --remote-name https://ci.dot.net/public-checksums/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-arm64.tar.gz.sha512 \ @@ -24,6 +24,6 @@ RUN aspnetcore_version=11.0.0-preview.1.26103.109 \ FROM $REPO:11.0.0-preview.1-azurelinux3.0-arm64v8 # ASP.NET Core version -ENV ASPNET_VERSION=11.0.0-preview.1.26103.109 +ENV ASPNET_VERSION=11.0.0-preview.1.26104.118 COPY --from=installer ["/dotnet", "/usr/share/dotnet"] diff --git a/src/aspnet/11.0/nanoserver-ltsc2025/amd64/Dockerfile b/src/aspnet/11.0/nanoserver-ltsc2025/amd64/Dockerfile index 98f9d51620..2307c778eb 100644 --- a/src/aspnet/11.0/nanoserver-ltsc2025/amd64/Dockerfile +++ b/src/aspnet/11.0/nanoserver-ltsc2025/amd64/Dockerfile @@ -10,7 +10,7 @@ RUN powershell -Command ` $ErrorActionPreference = 'Stop'; ` $ProgressPreference = 'SilentlyContinue'; ` ` - $aspnetcore_version = '11.0.0-preview.1.26103.109'; ` + $aspnetcore_version = '11.0.0-preview.1.26104.118'; ` $aspnetcore_file = 'aspnetcore-runtime-' + $aspnetcore_version + '-win-x64.zip'; ` $dotnet_sha512_file = $aspnetcore_file + '.sha512'; ` ` @@ -33,6 +33,6 @@ RUN powershell -Command ` FROM $REPO:11.0.0-preview.1-nanoserver-ltsc2025 # ASP.NET Core version -ENV ASPNET_VERSION=11.0.0-preview.1.26103.109 +ENV ASPNET_VERSION=11.0.0-preview.1.26104.118 COPY --from=installer ["/dotnet/shared/Microsoft.AspNetCore.App", "/Program Files/dotnet/shared/Microsoft.AspNetCore.App"] diff --git a/src/aspnet/11.0/resolute-chiseled-composite-extra/amd64/Dockerfile b/src/aspnet/11.0/resolute-chiseled-composite-extra/amd64/Dockerfile index a29d2d0819..115ecc15d4 100644 --- a/src/aspnet/11.0/resolute-chiseled-composite-extra/amd64/Dockerfile +++ b/src/aspnet/11.0/resolute-chiseled-composite-extra/amd64/Dockerfile @@ -4,7 +4,7 @@ ARG REPO=mcr.microsoft.com/dotnet/runtime-deps FROM amd64/buildpack-deps:resolute-curl AS installer # Retrieve ASP.NET Composite Runtime -RUN aspnetcore_version=11.0.0-preview.1.26103.109 \ +RUN aspnetcore_version=11.0.0-preview.1.26104.118 \ && curl --fail --show-error --location \ --remote-name https://ci.dot.net/public/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-composite-$aspnetcore_version-linux-x64.tar.gz \ --remote-name https://ci.dot.net/public-checksums/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-composite-$aspnetcore_version-linux-x64.tar.gz.sha512 \ @@ -24,9 +24,9 @@ FROM $REPO:11.0.0-preview.1-resolute-chiseled-extra-amd64 ENV \ # .NET Runtime version - DOTNET_VERSION=11.0.0-preview.1.26103.109 \ + DOTNET_VERSION=11.0.0-preview.1.26104.118 \ # ASP.NET Core version - ASPNET_VERSION=11.0.0-preview.1.26103.109 + ASPNET_VERSION=11.0.0-preview.1.26104.118 COPY --from=installer ["/usr/share/dotnet", "/usr/share/dotnet"] COPY --from=installer ["/dotnet-symlink", "/usr/bin"] diff --git a/src/aspnet/11.0/resolute-chiseled-composite-extra/arm32v7/Dockerfile b/src/aspnet/11.0/resolute-chiseled-composite-extra/arm32v7/Dockerfile index c190ac8fd6..23e7b1d1b7 100644 --- a/src/aspnet/11.0/resolute-chiseled-composite-extra/arm32v7/Dockerfile +++ b/src/aspnet/11.0/resolute-chiseled-composite-extra/arm32v7/Dockerfile @@ -4,7 +4,7 @@ ARG REPO=mcr.microsoft.com/dotnet/runtime-deps FROM arm32v7/buildpack-deps:jammy-curl AS installer # Retrieve ASP.NET Composite Runtime -RUN aspnetcore_version=11.0.0-preview.1.26103.109 \ +RUN aspnetcore_version=11.0.0-preview.1.26104.118 \ && curl --fail --show-error --location \ --remote-name https://ci.dot.net/public/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-composite-$aspnetcore_version-linux-arm.tar.gz \ --remote-name https://ci.dot.net/public-checksums/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-composite-$aspnetcore_version-linux-arm.tar.gz.sha512 \ @@ -24,9 +24,9 @@ FROM $REPO:11.0.0-preview.1-resolute-chiseled-extra-arm32v7 ENV \ # .NET Runtime version - DOTNET_VERSION=11.0.0-preview.1.26103.109 \ + DOTNET_VERSION=11.0.0-preview.1.26104.118 \ # ASP.NET Core version - ASPNET_VERSION=11.0.0-preview.1.26103.109 + ASPNET_VERSION=11.0.0-preview.1.26104.118 COPY --from=installer ["/usr/share/dotnet", "/usr/share/dotnet"] COPY --from=installer ["/dotnet-symlink", "/usr/bin"] diff --git a/src/aspnet/11.0/resolute-chiseled-composite-extra/arm64v8/Dockerfile b/src/aspnet/11.0/resolute-chiseled-composite-extra/arm64v8/Dockerfile index 221707b83b..e58e3ec98d 100644 --- a/src/aspnet/11.0/resolute-chiseled-composite-extra/arm64v8/Dockerfile +++ b/src/aspnet/11.0/resolute-chiseled-composite-extra/arm64v8/Dockerfile @@ -4,7 +4,7 @@ ARG REPO=mcr.microsoft.com/dotnet/runtime-deps FROM arm64v8/buildpack-deps:resolute-curl AS installer # Retrieve ASP.NET Composite Runtime -RUN aspnetcore_version=11.0.0-preview.1.26103.109 \ +RUN aspnetcore_version=11.0.0-preview.1.26104.118 \ && curl --fail --show-error --location \ --remote-name https://ci.dot.net/public/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-composite-$aspnetcore_version-linux-arm64.tar.gz \ --remote-name https://ci.dot.net/public-checksums/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-composite-$aspnetcore_version-linux-arm64.tar.gz.sha512 \ @@ -24,9 +24,9 @@ FROM $REPO:11.0.0-preview.1-resolute-chiseled-extra-arm64v8 ENV \ # .NET Runtime version - DOTNET_VERSION=11.0.0-preview.1.26103.109 \ + DOTNET_VERSION=11.0.0-preview.1.26104.118 \ # ASP.NET Core version - ASPNET_VERSION=11.0.0-preview.1.26103.109 + ASPNET_VERSION=11.0.0-preview.1.26104.118 COPY --from=installer ["/usr/share/dotnet", "/usr/share/dotnet"] COPY --from=installer ["/dotnet-symlink", "/usr/bin"] diff --git a/src/aspnet/11.0/resolute-chiseled-composite/amd64/Dockerfile b/src/aspnet/11.0/resolute-chiseled-composite/amd64/Dockerfile index 22a58b145a..dcfc6171dd 100644 --- a/src/aspnet/11.0/resolute-chiseled-composite/amd64/Dockerfile +++ b/src/aspnet/11.0/resolute-chiseled-composite/amd64/Dockerfile @@ -4,7 +4,7 @@ ARG REPO=mcr.microsoft.com/dotnet/runtime-deps FROM amd64/buildpack-deps:resolute-curl AS installer # Retrieve ASP.NET Composite Runtime -RUN aspnetcore_version=11.0.0-preview.1.26103.109 \ +RUN aspnetcore_version=11.0.0-preview.1.26104.118 \ && curl --fail --show-error --location \ --remote-name https://ci.dot.net/public/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-composite-$aspnetcore_version-linux-x64.tar.gz \ --remote-name https://ci.dot.net/public-checksums/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-composite-$aspnetcore_version-linux-x64.tar.gz.sha512 \ @@ -24,9 +24,9 @@ FROM $REPO:11.0.0-preview.1-resolute-chiseled-amd64 ENV \ # .NET Runtime version - DOTNET_VERSION=11.0.0-preview.1.26103.109 \ + DOTNET_VERSION=11.0.0-preview.1.26104.118 \ # ASP.NET Core version - ASPNET_VERSION=11.0.0-preview.1.26103.109 + ASPNET_VERSION=11.0.0-preview.1.26104.118 COPY --from=installer ["/usr/share/dotnet", "/usr/share/dotnet"] COPY --from=installer ["/dotnet-symlink", "/usr/bin"] diff --git a/src/aspnet/11.0/resolute-chiseled-composite/arm32v7/Dockerfile b/src/aspnet/11.0/resolute-chiseled-composite/arm32v7/Dockerfile index b2f1358609..c3efab94a9 100644 --- a/src/aspnet/11.0/resolute-chiseled-composite/arm32v7/Dockerfile +++ b/src/aspnet/11.0/resolute-chiseled-composite/arm32v7/Dockerfile @@ -4,7 +4,7 @@ ARG REPO=mcr.microsoft.com/dotnet/runtime-deps FROM arm32v7/buildpack-deps:jammy-curl AS installer # Retrieve ASP.NET Composite Runtime -RUN aspnetcore_version=11.0.0-preview.1.26103.109 \ +RUN aspnetcore_version=11.0.0-preview.1.26104.118 \ && curl --fail --show-error --location \ --remote-name https://ci.dot.net/public/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-composite-$aspnetcore_version-linux-arm.tar.gz \ --remote-name https://ci.dot.net/public-checksums/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-composite-$aspnetcore_version-linux-arm.tar.gz.sha512 \ @@ -24,9 +24,9 @@ FROM $REPO:11.0.0-preview.1-resolute-chiseled-arm32v7 ENV \ # .NET Runtime version - DOTNET_VERSION=11.0.0-preview.1.26103.109 \ + DOTNET_VERSION=11.0.0-preview.1.26104.118 \ # ASP.NET Core version - ASPNET_VERSION=11.0.0-preview.1.26103.109 + ASPNET_VERSION=11.0.0-preview.1.26104.118 COPY --from=installer ["/usr/share/dotnet", "/usr/share/dotnet"] COPY --from=installer ["/dotnet-symlink", "/usr/bin"] diff --git a/src/aspnet/11.0/resolute-chiseled-composite/arm64v8/Dockerfile b/src/aspnet/11.0/resolute-chiseled-composite/arm64v8/Dockerfile index 43530e5937..f07e657be1 100644 --- a/src/aspnet/11.0/resolute-chiseled-composite/arm64v8/Dockerfile +++ b/src/aspnet/11.0/resolute-chiseled-composite/arm64v8/Dockerfile @@ -4,7 +4,7 @@ ARG REPO=mcr.microsoft.com/dotnet/runtime-deps FROM arm64v8/buildpack-deps:resolute-curl AS installer # Retrieve ASP.NET Composite Runtime -RUN aspnetcore_version=11.0.0-preview.1.26103.109 \ +RUN aspnetcore_version=11.0.0-preview.1.26104.118 \ && curl --fail --show-error --location \ --remote-name https://ci.dot.net/public/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-composite-$aspnetcore_version-linux-arm64.tar.gz \ --remote-name https://ci.dot.net/public-checksums/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-composite-$aspnetcore_version-linux-arm64.tar.gz.sha512 \ @@ -24,9 +24,9 @@ FROM $REPO:11.0.0-preview.1-resolute-chiseled-arm64v8 ENV \ # .NET Runtime version - DOTNET_VERSION=11.0.0-preview.1.26103.109 \ + DOTNET_VERSION=11.0.0-preview.1.26104.118 \ # ASP.NET Core version - ASPNET_VERSION=11.0.0-preview.1.26103.109 + ASPNET_VERSION=11.0.0-preview.1.26104.118 COPY --from=installer ["/usr/share/dotnet", "/usr/share/dotnet"] COPY --from=installer ["/dotnet-symlink", "/usr/bin"] diff --git a/src/aspnet/11.0/resolute-chiseled-extra/amd64/Dockerfile b/src/aspnet/11.0/resolute-chiseled-extra/amd64/Dockerfile index 3d58d08f10..2bc9d07996 100644 --- a/src/aspnet/11.0/resolute-chiseled-extra/amd64/Dockerfile +++ b/src/aspnet/11.0/resolute-chiseled-extra/amd64/Dockerfile @@ -4,7 +4,7 @@ ARG REPO=mcr.microsoft.com/dotnet/runtime FROM amd64/buildpack-deps:resolute-curl AS installer # Retrieve ASP.NET Core -RUN aspnetcore_version=11.0.0-preview.1.26103.109 \ +RUN aspnetcore_version=11.0.0-preview.1.26104.118 \ && curl --fail --show-error --location \ --remote-name https://ci.dot.net/public/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-x64.tar.gz \ --remote-name https://ci.dot.net/public-checksums/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-x64.tar.gz.sha512 \ @@ -20,6 +20,6 @@ RUN aspnetcore_version=11.0.0-preview.1.26103.109 \ FROM $REPO:11.0.0-preview.1-resolute-chiseled-extra-amd64 # ASP.NET Core version -ENV ASPNET_VERSION=11.0.0-preview.1.26103.109 +ENV ASPNET_VERSION=11.0.0-preview.1.26104.118 COPY --from=installer ["/dotnet", "/usr/share/dotnet"] diff --git a/src/aspnet/11.0/resolute-chiseled-extra/arm32v7/Dockerfile b/src/aspnet/11.0/resolute-chiseled-extra/arm32v7/Dockerfile index c3155aefbf..d685059a2b 100644 --- a/src/aspnet/11.0/resolute-chiseled-extra/arm32v7/Dockerfile +++ b/src/aspnet/11.0/resolute-chiseled-extra/arm32v7/Dockerfile @@ -4,7 +4,7 @@ ARG REPO=mcr.microsoft.com/dotnet/runtime FROM arm32v7/buildpack-deps:jammy-curl AS installer # Retrieve ASP.NET Core -RUN aspnetcore_version=11.0.0-preview.1.26103.109 \ +RUN aspnetcore_version=11.0.0-preview.1.26104.118 \ && curl --fail --show-error --location \ --remote-name https://ci.dot.net/public/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-arm.tar.gz \ --remote-name https://ci.dot.net/public-checksums/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-arm.tar.gz.sha512 \ @@ -20,6 +20,6 @@ RUN aspnetcore_version=11.0.0-preview.1.26103.109 \ FROM $REPO:11.0.0-preview.1-resolute-chiseled-extra-arm32v7 # ASP.NET Core version -ENV ASPNET_VERSION=11.0.0-preview.1.26103.109 +ENV ASPNET_VERSION=11.0.0-preview.1.26104.118 COPY --from=installer ["/dotnet", "/usr/share/dotnet"] diff --git a/src/aspnet/11.0/resolute-chiseled-extra/arm64v8/Dockerfile b/src/aspnet/11.0/resolute-chiseled-extra/arm64v8/Dockerfile index fabfef2761..142cbd1b8d 100644 --- a/src/aspnet/11.0/resolute-chiseled-extra/arm64v8/Dockerfile +++ b/src/aspnet/11.0/resolute-chiseled-extra/arm64v8/Dockerfile @@ -4,7 +4,7 @@ ARG REPO=mcr.microsoft.com/dotnet/runtime FROM arm64v8/buildpack-deps:resolute-curl AS installer # Retrieve ASP.NET Core -RUN aspnetcore_version=11.0.0-preview.1.26103.109 \ +RUN aspnetcore_version=11.0.0-preview.1.26104.118 \ && curl --fail --show-error --location \ --remote-name https://ci.dot.net/public/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-arm64.tar.gz \ --remote-name https://ci.dot.net/public-checksums/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-arm64.tar.gz.sha512 \ @@ -20,6 +20,6 @@ RUN aspnetcore_version=11.0.0-preview.1.26103.109 \ FROM $REPO:11.0.0-preview.1-resolute-chiseled-extra-arm64v8 # ASP.NET Core version -ENV ASPNET_VERSION=11.0.0-preview.1.26103.109 +ENV ASPNET_VERSION=11.0.0-preview.1.26104.118 COPY --from=installer ["/dotnet", "/usr/share/dotnet"] diff --git a/src/aspnet/11.0/resolute-chiseled/amd64/Dockerfile b/src/aspnet/11.0/resolute-chiseled/amd64/Dockerfile index 42bc2d761d..8dd074e8b5 100644 --- a/src/aspnet/11.0/resolute-chiseled/amd64/Dockerfile +++ b/src/aspnet/11.0/resolute-chiseled/amd64/Dockerfile @@ -4,7 +4,7 @@ ARG REPO=mcr.microsoft.com/dotnet/runtime FROM amd64/buildpack-deps:resolute-curl AS installer # Retrieve ASP.NET Core -RUN aspnetcore_version=11.0.0-preview.1.26103.109 \ +RUN aspnetcore_version=11.0.0-preview.1.26104.118 \ && curl --fail --show-error --location \ --remote-name https://ci.dot.net/public/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-x64.tar.gz \ --remote-name https://ci.dot.net/public-checksums/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-x64.tar.gz.sha512 \ @@ -20,6 +20,6 @@ RUN aspnetcore_version=11.0.0-preview.1.26103.109 \ FROM $REPO:11.0.0-preview.1-resolute-chiseled-amd64 # ASP.NET Core version -ENV ASPNET_VERSION=11.0.0-preview.1.26103.109 +ENV ASPNET_VERSION=11.0.0-preview.1.26104.118 COPY --from=installer ["/dotnet", "/usr/share/dotnet"] diff --git a/src/aspnet/11.0/resolute-chiseled/arm32v7/Dockerfile b/src/aspnet/11.0/resolute-chiseled/arm32v7/Dockerfile index 1fd9998760..66870c19cb 100644 --- a/src/aspnet/11.0/resolute-chiseled/arm32v7/Dockerfile +++ b/src/aspnet/11.0/resolute-chiseled/arm32v7/Dockerfile @@ -4,7 +4,7 @@ ARG REPO=mcr.microsoft.com/dotnet/runtime FROM arm32v7/buildpack-deps:jammy-curl AS installer # Retrieve ASP.NET Core -RUN aspnetcore_version=11.0.0-preview.1.26103.109 \ +RUN aspnetcore_version=11.0.0-preview.1.26104.118 \ && curl --fail --show-error --location \ --remote-name https://ci.dot.net/public/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-arm.tar.gz \ --remote-name https://ci.dot.net/public-checksums/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-arm.tar.gz.sha512 \ @@ -20,6 +20,6 @@ RUN aspnetcore_version=11.0.0-preview.1.26103.109 \ FROM $REPO:11.0.0-preview.1-resolute-chiseled-arm32v7 # ASP.NET Core version -ENV ASPNET_VERSION=11.0.0-preview.1.26103.109 +ENV ASPNET_VERSION=11.0.0-preview.1.26104.118 COPY --from=installer ["/dotnet", "/usr/share/dotnet"] diff --git a/src/aspnet/11.0/resolute-chiseled/arm64v8/Dockerfile b/src/aspnet/11.0/resolute-chiseled/arm64v8/Dockerfile index e428676d6f..a4494e3493 100644 --- a/src/aspnet/11.0/resolute-chiseled/arm64v8/Dockerfile +++ b/src/aspnet/11.0/resolute-chiseled/arm64v8/Dockerfile @@ -4,7 +4,7 @@ ARG REPO=mcr.microsoft.com/dotnet/runtime FROM arm64v8/buildpack-deps:resolute-curl AS installer # Retrieve ASP.NET Core -RUN aspnetcore_version=11.0.0-preview.1.26103.109 \ +RUN aspnetcore_version=11.0.0-preview.1.26104.118 \ && curl --fail --show-error --location \ --remote-name https://ci.dot.net/public/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-arm64.tar.gz \ --remote-name https://ci.dot.net/public-checksums/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-arm64.tar.gz.sha512 \ @@ -20,6 +20,6 @@ RUN aspnetcore_version=11.0.0-preview.1.26103.109 \ FROM $REPO:11.0.0-preview.1-resolute-chiseled-arm64v8 # ASP.NET Core version -ENV ASPNET_VERSION=11.0.0-preview.1.26103.109 +ENV ASPNET_VERSION=11.0.0-preview.1.26104.118 COPY --from=installer ["/dotnet", "/usr/share/dotnet"] diff --git a/src/aspnet/11.0/resolute/amd64/Dockerfile b/src/aspnet/11.0/resolute/amd64/Dockerfile index 363c74bcac..cb50ce0438 100644 --- a/src/aspnet/11.0/resolute/amd64/Dockerfile +++ b/src/aspnet/11.0/resolute/amd64/Dockerfile @@ -4,7 +4,7 @@ ARG REPO=mcr.microsoft.com/dotnet/runtime FROM amd64/buildpack-deps:resolute-curl AS installer # Retrieve ASP.NET Core -RUN aspnetcore_version=11.0.0-preview.1.26103.109 \ +RUN aspnetcore_version=11.0.0-preview.1.26104.118 \ && curl --fail --show-error --location \ --remote-name https://ci.dot.net/public/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-x64.tar.gz \ --remote-name https://ci.dot.net/public-checksums/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-x64.tar.gz.sha512 \ @@ -20,6 +20,6 @@ RUN aspnetcore_version=11.0.0-preview.1.26103.109 \ FROM $REPO:11.0.0-preview.1-resolute-amd64 # ASP.NET Core version -ENV ASPNET_VERSION=11.0.0-preview.1.26103.109 +ENV ASPNET_VERSION=11.0.0-preview.1.26104.118 COPY --from=installer ["/dotnet", "/usr/share/dotnet"] diff --git a/src/aspnet/11.0/resolute/arm32v7/Dockerfile b/src/aspnet/11.0/resolute/arm32v7/Dockerfile index e5cf926758..14b77b4644 100644 --- a/src/aspnet/11.0/resolute/arm32v7/Dockerfile +++ b/src/aspnet/11.0/resolute/arm32v7/Dockerfile @@ -4,7 +4,7 @@ ARG REPO=mcr.microsoft.com/dotnet/runtime FROM arm32v7/buildpack-deps:jammy-curl AS installer # Retrieve ASP.NET Core -RUN aspnetcore_version=11.0.0-preview.1.26103.109 \ +RUN aspnetcore_version=11.0.0-preview.1.26104.118 \ && curl --fail --show-error --location \ --remote-name https://ci.dot.net/public/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-arm.tar.gz \ --remote-name https://ci.dot.net/public-checksums/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-arm.tar.gz.sha512 \ @@ -20,6 +20,6 @@ RUN aspnetcore_version=11.0.0-preview.1.26103.109 \ FROM $REPO:11.0.0-preview.1-resolute-arm32v7 # ASP.NET Core version -ENV ASPNET_VERSION=11.0.0-preview.1.26103.109 +ENV ASPNET_VERSION=11.0.0-preview.1.26104.118 COPY --from=installer ["/dotnet", "/usr/share/dotnet"] diff --git a/src/aspnet/11.0/resolute/arm64v8/Dockerfile b/src/aspnet/11.0/resolute/arm64v8/Dockerfile index 36dd87ad60..8d63d49918 100644 --- a/src/aspnet/11.0/resolute/arm64v8/Dockerfile +++ b/src/aspnet/11.0/resolute/arm64v8/Dockerfile @@ -4,7 +4,7 @@ ARG REPO=mcr.microsoft.com/dotnet/runtime FROM arm64v8/buildpack-deps:resolute-curl AS installer # Retrieve ASP.NET Core -RUN aspnetcore_version=11.0.0-preview.1.26103.109 \ +RUN aspnetcore_version=11.0.0-preview.1.26104.118 \ && curl --fail --show-error --location \ --remote-name https://ci.dot.net/public/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-arm64.tar.gz \ --remote-name https://ci.dot.net/public-checksums/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-arm64.tar.gz.sha512 \ @@ -20,6 +20,6 @@ RUN aspnetcore_version=11.0.0-preview.1.26103.109 \ FROM $REPO:11.0.0-preview.1-resolute-arm64v8 # ASP.NET Core version -ENV ASPNET_VERSION=11.0.0-preview.1.26103.109 +ENV ASPNET_VERSION=11.0.0-preview.1.26104.118 COPY --from=installer ["/dotnet", "/usr/share/dotnet"] diff --git a/src/aspnet/11.0/windowsservercore-ltsc2025/amd64/Dockerfile b/src/aspnet/11.0/windowsservercore-ltsc2025/amd64/Dockerfile index a9672d92ee..644149b085 100644 --- a/src/aspnet/11.0/windowsservercore-ltsc2025/amd64/Dockerfile +++ b/src/aspnet/11.0/windowsservercore-ltsc2025/amd64/Dockerfile @@ -10,7 +10,7 @@ RUN powershell -Command ` $ErrorActionPreference = 'Stop'; ` $ProgressPreference = 'SilentlyContinue'; ` ` - $aspnetcore_version = '11.0.0-preview.1.26103.109'; ` + $aspnetcore_version = '11.0.0-preview.1.26104.118'; ` $aspnetcore_file = 'aspnetcore-runtime-' + $aspnetcore_version + '-win-x64.zip'; ` $dotnet_sha512_file = $aspnetcore_file + '.sha512'; ` ` @@ -33,6 +33,6 @@ RUN powershell -Command ` FROM $REPO:11.0.0-preview.1-windowsservercore-ltsc2025 # ASP.NET Core version -ENV ASPNET_VERSION=11.0.0-preview.1.26103.109 +ENV ASPNET_VERSION=11.0.0-preview.1.26104.118 COPY --from=installer ["/dotnet/shared/Microsoft.AspNetCore.App", "/Program Files/dotnet/shared/Microsoft.AspNetCore.App"] diff --git a/src/runtime/11.0/alpine3.23-extra/amd64/Dockerfile b/src/runtime/11.0/alpine3.23-extra/amd64/Dockerfile index 960860e9db..1bf12e5c80 100644 --- a/src/runtime/11.0/alpine3.23-extra/amd64/Dockerfile +++ b/src/runtime/11.0/alpine3.23-extra/amd64/Dockerfile @@ -4,7 +4,7 @@ ARG REPO=mcr.microsoft.com/dotnet/runtime-deps FROM $REPO:11.0.0-preview.1-alpine3.23-extra-amd64 AS installer # Retrieve .NET Runtime -RUN dotnet_version=11.0.0-preview.1.26103.109 \ +RUN dotnet_version=11.0.0-preview.1.26104.118 \ && wget \ https://ci.dot.net/public/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-musl-x64.tar.gz \ https://ci.dot.net/public-checksums/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-musl-x64.tar.gz.sha512 \ @@ -20,7 +20,7 @@ RUN dotnet_version=11.0.0-preview.1.26103.109 \ FROM $REPO:11.0.0-preview.1-alpine3.23-extra-amd64 # .NET Runtime version -ENV DOTNET_VERSION=11.0.0-preview.1.26103.109 +ENV DOTNET_VERSION=11.0.0-preview.1.26104.118 COPY --from=installer ["/dotnet", "/usr/share/dotnet"] diff --git a/src/runtime/11.0/alpine3.23-extra/arm32v7/Dockerfile b/src/runtime/11.0/alpine3.23-extra/arm32v7/Dockerfile index 93b2fe6854..75ac362b6f 100644 --- a/src/runtime/11.0/alpine3.23-extra/arm32v7/Dockerfile +++ b/src/runtime/11.0/alpine3.23-extra/arm32v7/Dockerfile @@ -4,7 +4,7 @@ ARG REPO=mcr.microsoft.com/dotnet/runtime-deps FROM $REPO:11.0.0-preview.1-alpine3.23-extra-arm32v7 AS installer # Retrieve .NET Runtime -RUN dotnet_version=11.0.0-preview.1.26103.109 \ +RUN dotnet_version=11.0.0-preview.1.26104.118 \ && wget \ https://ci.dot.net/public/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-musl-arm.tar.gz \ https://ci.dot.net/public-checksums/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-musl-arm.tar.gz.sha512 \ @@ -20,7 +20,7 @@ RUN dotnet_version=11.0.0-preview.1.26103.109 \ FROM $REPO:11.0.0-preview.1-alpine3.23-extra-arm32v7 # .NET Runtime version -ENV DOTNET_VERSION=11.0.0-preview.1.26103.109 +ENV DOTNET_VERSION=11.0.0-preview.1.26104.118 COPY --from=installer ["/dotnet", "/usr/share/dotnet"] diff --git a/src/runtime/11.0/alpine3.23-extra/arm64v8/Dockerfile b/src/runtime/11.0/alpine3.23-extra/arm64v8/Dockerfile index 404a985d27..8607e7c5e5 100644 --- a/src/runtime/11.0/alpine3.23-extra/arm64v8/Dockerfile +++ b/src/runtime/11.0/alpine3.23-extra/arm64v8/Dockerfile @@ -4,7 +4,7 @@ ARG REPO=mcr.microsoft.com/dotnet/runtime-deps FROM $REPO:11.0.0-preview.1-alpine3.23-extra-arm64v8 AS installer # Retrieve .NET Runtime -RUN dotnet_version=11.0.0-preview.1.26103.109 \ +RUN dotnet_version=11.0.0-preview.1.26104.118 \ && wget \ https://ci.dot.net/public/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-musl-arm64.tar.gz \ https://ci.dot.net/public-checksums/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-musl-arm64.tar.gz.sha512 \ @@ -20,7 +20,7 @@ RUN dotnet_version=11.0.0-preview.1.26103.109 \ FROM $REPO:11.0.0-preview.1-alpine3.23-extra-arm64v8 # .NET Runtime version -ENV DOTNET_VERSION=11.0.0-preview.1.26103.109 +ENV DOTNET_VERSION=11.0.0-preview.1.26104.118 COPY --from=installer ["/dotnet", "/usr/share/dotnet"] diff --git a/src/runtime/11.0/alpine3.23/amd64/Dockerfile b/src/runtime/11.0/alpine3.23/amd64/Dockerfile index 284c3fd88a..bbfa3cef3b 100644 --- a/src/runtime/11.0/alpine3.23/amd64/Dockerfile +++ b/src/runtime/11.0/alpine3.23/amd64/Dockerfile @@ -4,7 +4,7 @@ ARG REPO=mcr.microsoft.com/dotnet/runtime-deps FROM $REPO:11.0.0-preview.1-alpine3.23-amd64 AS installer # Retrieve .NET Runtime -RUN dotnet_version=11.0.0-preview.1.26103.109 \ +RUN dotnet_version=11.0.0-preview.1.26104.118 \ && wget \ https://ci.dot.net/public/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-musl-x64.tar.gz \ https://ci.dot.net/public-checksums/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-musl-x64.tar.gz.sha512 \ @@ -20,7 +20,7 @@ RUN dotnet_version=11.0.0-preview.1.26103.109 \ FROM $REPO:11.0.0-preview.1-alpine3.23-amd64 # .NET Runtime version -ENV DOTNET_VERSION=11.0.0-preview.1.26103.109 +ENV DOTNET_VERSION=11.0.0-preview.1.26104.118 COPY --from=installer ["/dotnet", "/usr/share/dotnet"] diff --git a/src/runtime/11.0/alpine3.23/arm32v7/Dockerfile b/src/runtime/11.0/alpine3.23/arm32v7/Dockerfile index 4744a3bf0c..3be31a94aa 100644 --- a/src/runtime/11.0/alpine3.23/arm32v7/Dockerfile +++ b/src/runtime/11.0/alpine3.23/arm32v7/Dockerfile @@ -4,7 +4,7 @@ ARG REPO=mcr.microsoft.com/dotnet/runtime-deps FROM $REPO:11.0.0-preview.1-alpine3.23-arm32v7 AS installer # Retrieve .NET Runtime -RUN dotnet_version=11.0.0-preview.1.26103.109 \ +RUN dotnet_version=11.0.0-preview.1.26104.118 \ && wget \ https://ci.dot.net/public/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-musl-arm.tar.gz \ https://ci.dot.net/public-checksums/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-musl-arm.tar.gz.sha512 \ @@ -20,7 +20,7 @@ RUN dotnet_version=11.0.0-preview.1.26103.109 \ FROM $REPO:11.0.0-preview.1-alpine3.23-arm32v7 # .NET Runtime version -ENV DOTNET_VERSION=11.0.0-preview.1.26103.109 +ENV DOTNET_VERSION=11.0.0-preview.1.26104.118 COPY --from=installer ["/dotnet", "/usr/share/dotnet"] diff --git a/src/runtime/11.0/alpine3.23/arm64v8/Dockerfile b/src/runtime/11.0/alpine3.23/arm64v8/Dockerfile index b6fea99e93..11673e0bfb 100644 --- a/src/runtime/11.0/alpine3.23/arm64v8/Dockerfile +++ b/src/runtime/11.0/alpine3.23/arm64v8/Dockerfile @@ -4,7 +4,7 @@ ARG REPO=mcr.microsoft.com/dotnet/runtime-deps FROM $REPO:11.0.0-preview.1-alpine3.23-arm64v8 AS installer # Retrieve .NET Runtime -RUN dotnet_version=11.0.0-preview.1.26103.109 \ +RUN dotnet_version=11.0.0-preview.1.26104.118 \ && wget \ https://ci.dot.net/public/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-musl-arm64.tar.gz \ https://ci.dot.net/public-checksums/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-musl-arm64.tar.gz.sha512 \ @@ -20,7 +20,7 @@ RUN dotnet_version=11.0.0-preview.1.26103.109 \ FROM $REPO:11.0.0-preview.1-alpine3.23-arm64v8 # .NET Runtime version -ENV DOTNET_VERSION=11.0.0-preview.1.26103.109 +ENV DOTNET_VERSION=11.0.0-preview.1.26104.118 COPY --from=installer ["/dotnet", "/usr/share/dotnet"] diff --git a/src/runtime/11.0/azurelinux3.0-distroless-extra/amd64/Dockerfile b/src/runtime/11.0/azurelinux3.0-distroless-extra/amd64/Dockerfile index 734a2f46b2..4ef18a926a 100644 --- a/src/runtime/11.0/azurelinux3.0-distroless-extra/amd64/Dockerfile +++ b/src/runtime/11.0/azurelinux3.0-distroless-extra/amd64/Dockerfile @@ -10,7 +10,7 @@ RUN tdnf install -y \ && tdnf clean all # Retrieve .NET Runtime -RUN dotnet_version=11.0.0-preview.1.26103.109 \ +RUN dotnet_version=11.0.0-preview.1.26104.118 \ && curl --fail --show-error --location \ --remote-name https://ci.dot.net/public/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-x64.tar.gz \ --remote-name https://ci.dot.net/public-checksums/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-x64.tar.gz.sha512 \ @@ -29,7 +29,7 @@ RUN mkdir /dotnet-symlink \ FROM $REPO:11.0.0-preview.1-azurelinux3.0-distroless-extra-amd64 # .NET Runtime version -ENV DOTNET_VERSION=11.0.0-preview.1.26103.109 +ENV DOTNET_VERSION=11.0.0-preview.1.26104.118 COPY --from=installer ["/usr/share/dotnet", "/usr/share/dotnet"] COPY --from=installer ["/dotnet-symlink", "/usr/bin"] diff --git a/src/runtime/11.0/azurelinux3.0-distroless-extra/arm64v8/Dockerfile b/src/runtime/11.0/azurelinux3.0-distroless-extra/arm64v8/Dockerfile index c0dfe101c9..67967a839c 100644 --- a/src/runtime/11.0/azurelinux3.0-distroless-extra/arm64v8/Dockerfile +++ b/src/runtime/11.0/azurelinux3.0-distroless-extra/arm64v8/Dockerfile @@ -10,7 +10,7 @@ RUN tdnf install -y \ && tdnf clean all # Retrieve .NET Runtime -RUN dotnet_version=11.0.0-preview.1.26103.109 \ +RUN dotnet_version=11.0.0-preview.1.26104.118 \ && curl --fail --show-error --location \ --remote-name https://ci.dot.net/public/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-arm64.tar.gz \ --remote-name https://ci.dot.net/public-checksums/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-arm64.tar.gz.sha512 \ @@ -29,7 +29,7 @@ RUN mkdir /dotnet-symlink \ FROM $REPO:11.0.0-preview.1-azurelinux3.0-distroless-extra-arm64v8 # .NET Runtime version -ENV DOTNET_VERSION=11.0.0-preview.1.26103.109 +ENV DOTNET_VERSION=11.0.0-preview.1.26104.118 COPY --from=installer ["/usr/share/dotnet", "/usr/share/dotnet"] COPY --from=installer ["/dotnet-symlink", "/usr/bin"] diff --git a/src/runtime/11.0/azurelinux3.0-distroless/amd64/Dockerfile b/src/runtime/11.0/azurelinux3.0-distroless/amd64/Dockerfile index 76d5591089..1921aa8330 100644 --- a/src/runtime/11.0/azurelinux3.0-distroless/amd64/Dockerfile +++ b/src/runtime/11.0/azurelinux3.0-distroless/amd64/Dockerfile @@ -10,7 +10,7 @@ RUN tdnf install -y \ && tdnf clean all # Retrieve .NET Runtime -RUN dotnet_version=11.0.0-preview.1.26103.109 \ +RUN dotnet_version=11.0.0-preview.1.26104.118 \ && curl --fail --show-error --location \ --remote-name https://ci.dot.net/public/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-x64.tar.gz \ --remote-name https://ci.dot.net/public-checksums/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-x64.tar.gz.sha512 \ @@ -29,7 +29,7 @@ RUN mkdir /dotnet-symlink \ FROM $REPO:11.0.0-preview.1-azurelinux3.0-distroless-amd64 # .NET Runtime version -ENV DOTNET_VERSION=11.0.0-preview.1.26103.109 +ENV DOTNET_VERSION=11.0.0-preview.1.26104.118 COPY --from=installer ["/usr/share/dotnet", "/usr/share/dotnet"] COPY --from=installer ["/dotnet-symlink", "/usr/bin"] diff --git a/src/runtime/11.0/azurelinux3.0-distroless/arm64v8/Dockerfile b/src/runtime/11.0/azurelinux3.0-distroless/arm64v8/Dockerfile index 9bb4d63ffe..6383affd44 100644 --- a/src/runtime/11.0/azurelinux3.0-distroless/arm64v8/Dockerfile +++ b/src/runtime/11.0/azurelinux3.0-distroless/arm64v8/Dockerfile @@ -10,7 +10,7 @@ RUN tdnf install -y \ && tdnf clean all # Retrieve .NET Runtime -RUN dotnet_version=11.0.0-preview.1.26103.109 \ +RUN dotnet_version=11.0.0-preview.1.26104.118 \ && curl --fail --show-error --location \ --remote-name https://ci.dot.net/public/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-arm64.tar.gz \ --remote-name https://ci.dot.net/public-checksums/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-arm64.tar.gz.sha512 \ @@ -29,7 +29,7 @@ RUN mkdir /dotnet-symlink \ FROM $REPO:11.0.0-preview.1-azurelinux3.0-distroless-arm64v8 # .NET Runtime version -ENV DOTNET_VERSION=11.0.0-preview.1.26103.109 +ENV DOTNET_VERSION=11.0.0-preview.1.26104.118 COPY --from=installer ["/usr/share/dotnet", "/usr/share/dotnet"] COPY --from=installer ["/dotnet-symlink", "/usr/bin"] diff --git a/src/runtime/11.0/azurelinux3.0/amd64/Dockerfile b/src/runtime/11.0/azurelinux3.0/amd64/Dockerfile index 50dbe465b3..4813e89ea2 100644 --- a/src/runtime/11.0/azurelinux3.0/amd64/Dockerfile +++ b/src/runtime/11.0/azurelinux3.0/amd64/Dockerfile @@ -8,7 +8,7 @@ RUN tdnf install -y \ && tdnf clean all # Retrieve .NET Runtime -RUN dotnet_version=11.0.0-preview.1.26103.109 \ +RUN dotnet_version=11.0.0-preview.1.26104.118 \ && curl --fail --show-error --location \ --remote-name https://ci.dot.net/public/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-x64.tar.gz \ --remote-name https://ci.dot.net/public-checksums/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-x64.tar.gz.sha512 \ @@ -24,7 +24,7 @@ RUN dotnet_version=11.0.0-preview.1.26103.109 \ FROM $REPO:11.0.0-preview.1-azurelinux3.0-amd64 # .NET Runtime version -ENV DOTNET_VERSION=11.0.0-preview.1.26103.109 +ENV DOTNET_VERSION=11.0.0-preview.1.26104.118 COPY --from=installer ["/dotnet", "/usr/share/dotnet"] diff --git a/src/runtime/11.0/azurelinux3.0/arm64v8/Dockerfile b/src/runtime/11.0/azurelinux3.0/arm64v8/Dockerfile index 170234f2cb..621a9c6ef0 100644 --- a/src/runtime/11.0/azurelinux3.0/arm64v8/Dockerfile +++ b/src/runtime/11.0/azurelinux3.0/arm64v8/Dockerfile @@ -8,7 +8,7 @@ RUN tdnf install -y \ && tdnf clean all # Retrieve .NET Runtime -RUN dotnet_version=11.0.0-preview.1.26103.109 \ +RUN dotnet_version=11.0.0-preview.1.26104.118 \ && curl --fail --show-error --location \ --remote-name https://ci.dot.net/public/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-arm64.tar.gz \ --remote-name https://ci.dot.net/public-checksums/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-arm64.tar.gz.sha512 \ @@ -24,7 +24,7 @@ RUN dotnet_version=11.0.0-preview.1.26103.109 \ FROM $REPO:11.0.0-preview.1-azurelinux3.0-arm64v8 # .NET Runtime version -ENV DOTNET_VERSION=11.0.0-preview.1.26103.109 +ENV DOTNET_VERSION=11.0.0-preview.1.26104.118 COPY --from=installer ["/dotnet", "/usr/share/dotnet"] diff --git a/src/runtime/11.0/nanoserver-ltsc2025/amd64/Dockerfile b/src/runtime/11.0/nanoserver-ltsc2025/amd64/Dockerfile index dd63c16006..f6bd78e9c2 100644 --- a/src/runtime/11.0/nanoserver-ltsc2025/amd64/Dockerfile +++ b/src/runtime/11.0/nanoserver-ltsc2025/amd64/Dockerfile @@ -8,7 +8,7 @@ RUN powershell -Command ` $ErrorActionPreference = 'Stop'; ` $ProgressPreference = 'SilentlyContinue'; ` ` - $dotnet_version = '11.0.0-preview.1.26103.109'; ` + $dotnet_version = '11.0.0-preview.1.26104.118'; ` $dotnet_file = 'dotnet-runtime-' + $dotnet_version + '-win-x64.zip'; ` $dotnet_sha512_file = $dotnet_file + '.sha512'; ` ` @@ -36,7 +36,7 @@ ENV ` # Enable detection of running in a container DOTNET_RUNNING_IN_CONTAINER=true ` # .NET Runtime version - DOTNET_VERSION=11.0.0-preview.1.26103.109 + DOTNET_VERSION=11.0.0-preview.1.26104.118 # In order to set system PATH, ContainerAdministrator must be used USER ContainerAdministrator diff --git a/src/runtime/11.0/resolute-chiseled-extra/amd64/Dockerfile b/src/runtime/11.0/resolute-chiseled-extra/amd64/Dockerfile index cb1d92c3a4..da776b3f9e 100644 --- a/src/runtime/11.0/resolute-chiseled-extra/amd64/Dockerfile +++ b/src/runtime/11.0/resolute-chiseled-extra/amd64/Dockerfile @@ -4,7 +4,7 @@ ARG REPO=mcr.microsoft.com/dotnet/runtime-deps FROM amd64/buildpack-deps:resolute-curl AS installer # Retrieve .NET Runtime -RUN dotnet_version=11.0.0-preview.1.26103.109 \ +RUN dotnet_version=11.0.0-preview.1.26104.118 \ && curl --fail --show-error --location \ --remote-name https://ci.dot.net/public/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-x64.tar.gz \ --remote-name https://ci.dot.net/public-checksums/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-x64.tar.gz.sha512 \ @@ -23,7 +23,7 @@ RUN mkdir /dotnet-symlink \ FROM $REPO:11.0.0-preview.1-resolute-chiseled-extra-amd64 # .NET Runtime version -ENV DOTNET_VERSION=11.0.0-preview.1.26103.109 +ENV DOTNET_VERSION=11.0.0-preview.1.26104.118 COPY --from=installer ["/usr/share/dotnet", "/usr/share/dotnet"] COPY --from=installer ["/dotnet-symlink", "/usr/bin"] diff --git a/src/runtime/11.0/resolute-chiseled-extra/arm32v7/Dockerfile b/src/runtime/11.0/resolute-chiseled-extra/arm32v7/Dockerfile index fba99baa83..c7bc60a3ac 100644 --- a/src/runtime/11.0/resolute-chiseled-extra/arm32v7/Dockerfile +++ b/src/runtime/11.0/resolute-chiseled-extra/arm32v7/Dockerfile @@ -4,7 +4,7 @@ ARG REPO=mcr.microsoft.com/dotnet/runtime-deps FROM arm32v7/buildpack-deps:jammy-curl AS installer # Retrieve .NET Runtime -RUN dotnet_version=11.0.0-preview.1.26103.109 \ +RUN dotnet_version=11.0.0-preview.1.26104.118 \ && curl --fail --show-error --location \ --remote-name https://ci.dot.net/public/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-arm.tar.gz \ --remote-name https://ci.dot.net/public-checksums/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-arm.tar.gz.sha512 \ @@ -23,7 +23,7 @@ RUN mkdir /dotnet-symlink \ FROM $REPO:11.0.0-preview.1-resolute-chiseled-extra-arm32v7 # .NET Runtime version -ENV DOTNET_VERSION=11.0.0-preview.1.26103.109 +ENV DOTNET_VERSION=11.0.0-preview.1.26104.118 COPY --from=installer ["/usr/share/dotnet", "/usr/share/dotnet"] COPY --from=installer ["/dotnet-symlink", "/usr/bin"] diff --git a/src/runtime/11.0/resolute-chiseled-extra/arm64v8/Dockerfile b/src/runtime/11.0/resolute-chiseled-extra/arm64v8/Dockerfile index c0871e7c29..da35ac179c 100644 --- a/src/runtime/11.0/resolute-chiseled-extra/arm64v8/Dockerfile +++ b/src/runtime/11.0/resolute-chiseled-extra/arm64v8/Dockerfile @@ -4,7 +4,7 @@ ARG REPO=mcr.microsoft.com/dotnet/runtime-deps FROM arm64v8/buildpack-deps:resolute-curl AS installer # Retrieve .NET Runtime -RUN dotnet_version=11.0.0-preview.1.26103.109 \ +RUN dotnet_version=11.0.0-preview.1.26104.118 \ && curl --fail --show-error --location \ --remote-name https://ci.dot.net/public/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-arm64.tar.gz \ --remote-name https://ci.dot.net/public-checksums/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-arm64.tar.gz.sha512 \ @@ -23,7 +23,7 @@ RUN mkdir /dotnet-symlink \ FROM $REPO:11.0.0-preview.1-resolute-chiseled-extra-arm64v8 # .NET Runtime version -ENV DOTNET_VERSION=11.0.0-preview.1.26103.109 +ENV DOTNET_VERSION=11.0.0-preview.1.26104.118 COPY --from=installer ["/usr/share/dotnet", "/usr/share/dotnet"] COPY --from=installer ["/dotnet-symlink", "/usr/bin"] diff --git a/src/runtime/11.0/resolute-chiseled/amd64/Dockerfile b/src/runtime/11.0/resolute-chiseled/amd64/Dockerfile index 268c33ef0a..d6c4a7507a 100644 --- a/src/runtime/11.0/resolute-chiseled/amd64/Dockerfile +++ b/src/runtime/11.0/resolute-chiseled/amd64/Dockerfile @@ -4,7 +4,7 @@ ARG REPO=mcr.microsoft.com/dotnet/runtime-deps FROM amd64/buildpack-deps:resolute-curl AS installer # Retrieve .NET Runtime -RUN dotnet_version=11.0.0-preview.1.26103.109 \ +RUN dotnet_version=11.0.0-preview.1.26104.118 \ && curl --fail --show-error --location \ --remote-name https://ci.dot.net/public/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-x64.tar.gz \ --remote-name https://ci.dot.net/public-checksums/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-x64.tar.gz.sha512 \ @@ -23,7 +23,7 @@ RUN mkdir /dotnet-symlink \ FROM $REPO:11.0.0-preview.1-resolute-chiseled-amd64 # .NET Runtime version -ENV DOTNET_VERSION=11.0.0-preview.1.26103.109 +ENV DOTNET_VERSION=11.0.0-preview.1.26104.118 COPY --from=installer ["/usr/share/dotnet", "/usr/share/dotnet"] COPY --from=installer ["/dotnet-symlink", "/usr/bin"] diff --git a/src/runtime/11.0/resolute-chiseled/arm32v7/Dockerfile b/src/runtime/11.0/resolute-chiseled/arm32v7/Dockerfile index 43a66d9611..019446cc76 100644 --- a/src/runtime/11.0/resolute-chiseled/arm32v7/Dockerfile +++ b/src/runtime/11.0/resolute-chiseled/arm32v7/Dockerfile @@ -4,7 +4,7 @@ ARG REPO=mcr.microsoft.com/dotnet/runtime-deps FROM arm32v7/buildpack-deps:jammy-curl AS installer # Retrieve .NET Runtime -RUN dotnet_version=11.0.0-preview.1.26103.109 \ +RUN dotnet_version=11.0.0-preview.1.26104.118 \ && curl --fail --show-error --location \ --remote-name https://ci.dot.net/public/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-arm.tar.gz \ --remote-name https://ci.dot.net/public-checksums/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-arm.tar.gz.sha512 \ @@ -23,7 +23,7 @@ RUN mkdir /dotnet-symlink \ FROM $REPO:11.0.0-preview.1-resolute-chiseled-arm32v7 # .NET Runtime version -ENV DOTNET_VERSION=11.0.0-preview.1.26103.109 +ENV DOTNET_VERSION=11.0.0-preview.1.26104.118 COPY --from=installer ["/usr/share/dotnet", "/usr/share/dotnet"] COPY --from=installer ["/dotnet-symlink", "/usr/bin"] diff --git a/src/runtime/11.0/resolute-chiseled/arm64v8/Dockerfile b/src/runtime/11.0/resolute-chiseled/arm64v8/Dockerfile index f2fd29d5d3..5110fd6fc4 100644 --- a/src/runtime/11.0/resolute-chiseled/arm64v8/Dockerfile +++ b/src/runtime/11.0/resolute-chiseled/arm64v8/Dockerfile @@ -4,7 +4,7 @@ ARG REPO=mcr.microsoft.com/dotnet/runtime-deps FROM arm64v8/buildpack-deps:resolute-curl AS installer # Retrieve .NET Runtime -RUN dotnet_version=11.0.0-preview.1.26103.109 \ +RUN dotnet_version=11.0.0-preview.1.26104.118 \ && curl --fail --show-error --location \ --remote-name https://ci.dot.net/public/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-arm64.tar.gz \ --remote-name https://ci.dot.net/public-checksums/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-arm64.tar.gz.sha512 \ @@ -23,7 +23,7 @@ RUN mkdir /dotnet-symlink \ FROM $REPO:11.0.0-preview.1-resolute-chiseled-arm64v8 # .NET Runtime version -ENV DOTNET_VERSION=11.0.0-preview.1.26103.109 +ENV DOTNET_VERSION=11.0.0-preview.1.26104.118 COPY --from=installer ["/usr/share/dotnet", "/usr/share/dotnet"] COPY --from=installer ["/dotnet-symlink", "/usr/bin"] diff --git a/src/runtime/11.0/resolute/amd64/Dockerfile b/src/runtime/11.0/resolute/amd64/Dockerfile index 3dce0f0e5e..ba5667d91f 100644 --- a/src/runtime/11.0/resolute/amd64/Dockerfile +++ b/src/runtime/11.0/resolute/amd64/Dockerfile @@ -4,7 +4,7 @@ ARG REPO=mcr.microsoft.com/dotnet/runtime-deps FROM amd64/buildpack-deps:resolute-curl AS installer # Retrieve .NET Runtime -RUN dotnet_version=11.0.0-preview.1.26103.109 \ +RUN dotnet_version=11.0.0-preview.1.26104.118 \ && curl --fail --show-error --location \ --remote-name https://ci.dot.net/public/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-x64.tar.gz \ --remote-name https://ci.dot.net/public-checksums/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-x64.tar.gz.sha512 \ @@ -20,7 +20,7 @@ RUN dotnet_version=11.0.0-preview.1.26103.109 \ FROM $REPO:11.0.0-preview.1-resolute-amd64 # .NET Runtime version -ENV DOTNET_VERSION=11.0.0-preview.1.26103.109 +ENV DOTNET_VERSION=11.0.0-preview.1.26104.118 COPY --from=installer ["/dotnet", "/usr/share/dotnet"] diff --git a/src/runtime/11.0/resolute/arm32v7/Dockerfile b/src/runtime/11.0/resolute/arm32v7/Dockerfile index 03578c593a..f92e33502b 100644 --- a/src/runtime/11.0/resolute/arm32v7/Dockerfile +++ b/src/runtime/11.0/resolute/arm32v7/Dockerfile @@ -4,7 +4,7 @@ ARG REPO=mcr.microsoft.com/dotnet/runtime-deps FROM arm32v7/buildpack-deps:jammy-curl AS installer # Retrieve .NET Runtime -RUN dotnet_version=11.0.0-preview.1.26103.109 \ +RUN dotnet_version=11.0.0-preview.1.26104.118 \ && curl --fail --show-error --location \ --remote-name https://ci.dot.net/public/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-arm.tar.gz \ --remote-name https://ci.dot.net/public-checksums/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-arm.tar.gz.sha512 \ @@ -20,7 +20,7 @@ RUN dotnet_version=11.0.0-preview.1.26103.109 \ FROM $REPO:11.0.0-preview.1-resolute-arm32v7 # .NET Runtime version -ENV DOTNET_VERSION=11.0.0-preview.1.26103.109 +ENV DOTNET_VERSION=11.0.0-preview.1.26104.118 COPY --from=installer ["/dotnet", "/usr/share/dotnet"] diff --git a/src/runtime/11.0/resolute/arm64v8/Dockerfile b/src/runtime/11.0/resolute/arm64v8/Dockerfile index 3a7924a194..1233be92b5 100644 --- a/src/runtime/11.0/resolute/arm64v8/Dockerfile +++ b/src/runtime/11.0/resolute/arm64v8/Dockerfile @@ -4,7 +4,7 @@ ARG REPO=mcr.microsoft.com/dotnet/runtime-deps FROM arm64v8/buildpack-deps:resolute-curl AS installer # Retrieve .NET Runtime -RUN dotnet_version=11.0.0-preview.1.26103.109 \ +RUN dotnet_version=11.0.0-preview.1.26104.118 \ && curl --fail --show-error --location \ --remote-name https://ci.dot.net/public/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-arm64.tar.gz \ --remote-name https://ci.dot.net/public-checksums/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-arm64.tar.gz.sha512 \ @@ -20,7 +20,7 @@ RUN dotnet_version=11.0.0-preview.1.26103.109 \ FROM $REPO:11.0.0-preview.1-resolute-arm64v8 # .NET Runtime version -ENV DOTNET_VERSION=11.0.0-preview.1.26103.109 +ENV DOTNET_VERSION=11.0.0-preview.1.26104.118 COPY --from=installer ["/dotnet", "/usr/share/dotnet"] diff --git a/src/runtime/11.0/windowsservercore-ltsc2025/amd64/Dockerfile b/src/runtime/11.0/windowsservercore-ltsc2025/amd64/Dockerfile index 3bb13672ea..497b13592a 100644 --- a/src/runtime/11.0/windowsservercore-ltsc2025/amd64/Dockerfile +++ b/src/runtime/11.0/windowsservercore-ltsc2025/amd64/Dockerfile @@ -8,7 +8,7 @@ RUN powershell -Command ` $ErrorActionPreference = 'Stop'; ` $ProgressPreference = 'SilentlyContinue'; ` ` - $dotnet_version = '11.0.0-preview.1.26103.109'; ` + $dotnet_version = '11.0.0-preview.1.26104.118'; ` $dotnet_file = 'dotnet-runtime-' + $dotnet_version + '-win-x64.zip'; ` $dotnet_sha512_file = $dotnet_file + '.sha512'; ` ` @@ -36,7 +36,7 @@ ENV ` # Enable detection of running in a container DOTNET_RUNNING_IN_CONTAINER=true ` # .NET Runtime version - DOTNET_VERSION=11.0.0-preview.1.26103.109 + DOTNET_VERSION=11.0.0-preview.1.26104.118 RUN setx /M PATH "%PATH%;C:\Program Files\dotnet" diff --git a/src/sdk/10.0/nanoserver-ltsc2022/amd64/Dockerfile b/src/sdk/10.0/nanoserver-ltsc2022/amd64/Dockerfile index cd899870ca..8d3879fbdf 100644 --- a/src/sdk/10.0/nanoserver-ltsc2022/amd64/Dockerfile +++ b/src/sdk/10.0/nanoserver-ltsc2022/amd64/Dockerfile @@ -10,8 +10,8 @@ RUN powershell -Command " ` $ErrorActionPreference = 'Stop'; ` $ProgressPreference = 'SilentlyContinue'; ` ` - Invoke-WebRequest -OutFile mingit.zip https://github.com/git-for-windows/git/releases/download/v2.52.0.windows.1/MinGit-2.52.0-64-bit.zip; ` - $mingit_sha256 = 'f42a561840627747ad48e6ece05a14093292d31f3393a401a7f7c780ee7695c2'; ` + Invoke-WebRequest -OutFile mingit.zip https://github.com/git-for-windows/git/releases/download/v2.53.0.windows.1/MinGit-2.53.0-64-bit.zip; ` + $mingit_sha256 = '82b562c918ec87b2ef5316ed79bb199e3a25719bb871a0f10294acf21ebd08cd'; ` if ((Get-FileHash mingit.zip -Algorithm sha256).Hash -ne $mingit_sha256) { ` Write-Host 'CHECKSUM VERIFICATION FAILED!'; ` exit 1; ` diff --git a/src/sdk/10.0/nanoserver-ltsc2025/amd64/Dockerfile b/src/sdk/10.0/nanoserver-ltsc2025/amd64/Dockerfile index bff29bdf10..55116636ed 100644 --- a/src/sdk/10.0/nanoserver-ltsc2025/amd64/Dockerfile +++ b/src/sdk/10.0/nanoserver-ltsc2025/amd64/Dockerfile @@ -10,8 +10,8 @@ RUN powershell -Command " ` $ErrorActionPreference = 'Stop'; ` $ProgressPreference = 'SilentlyContinue'; ` ` - Invoke-WebRequest -OutFile mingit.zip https://github.com/git-for-windows/git/releases/download/v2.52.0.windows.1/MinGit-2.52.0-64-bit.zip; ` - $mingit_sha256 = 'f42a561840627747ad48e6ece05a14093292d31f3393a401a7f7c780ee7695c2'; ` + Invoke-WebRequest -OutFile mingit.zip https://github.com/git-for-windows/git/releases/download/v2.53.0.windows.1/MinGit-2.53.0-64-bit.zip; ` + $mingit_sha256 = '82b562c918ec87b2ef5316ed79bb199e3a25719bb871a0f10294acf21ebd08cd'; ` if ((Get-FileHash mingit.zip -Algorithm sha256).Hash -ne $mingit_sha256) { ` Write-Host 'CHECKSUM VERIFICATION FAILED!'; ` exit 1; ` diff --git a/src/sdk/10.0/windowsservercore-ltsc2022/amd64/Dockerfile b/src/sdk/10.0/windowsservercore-ltsc2022/amd64/Dockerfile index 18f892e5cd..19432b89b9 100644 --- a/src/sdk/10.0/windowsservercore-ltsc2022/amd64/Dockerfile +++ b/src/sdk/10.0/windowsservercore-ltsc2022/amd64/Dockerfile @@ -10,8 +10,8 @@ RUN powershell -Command " ` $ErrorActionPreference = 'Stop'; ` $ProgressPreference = 'SilentlyContinue'; ` ` - Invoke-WebRequest -OutFile mingit.zip https://github.com/git-for-windows/git/releases/download/v2.52.0.windows.1/MinGit-2.52.0-64-bit.zip; ` - $mingit_sha256 = 'f42a561840627747ad48e6ece05a14093292d31f3393a401a7f7c780ee7695c2'; ` + Invoke-WebRequest -OutFile mingit.zip https://github.com/git-for-windows/git/releases/download/v2.53.0.windows.1/MinGit-2.53.0-64-bit.zip; ` + $mingit_sha256 = '82b562c918ec87b2ef5316ed79bb199e3a25719bb871a0f10294acf21ebd08cd'; ` if ((Get-FileHash mingit.zip -Algorithm sha256).Hash -ne $mingit_sha256) { ` Write-Host 'CHECKSUM VERIFICATION FAILED!'; ` exit 1; ` diff --git a/src/sdk/10.0/windowsservercore-ltsc2025/amd64/Dockerfile b/src/sdk/10.0/windowsservercore-ltsc2025/amd64/Dockerfile index 15403dd5ed..9bf6457100 100644 --- a/src/sdk/10.0/windowsservercore-ltsc2025/amd64/Dockerfile +++ b/src/sdk/10.0/windowsservercore-ltsc2025/amd64/Dockerfile @@ -10,8 +10,8 @@ RUN powershell -Command " ` $ErrorActionPreference = 'Stop'; ` $ProgressPreference = 'SilentlyContinue'; ` ` - Invoke-WebRequest -OutFile mingit.zip https://github.com/git-for-windows/git/releases/download/v2.52.0.windows.1/MinGit-2.52.0-64-bit.zip; ` - $mingit_sha256 = 'f42a561840627747ad48e6ece05a14093292d31f3393a401a7f7c780ee7695c2'; ` + Invoke-WebRequest -OutFile mingit.zip https://github.com/git-for-windows/git/releases/download/v2.53.0.windows.1/MinGit-2.53.0-64-bit.zip; ` + $mingit_sha256 = '82b562c918ec87b2ef5316ed79bb199e3a25719bb871a0f10294acf21ebd08cd'; ` if ((Get-FileHash mingit.zip -Algorithm sha256).Hash -ne $mingit_sha256) { ` Write-Host 'CHECKSUM VERIFICATION FAILED!'; ` exit 1; ` diff --git a/src/sdk/11.0/alpine3.23/amd64/Dockerfile b/src/sdk/11.0/alpine3.23/amd64/Dockerfile index 2db3b04057..72704994e0 100644 --- a/src/sdk/11.0/alpine3.23/amd64/Dockerfile +++ b/src/sdk/11.0/alpine3.23/amd64/Dockerfile @@ -3,7 +3,7 @@ ARG REPO=mcr.microsoft.com/dotnet/aspnet FROM $REPO:11.0.0-preview.1-alpine3.23-amd64 AS installer # Install .NET SDK -RUN dotnet_sdk_version=11.0.100-preview.1.26103.109 \ +RUN dotnet_sdk_version=11.0.100-preview.1.26104.118 \ && wget \ https://ci.dot.net/public/Sdk/$dotnet_sdk_version/dotnet-sdk-$dotnet_sdk_version-linux-musl-x64.tar.gz \ https://ci.dot.net/public-checksums/Sdk/$dotnet_sdk_version/dotnet-sdk-$dotnet_sdk_version-linux-musl-x64.tar.gz.sha512 \ @@ -24,7 +24,7 @@ ENV \ # Do not show first run text DOTNET_NOLOGO=true \ # SDK version - DOTNET_SDK_VERSION=11.0.100-preview.1.26103.109 \ + DOTNET_SDK_VERSION=11.0.100-preview.1.26104.118 \ # 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) diff --git a/src/sdk/11.0/alpine3.23/arm32v7/Dockerfile b/src/sdk/11.0/alpine3.23/arm32v7/Dockerfile index 7dcd89b8cc..2c6f46521f 100644 --- a/src/sdk/11.0/alpine3.23/arm32v7/Dockerfile +++ b/src/sdk/11.0/alpine3.23/arm32v7/Dockerfile @@ -3,7 +3,7 @@ ARG REPO=mcr.microsoft.com/dotnet/aspnet FROM $REPO:11.0.0-preview.1-alpine3.23-arm32v7 AS installer # Install .NET SDK -RUN dotnet_sdk_version=11.0.100-preview.1.26103.109 \ +RUN dotnet_sdk_version=11.0.100-preview.1.26104.118 \ && wget \ https://ci.dot.net/public/Sdk/$dotnet_sdk_version/dotnet-sdk-$dotnet_sdk_version-linux-musl-arm.tar.gz \ https://ci.dot.net/public-checksums/Sdk/$dotnet_sdk_version/dotnet-sdk-$dotnet_sdk_version-linux-musl-arm.tar.gz.sha512 \ @@ -24,7 +24,7 @@ ENV \ # Do not show first run text DOTNET_NOLOGO=true \ # SDK version - DOTNET_SDK_VERSION=11.0.100-preview.1.26103.109 \ + DOTNET_SDK_VERSION=11.0.100-preview.1.26104.118 \ # 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) diff --git a/src/sdk/11.0/alpine3.23/arm64v8/Dockerfile b/src/sdk/11.0/alpine3.23/arm64v8/Dockerfile index 132a65dab7..bfeedfcb3a 100644 --- a/src/sdk/11.0/alpine3.23/arm64v8/Dockerfile +++ b/src/sdk/11.0/alpine3.23/arm64v8/Dockerfile @@ -3,7 +3,7 @@ ARG REPO=mcr.microsoft.com/dotnet/aspnet FROM $REPO:11.0.0-preview.1-alpine3.23-arm64v8 AS installer # Install .NET SDK -RUN dotnet_sdk_version=11.0.100-preview.1.26103.109 \ +RUN dotnet_sdk_version=11.0.100-preview.1.26104.118 \ && wget \ https://ci.dot.net/public/Sdk/$dotnet_sdk_version/dotnet-sdk-$dotnet_sdk_version-linux-musl-arm64.tar.gz \ https://ci.dot.net/public-checksums/Sdk/$dotnet_sdk_version/dotnet-sdk-$dotnet_sdk_version-linux-musl-arm64.tar.gz.sha512 \ @@ -24,7 +24,7 @@ ENV \ # Do not show first run text DOTNET_NOLOGO=true \ # SDK version - DOTNET_SDK_VERSION=11.0.100-preview.1.26103.109 \ + DOTNET_SDK_VERSION=11.0.100-preview.1.26104.118 \ # 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) diff --git a/src/sdk/11.0/azurelinux3.0/amd64/Dockerfile b/src/sdk/11.0/azurelinux3.0/amd64/Dockerfile index 319c908438..46ee7ce766 100644 --- a/src/sdk/11.0/azurelinux3.0/amd64/Dockerfile +++ b/src/sdk/11.0/azurelinux3.0/amd64/Dockerfile @@ -7,7 +7,7 @@ RUN tdnf install -y \ && tdnf clean all # Install .NET SDK -RUN dotnet_sdk_version=11.0.100-preview.1.26103.109 \ +RUN dotnet_sdk_version=11.0.100-preview.1.26104.118 \ && curl --fail --show-error --location \ --remote-name https://ci.dot.net/public/Sdk/$dotnet_sdk_version/dotnet-sdk-$dotnet_sdk_version-linux-x64.tar.gz \ --remote-name https://ci.dot.net/public-checksums/Sdk/$dotnet_sdk_version/dotnet-sdk-$dotnet_sdk_version-linux-x64.tar.gz.sha512 \ @@ -28,7 +28,7 @@ ENV \ # Do not show first run text DOTNET_NOLOGO=true \ # SDK version - DOTNET_SDK_VERSION=11.0.100-preview.1.26103.109 \ + DOTNET_SDK_VERSION=11.0.100-preview.1.26104.118 \ # 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 diff --git a/src/sdk/11.0/azurelinux3.0/arm64v8/Dockerfile b/src/sdk/11.0/azurelinux3.0/arm64v8/Dockerfile index 2f97521a52..1d7f6005d9 100644 --- a/src/sdk/11.0/azurelinux3.0/arm64v8/Dockerfile +++ b/src/sdk/11.0/azurelinux3.0/arm64v8/Dockerfile @@ -7,7 +7,7 @@ RUN tdnf install -y \ && tdnf clean all # Install .NET SDK -RUN dotnet_sdk_version=11.0.100-preview.1.26103.109 \ +RUN dotnet_sdk_version=11.0.100-preview.1.26104.118 \ && curl --fail --show-error --location \ --remote-name https://ci.dot.net/public/Sdk/$dotnet_sdk_version/dotnet-sdk-$dotnet_sdk_version-linux-arm64.tar.gz \ --remote-name https://ci.dot.net/public-checksums/Sdk/$dotnet_sdk_version/dotnet-sdk-$dotnet_sdk_version-linux-arm64.tar.gz.sha512 \ @@ -28,7 +28,7 @@ ENV \ # Do not show first run text DOTNET_NOLOGO=true \ # SDK version - DOTNET_SDK_VERSION=11.0.100-preview.1.26103.109 \ + DOTNET_SDK_VERSION=11.0.100-preview.1.26104.118 \ # 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 diff --git a/src/sdk/11.0/nanoserver-ltsc2025/amd64/Dockerfile b/src/sdk/11.0/nanoserver-ltsc2025/amd64/Dockerfile index d614d1129f..8bb6970d7a 100644 --- a/src/sdk/11.0/nanoserver-ltsc2025/amd64/Dockerfile +++ b/src/sdk/11.0/nanoserver-ltsc2025/amd64/Dockerfile @@ -10,8 +10,8 @@ RUN powershell -Command " ` $ErrorActionPreference = 'Stop'; ` $ProgressPreference = 'SilentlyContinue'; ` ` - Invoke-WebRequest -OutFile mingit.zip https://github.com/git-for-windows/git/releases/download/v2.52.0.windows.1/MinGit-2.52.0-64-bit.zip; ` - $mingit_sha256 = 'f42a561840627747ad48e6ece05a14093292d31f3393a401a7f7c780ee7695c2'; ` + Invoke-WebRequest -OutFile mingit.zip https://github.com/git-for-windows/git/releases/download/v2.53.0.windows.1/MinGit-2.53.0-64-bit.zip; ` + $mingit_sha256 = '82b562c918ec87b2ef5316ed79bb199e3a25719bb871a0f10294acf21ebd08cd'; ` if ((Get-FileHash mingit.zip -Algorithm sha256).Hash -ne $mingit_sha256) { ` Write-Host 'CHECKSUM VERIFICATION FAILED!'; ` exit 1; ` @@ -25,7 +25,7 @@ RUN powershell -Command " ` $ProgressPreference = 'SilentlyContinue'; ` ` # Retrieve .NET SDK - $dotnet_sdk_version = '11.0.100-preview.1.26103.109'; ` + $dotnet_sdk_version = '11.0.100-preview.1.26104.118'; ` $dotnet_file = 'dotnet-sdk-' + $dotnet_sdk_version + '-win-x64.zip'; ` $dotnet_sha512_file = $dotnet_file + '.sha512'; ` ` @@ -72,7 +72,7 @@ ENV ` # Do not show first run text DOTNET_NOLOGO=true ` # SDK version - DOTNET_SDK_VERSION=11.0.100-preview.1.26103.109 ` + DOTNET_SDK_VERSION=11.0.100-preview.1.26104.118 ` # 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 diff --git a/src/sdk/11.0/resolute/amd64/Dockerfile b/src/sdk/11.0/resolute/amd64/Dockerfile index 7a7b63d82e..fa717f980e 100644 --- a/src/sdk/11.0/resolute/amd64/Dockerfile +++ b/src/sdk/11.0/resolute/amd64/Dockerfile @@ -3,7 +3,7 @@ ARG REPO=mcr.microsoft.com/dotnet/aspnet FROM amd64/buildpack-deps:resolute-curl AS installer # Install .NET SDK -RUN dotnet_sdk_version=11.0.100-preview.1.26103.109 \ +RUN dotnet_sdk_version=11.0.100-preview.1.26104.118 \ && curl --fail --show-error --location \ --remote-name https://ci.dot.net/public/Sdk/$dotnet_sdk_version/dotnet-sdk-$dotnet_sdk_version-linux-x64.tar.gz \ --remote-name https://ci.dot.net/public-checksums/Sdk/$dotnet_sdk_version/dotnet-sdk-$dotnet_sdk_version-linux-x64.tar.gz.sha512 \ @@ -24,7 +24,7 @@ ENV \ # Do not show first run text DOTNET_NOLOGO=true \ # SDK version - DOTNET_SDK_VERSION=11.0.100-preview.1.26103.109 \ + DOTNET_SDK_VERSION=11.0.100-preview.1.26104.118 \ # 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 diff --git a/src/sdk/11.0/resolute/arm32v7/Dockerfile b/src/sdk/11.0/resolute/arm32v7/Dockerfile index 796aa6ea0c..20128e5052 100644 --- a/src/sdk/11.0/resolute/arm32v7/Dockerfile +++ b/src/sdk/11.0/resolute/arm32v7/Dockerfile @@ -3,7 +3,7 @@ ARG REPO=mcr.microsoft.com/dotnet/aspnet FROM arm32v7/buildpack-deps:jammy-curl AS installer # Install .NET SDK -RUN dotnet_sdk_version=11.0.100-preview.1.26103.109 \ +RUN dotnet_sdk_version=11.0.100-preview.1.26104.118 \ && curl --fail --show-error --location \ --remote-name https://ci.dot.net/public/Sdk/$dotnet_sdk_version/dotnet-sdk-$dotnet_sdk_version-linux-arm.tar.gz \ --remote-name https://ci.dot.net/public-checksums/Sdk/$dotnet_sdk_version/dotnet-sdk-$dotnet_sdk_version-linux-arm.tar.gz.sha512 \ @@ -24,7 +24,7 @@ ENV \ # Do not show first run text DOTNET_NOLOGO=true \ # SDK version - DOTNET_SDK_VERSION=11.0.100-preview.1.26103.109 \ + DOTNET_SDK_VERSION=11.0.100-preview.1.26104.118 \ # 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 diff --git a/src/sdk/11.0/resolute/arm64v8/Dockerfile b/src/sdk/11.0/resolute/arm64v8/Dockerfile index 76e3827a68..9aefe53738 100644 --- a/src/sdk/11.0/resolute/arm64v8/Dockerfile +++ b/src/sdk/11.0/resolute/arm64v8/Dockerfile @@ -3,7 +3,7 @@ ARG REPO=mcr.microsoft.com/dotnet/aspnet FROM arm64v8/buildpack-deps:resolute-curl AS installer # Install .NET SDK -RUN dotnet_sdk_version=11.0.100-preview.1.26103.109 \ +RUN dotnet_sdk_version=11.0.100-preview.1.26104.118 \ && curl --fail --show-error --location \ --remote-name https://ci.dot.net/public/Sdk/$dotnet_sdk_version/dotnet-sdk-$dotnet_sdk_version-linux-arm64.tar.gz \ --remote-name https://ci.dot.net/public-checksums/Sdk/$dotnet_sdk_version/dotnet-sdk-$dotnet_sdk_version-linux-arm64.tar.gz.sha512 \ @@ -24,7 +24,7 @@ ENV \ # Do not show first run text DOTNET_NOLOGO=true \ # SDK version - DOTNET_SDK_VERSION=11.0.100-preview.1.26103.109 \ + DOTNET_SDK_VERSION=11.0.100-preview.1.26104.118 \ # 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 diff --git a/src/sdk/11.0/windowsservercore-ltsc2025/amd64/Dockerfile b/src/sdk/11.0/windowsservercore-ltsc2025/amd64/Dockerfile index 9399eaf783..b25ddcd196 100644 --- a/src/sdk/11.0/windowsservercore-ltsc2025/amd64/Dockerfile +++ b/src/sdk/11.0/windowsservercore-ltsc2025/amd64/Dockerfile @@ -10,8 +10,8 @@ RUN powershell -Command " ` $ErrorActionPreference = 'Stop'; ` $ProgressPreference = 'SilentlyContinue'; ` ` - Invoke-WebRequest -OutFile mingit.zip https://github.com/git-for-windows/git/releases/download/v2.52.0.windows.1/MinGit-2.52.0-64-bit.zip; ` - $mingit_sha256 = 'f42a561840627747ad48e6ece05a14093292d31f3393a401a7f7c780ee7695c2'; ` + Invoke-WebRequest -OutFile mingit.zip https://github.com/git-for-windows/git/releases/download/v2.53.0.windows.1/MinGit-2.53.0-64-bit.zip; ` + $mingit_sha256 = '82b562c918ec87b2ef5316ed79bb199e3a25719bb871a0f10294acf21ebd08cd'; ` if ((Get-FileHash mingit.zip -Algorithm sha256).Hash -ne $mingit_sha256) { ` Write-Host 'CHECKSUM VERIFICATION FAILED!'; ` exit 1; ` @@ -25,7 +25,7 @@ RUN powershell -Command " ` $ProgressPreference = 'SilentlyContinue'; ` ` # Retrieve .NET SDK - $dotnet_sdk_version = '11.0.100-preview.1.26103.109'; ` + $dotnet_sdk_version = '11.0.100-preview.1.26104.118'; ` $dotnet_file = 'dotnet-sdk-' + $dotnet_sdk_version + '-win-x64.zip'; ` $dotnet_sha512_file = $dotnet_file + '.sha512'; ` ` @@ -72,7 +72,7 @@ ENV ` # Do not show first run text DOTNET_NOLOGO=true ` # SDK version - DOTNET_SDK_VERSION=11.0.100-preview.1.26103.109 ` + DOTNET_SDK_VERSION=11.0.100-preview.1.26104.118 ` # 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 diff --git a/src/sdk/8.0/nanoserver-1809/amd64/Dockerfile b/src/sdk/8.0/nanoserver-1809/amd64/Dockerfile index 48566bcc21..25f7ddd4f7 100644 --- a/src/sdk/8.0/nanoserver-1809/amd64/Dockerfile +++ b/src/sdk/8.0/nanoserver-1809/amd64/Dockerfile @@ -10,8 +10,8 @@ RUN powershell -Command " ` $ErrorActionPreference = 'Stop'; ` $ProgressPreference = 'SilentlyContinue'; ` ` - Invoke-WebRequest -OutFile mingit.zip https://github.com/git-for-windows/git/releases/download/v2.52.0.windows.1/MinGit-2.52.0-64-bit.zip; ` - $mingit_sha256 = 'f42a561840627747ad48e6ece05a14093292d31f3393a401a7f7c780ee7695c2'; ` + Invoke-WebRequest -OutFile mingit.zip https://github.com/git-for-windows/git/releases/download/v2.53.0.windows.1/MinGit-2.53.0-64-bit.zip; ` + $mingit_sha256 = '82b562c918ec87b2ef5316ed79bb199e3a25719bb871a0f10294acf21ebd08cd'; ` if ((Get-FileHash mingit.zip -Algorithm sha256).Hash -ne $mingit_sha256) { ` Write-Host 'CHECKSUM VERIFICATION FAILED!'; ` exit 1; ` diff --git a/src/sdk/8.0/nanoserver-ltsc2022/amd64/Dockerfile b/src/sdk/8.0/nanoserver-ltsc2022/amd64/Dockerfile index 9db02bd7f0..09420aa3f8 100644 --- a/src/sdk/8.0/nanoserver-ltsc2022/amd64/Dockerfile +++ b/src/sdk/8.0/nanoserver-ltsc2022/amd64/Dockerfile @@ -10,8 +10,8 @@ RUN powershell -Command " ` $ErrorActionPreference = 'Stop'; ` $ProgressPreference = 'SilentlyContinue'; ` ` - Invoke-WebRequest -OutFile mingit.zip https://github.com/git-for-windows/git/releases/download/v2.52.0.windows.1/MinGit-2.52.0-64-bit.zip; ` - $mingit_sha256 = 'f42a561840627747ad48e6ece05a14093292d31f3393a401a7f7c780ee7695c2'; ` + Invoke-WebRequest -OutFile mingit.zip https://github.com/git-for-windows/git/releases/download/v2.53.0.windows.1/MinGit-2.53.0-64-bit.zip; ` + $mingit_sha256 = '82b562c918ec87b2ef5316ed79bb199e3a25719bb871a0f10294acf21ebd08cd'; ` if ((Get-FileHash mingit.zip -Algorithm sha256).Hash -ne $mingit_sha256) { ` Write-Host 'CHECKSUM VERIFICATION FAILED!'; ` exit 1; ` diff --git a/src/sdk/8.0/nanoserver-ltsc2025/amd64/Dockerfile b/src/sdk/8.0/nanoserver-ltsc2025/amd64/Dockerfile index b771c52bb7..dec285ac63 100644 --- a/src/sdk/8.0/nanoserver-ltsc2025/amd64/Dockerfile +++ b/src/sdk/8.0/nanoserver-ltsc2025/amd64/Dockerfile @@ -10,8 +10,8 @@ RUN powershell -Command " ` $ErrorActionPreference = 'Stop'; ` $ProgressPreference = 'SilentlyContinue'; ` ` - Invoke-WebRequest -OutFile mingit.zip https://github.com/git-for-windows/git/releases/download/v2.52.0.windows.1/MinGit-2.52.0-64-bit.zip; ` - $mingit_sha256 = 'f42a561840627747ad48e6ece05a14093292d31f3393a401a7f7c780ee7695c2'; ` + Invoke-WebRequest -OutFile mingit.zip https://github.com/git-for-windows/git/releases/download/v2.53.0.windows.1/MinGit-2.53.0-64-bit.zip; ` + $mingit_sha256 = '82b562c918ec87b2ef5316ed79bb199e3a25719bb871a0f10294acf21ebd08cd'; ` if ((Get-FileHash mingit.zip -Algorithm sha256).Hash -ne $mingit_sha256) { ` Write-Host 'CHECKSUM VERIFICATION FAILED!'; ` exit 1; ` diff --git a/src/sdk/8.0/windowsservercore-ltsc2019/amd64/Dockerfile b/src/sdk/8.0/windowsservercore-ltsc2019/amd64/Dockerfile index 92dfa22637..4376515bbb 100644 --- a/src/sdk/8.0/windowsservercore-ltsc2019/amd64/Dockerfile +++ b/src/sdk/8.0/windowsservercore-ltsc2019/amd64/Dockerfile @@ -10,8 +10,8 @@ RUN powershell -Command " ` $ErrorActionPreference = 'Stop'; ` $ProgressPreference = 'SilentlyContinue'; ` ` - Invoke-WebRequest -OutFile mingit.zip https://github.com/git-for-windows/git/releases/download/v2.52.0.windows.1/MinGit-2.52.0-64-bit.zip; ` - $mingit_sha256 = 'f42a561840627747ad48e6ece05a14093292d31f3393a401a7f7c780ee7695c2'; ` + Invoke-WebRequest -OutFile mingit.zip https://github.com/git-for-windows/git/releases/download/v2.53.0.windows.1/MinGit-2.53.0-64-bit.zip; ` + $mingit_sha256 = '82b562c918ec87b2ef5316ed79bb199e3a25719bb871a0f10294acf21ebd08cd'; ` if ((Get-FileHash mingit.zip -Algorithm sha256).Hash -ne $mingit_sha256) { ` Write-Host 'CHECKSUM VERIFICATION FAILED!'; ` exit 1; ` diff --git a/src/sdk/8.0/windowsservercore-ltsc2022/amd64/Dockerfile b/src/sdk/8.0/windowsservercore-ltsc2022/amd64/Dockerfile index 0830fec8bc..8eab636726 100644 --- a/src/sdk/8.0/windowsservercore-ltsc2022/amd64/Dockerfile +++ b/src/sdk/8.0/windowsservercore-ltsc2022/amd64/Dockerfile @@ -10,8 +10,8 @@ RUN powershell -Command " ` $ErrorActionPreference = 'Stop'; ` $ProgressPreference = 'SilentlyContinue'; ` ` - Invoke-WebRequest -OutFile mingit.zip https://github.com/git-for-windows/git/releases/download/v2.52.0.windows.1/MinGit-2.52.0-64-bit.zip; ` - $mingit_sha256 = 'f42a561840627747ad48e6ece05a14093292d31f3393a401a7f7c780ee7695c2'; ` + Invoke-WebRequest -OutFile mingit.zip https://github.com/git-for-windows/git/releases/download/v2.53.0.windows.1/MinGit-2.53.0-64-bit.zip; ` + $mingit_sha256 = '82b562c918ec87b2ef5316ed79bb199e3a25719bb871a0f10294acf21ebd08cd'; ` if ((Get-FileHash mingit.zip -Algorithm sha256).Hash -ne $mingit_sha256) { ` Write-Host 'CHECKSUM VERIFICATION FAILED!'; ` exit 1; ` diff --git a/src/sdk/8.0/windowsservercore-ltsc2025/amd64/Dockerfile b/src/sdk/8.0/windowsservercore-ltsc2025/amd64/Dockerfile index 49654a360a..0a7a978b4c 100644 --- a/src/sdk/8.0/windowsservercore-ltsc2025/amd64/Dockerfile +++ b/src/sdk/8.0/windowsservercore-ltsc2025/amd64/Dockerfile @@ -10,8 +10,8 @@ RUN powershell -Command " ` $ErrorActionPreference = 'Stop'; ` $ProgressPreference = 'SilentlyContinue'; ` ` - Invoke-WebRequest -OutFile mingit.zip https://github.com/git-for-windows/git/releases/download/v2.52.0.windows.1/MinGit-2.52.0-64-bit.zip; ` - $mingit_sha256 = 'f42a561840627747ad48e6ece05a14093292d31f3393a401a7f7c780ee7695c2'; ` + Invoke-WebRequest -OutFile mingit.zip https://github.com/git-for-windows/git/releases/download/v2.53.0.windows.1/MinGit-2.53.0-64-bit.zip; ` + $mingit_sha256 = '82b562c918ec87b2ef5316ed79bb199e3a25719bb871a0f10294acf21ebd08cd'; ` if ((Get-FileHash mingit.zip -Algorithm sha256).Hash -ne $mingit_sha256) { ` Write-Host 'CHECKSUM VERIFICATION FAILED!'; ` exit 1; ` diff --git a/src/sdk/9.0/nanoserver-1809/amd64/Dockerfile b/src/sdk/9.0/nanoserver-1809/amd64/Dockerfile index 89dff5b350..cbae991195 100644 --- a/src/sdk/9.0/nanoserver-1809/amd64/Dockerfile +++ b/src/sdk/9.0/nanoserver-1809/amd64/Dockerfile @@ -10,8 +10,8 @@ RUN powershell -Command " ` $ErrorActionPreference = 'Stop'; ` $ProgressPreference = 'SilentlyContinue'; ` ` - Invoke-WebRequest -OutFile mingit.zip https://github.com/git-for-windows/git/releases/download/v2.52.0.windows.1/MinGit-2.52.0-64-bit.zip; ` - $mingit_sha256 = 'f42a561840627747ad48e6ece05a14093292d31f3393a401a7f7c780ee7695c2'; ` + Invoke-WebRequest -OutFile mingit.zip https://github.com/git-for-windows/git/releases/download/v2.53.0.windows.1/MinGit-2.53.0-64-bit.zip; ` + $mingit_sha256 = '82b562c918ec87b2ef5316ed79bb199e3a25719bb871a0f10294acf21ebd08cd'; ` if ((Get-FileHash mingit.zip -Algorithm sha256).Hash -ne $mingit_sha256) { ` Write-Host 'CHECKSUM VERIFICATION FAILED!'; ` exit 1; ` diff --git a/src/sdk/9.0/nanoserver-ltsc2022/amd64/Dockerfile b/src/sdk/9.0/nanoserver-ltsc2022/amd64/Dockerfile index 0a8b29f9b0..8b52e99aea 100644 --- a/src/sdk/9.0/nanoserver-ltsc2022/amd64/Dockerfile +++ b/src/sdk/9.0/nanoserver-ltsc2022/amd64/Dockerfile @@ -10,8 +10,8 @@ RUN powershell -Command " ` $ErrorActionPreference = 'Stop'; ` $ProgressPreference = 'SilentlyContinue'; ` ` - Invoke-WebRequest -OutFile mingit.zip https://github.com/git-for-windows/git/releases/download/v2.52.0.windows.1/MinGit-2.52.0-64-bit.zip; ` - $mingit_sha256 = 'f42a561840627747ad48e6ece05a14093292d31f3393a401a7f7c780ee7695c2'; ` + Invoke-WebRequest -OutFile mingit.zip https://github.com/git-for-windows/git/releases/download/v2.53.0.windows.1/MinGit-2.53.0-64-bit.zip; ` + $mingit_sha256 = '82b562c918ec87b2ef5316ed79bb199e3a25719bb871a0f10294acf21ebd08cd'; ` if ((Get-FileHash mingit.zip -Algorithm sha256).Hash -ne $mingit_sha256) { ` Write-Host 'CHECKSUM VERIFICATION FAILED!'; ` exit 1; ` diff --git a/src/sdk/9.0/nanoserver-ltsc2025/amd64/Dockerfile b/src/sdk/9.0/nanoserver-ltsc2025/amd64/Dockerfile index a38dfa74aa..00ce20c12f 100644 --- a/src/sdk/9.0/nanoserver-ltsc2025/amd64/Dockerfile +++ b/src/sdk/9.0/nanoserver-ltsc2025/amd64/Dockerfile @@ -10,8 +10,8 @@ RUN powershell -Command " ` $ErrorActionPreference = 'Stop'; ` $ProgressPreference = 'SilentlyContinue'; ` ` - Invoke-WebRequest -OutFile mingit.zip https://github.com/git-for-windows/git/releases/download/v2.52.0.windows.1/MinGit-2.52.0-64-bit.zip; ` - $mingit_sha256 = 'f42a561840627747ad48e6ece05a14093292d31f3393a401a7f7c780ee7695c2'; ` + Invoke-WebRequest -OutFile mingit.zip https://github.com/git-for-windows/git/releases/download/v2.53.0.windows.1/MinGit-2.53.0-64-bit.zip; ` + $mingit_sha256 = '82b562c918ec87b2ef5316ed79bb199e3a25719bb871a0f10294acf21ebd08cd'; ` if ((Get-FileHash mingit.zip -Algorithm sha256).Hash -ne $mingit_sha256) { ` Write-Host 'CHECKSUM VERIFICATION FAILED!'; ` exit 1; ` diff --git a/src/sdk/9.0/windowsservercore-ltsc2019/amd64/Dockerfile b/src/sdk/9.0/windowsservercore-ltsc2019/amd64/Dockerfile index 3cbf92d125..9e8cb2d02b 100644 --- a/src/sdk/9.0/windowsservercore-ltsc2019/amd64/Dockerfile +++ b/src/sdk/9.0/windowsservercore-ltsc2019/amd64/Dockerfile @@ -10,8 +10,8 @@ RUN powershell -Command " ` $ErrorActionPreference = 'Stop'; ` $ProgressPreference = 'SilentlyContinue'; ` ` - Invoke-WebRequest -OutFile mingit.zip https://github.com/git-for-windows/git/releases/download/v2.52.0.windows.1/MinGit-2.52.0-64-bit.zip; ` - $mingit_sha256 = 'f42a561840627747ad48e6ece05a14093292d31f3393a401a7f7c780ee7695c2'; ` + Invoke-WebRequest -OutFile mingit.zip https://github.com/git-for-windows/git/releases/download/v2.53.0.windows.1/MinGit-2.53.0-64-bit.zip; ` + $mingit_sha256 = '82b562c918ec87b2ef5316ed79bb199e3a25719bb871a0f10294acf21ebd08cd'; ` if ((Get-FileHash mingit.zip -Algorithm sha256).Hash -ne $mingit_sha256) { ` Write-Host 'CHECKSUM VERIFICATION FAILED!'; ` exit 1; ` diff --git a/src/sdk/9.0/windowsservercore-ltsc2022/amd64/Dockerfile b/src/sdk/9.0/windowsservercore-ltsc2022/amd64/Dockerfile index 22ba1e7ff8..a0b187fa26 100644 --- a/src/sdk/9.0/windowsservercore-ltsc2022/amd64/Dockerfile +++ b/src/sdk/9.0/windowsservercore-ltsc2022/amd64/Dockerfile @@ -10,8 +10,8 @@ RUN powershell -Command " ` $ErrorActionPreference = 'Stop'; ` $ProgressPreference = 'SilentlyContinue'; ` ` - Invoke-WebRequest -OutFile mingit.zip https://github.com/git-for-windows/git/releases/download/v2.52.0.windows.1/MinGit-2.52.0-64-bit.zip; ` - $mingit_sha256 = 'f42a561840627747ad48e6ece05a14093292d31f3393a401a7f7c780ee7695c2'; ` + Invoke-WebRequest -OutFile mingit.zip https://github.com/git-for-windows/git/releases/download/v2.53.0.windows.1/MinGit-2.53.0-64-bit.zip; ` + $mingit_sha256 = '82b562c918ec87b2ef5316ed79bb199e3a25719bb871a0f10294acf21ebd08cd'; ` if ((Get-FileHash mingit.zip -Algorithm sha256).Hash -ne $mingit_sha256) { ` Write-Host 'CHECKSUM VERIFICATION FAILED!'; ` exit 1; ` diff --git a/src/sdk/9.0/windowsservercore-ltsc2025/amd64/Dockerfile b/src/sdk/9.0/windowsservercore-ltsc2025/amd64/Dockerfile index 325c7239cb..27f589f7bb 100644 --- a/src/sdk/9.0/windowsservercore-ltsc2025/amd64/Dockerfile +++ b/src/sdk/9.0/windowsservercore-ltsc2025/amd64/Dockerfile @@ -10,8 +10,8 @@ RUN powershell -Command " ` $ErrorActionPreference = 'Stop'; ` $ProgressPreference = 'SilentlyContinue'; ` ` - Invoke-WebRequest -OutFile mingit.zip https://github.com/git-for-windows/git/releases/download/v2.52.0.windows.1/MinGit-2.52.0-64-bit.zip; ` - $mingit_sha256 = 'f42a561840627747ad48e6ece05a14093292d31f3393a401a7f7c780ee7695c2'; ` + Invoke-WebRequest -OutFile mingit.zip https://github.com/git-for-windows/git/releases/download/v2.53.0.windows.1/MinGit-2.53.0-64-bit.zip; ` + $mingit_sha256 = '82b562c918ec87b2ef5316ed79bb199e3a25719bb871a0f10294acf21ebd08cd'; ` if ((Get-FileHash mingit.zip -Algorithm sha256).Hash -ne $mingit_sha256) { ` Write-Host 'CHECKSUM VERIFICATION FAILED!'; ` exit 1; ` diff --git a/tests/Microsoft.DotNet.Docker.Tests/SdkImageTests.cs b/tests/Microsoft.DotNet.Docker.Tests/SdkImageTests.cs index 1b386433dc..9fb098b44f 100644 --- a/tests/Microsoft.DotNet.Docker.Tests/SdkImageTests.cs +++ b/tests/Microsoft.DotNet.Docker.Tests/SdkImageTests.cs @@ -304,7 +304,8 @@ private async Task> GetExpectedSdkContentsAsync( if (!s_sdkContentsCache.TryGetValue(sdkUrl, out IEnumerable? files)) { - string sdkFile = Path.GetTempFileName(); + using TempFolderContext tempFolder = FileHelper.UseTempFolder(); + string sdkFile = Path.Combine(tempFolder.Path, "sdk-archive"); await s_sdkDownloadPipeline.ExecuteAsync(async cancellationToken => { diff --git a/tests/UpdateDependencies.Tests/BuildLabelServiceTests.cs b/tests/UpdateDependencies.Tests/BuildLabelServiceTests.cs new file mode 100644 index 0000000000..da8aed0d5f --- /dev/null +++ b/tests/UpdateDependencies.Tests/BuildLabelServiceTests.cs @@ -0,0 +1,52 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +using Dotnet.Docker; + +namespace UpdateDependencies.Tests; + +public sealed class BuildLabelServiceTests +{ + [Fact] + public void AddBuildTags_WritesSingleTag() + { + using var writer = new StringWriter(); + var service = new BuildLabelService(writer); + + service.AddBuildTags("my-tag"); + + writer.ToString().ShouldBe( + """ + ##vso[build.addbuildtag]my-tag + + """); + } + + [Fact] + public void AddBuildTags_WritesMultipleTags() + { + using var writer = new StringWriter(); + var service = new BuildLabelService(writer); + + service.AddBuildTags("tag1", "tag2", "tag3"); + + var expected = """ + ##vso[build.addbuildtag]tag1 + ##vso[build.addbuildtag]tag2 + ##vso[build.addbuildtag]tag3 + + """; + writer.ToString().ShouldBe(expected); + } + + [Fact] + public void AddBuildTags_WithEmptyEnumerable_WritesNothing() + { + using var writer = new StringWriter(); + var service = new BuildLabelService(writer); + + service.AddBuildTags([]); + + writer.ToString().ShouldBeEmpty(); + } +} diff --git a/tests/UpdateDependencies.Tests/FromStagingPipelineCommandTests.cs b/tests/UpdateDependencies.Tests/FromStagingPipelineCommandTests.cs new file mode 100644 index 0000000000..345d5bd318 --- /dev/null +++ b/tests/UpdateDependencies.Tests/FromStagingPipelineCommandTests.cs @@ -0,0 +1,148 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +using Dotnet.Docker; +using Dotnet.Docker.Git; +using Dotnet.Docker.Model.Release; +using Dotnet.Docker.Sync; +using Microsoft.Extensions.Logging; + +namespace UpdateDependencies.Tests; + +public sealed class FromStagingPipelineCommandTests +{ + [Fact] + public async Task ExecuteAsync_InternalMode_AddsBuildTagWithStageContainer() + { + const string stageContainer = "stage-1234567"; + var expectedTag = $"Container - {stageContainer}"; + + using var output = new StringWriter(); + var buildLabelService = new BuildLabelService(output); + + var command = CreateCommand( + buildLabelService: buildLabelService, + pipelineArtifactProvider: CreateMockPipelineArtifactProvider()); + + var options = new FromStagingPipelineOptions + { + StageContainer = stageContainer, + Internal = true, + StagingStorageAccount = "https://dotnetstagetest.blob.core.windows.net/", + Mode = ChangeMode.Local, + RepoRoot = "/tmp/repo" + }; + + await command.ExecuteAsync(options); + + output.ToString().ShouldContain($"##vso[build.addbuildtag]{expectedTag}"); + } + + [Fact] + public async Task ExecuteAsync_NotInternalMode_DoesNotAddBuildTag() + { + using var output = new StringWriter(); + var buildLabelService = new BuildLabelService(output); + + var command = CreateCommand( + buildLabelService: buildLabelService, + pipelineArtifactProvider: CreateMockPipelineArtifactProvider()); + + var options = new FromStagingPipelineOptions + { + StageContainer = "stage-1234567", + Internal = false, + Mode = ChangeMode.Local, + RepoRoot = "/tmp/repo" + }; + + await command.ExecuteAsync(options); + + output.ToString().ShouldNotContain("##vso[build.addbuildtag]"); + } + + [Theory] + [InlineData("stage-1234567", 1234567)] + [InlineData("stage-1", 1)] + [InlineData("stage-999999999", 999999999)] + public void GetStagingPipelineRunId_ValidStageContainer_ReturnsExpectedId(string stageContainer, int expectedId) + { + var options = new FromStagingPipelineOptions + { + StageContainer = stageContainer, + RepoRoot = "/tmp/repo" + }; + + var result = options.GetStagingPipelineRunId(); + + result.ShouldBe(expectedId); + } + + [Theory] + [InlineData("invalid-format")] + [InlineData("stage-abc")] + [InlineData("1234567")] + [InlineData("stage-")] + [InlineData("")] + public void GetStagingPipelineRunId_InvalidStageContainer_ThrowsArgumentException(string stageContainer) + { + var options = new FromStagingPipelineOptions + { + StageContainer = stageContainer, + RepoRoot = "/tmp/repo" + }; + + var exception = Should.Throw(() => options.GetStagingPipelineRunId()); + exception.Message.ShouldContain($"Invalid stage container name '{stageContainer}'"); + exception.Message.ShouldContain("Expected format: 'stage-{buildId}'"); + } + + private static FromStagingPipelineCommand CreateCommand( + ILogger? logger = null, + IPipelineArtifactProvider? pipelineArtifactProvider = null, + IPipelinesService? pipelinesService = null, + IInternalVersionsService? internalVersionsService = null, + IEnvironmentService? environmentService = null, + IBuildLabelService? buildLabelService = null, + IGitRepoHelperFactory? gitRepoHelperFactory = null) => + new(logger ?? Mock.Of>(), + pipelineArtifactProvider ?? CreateMockPipelineArtifactProvider(), + pipelinesService ?? CreateMockPipelinesService(), + internalVersionsService ?? Mock.Of(), + environmentService ?? Mock.Of(), + buildLabelService ?? Mock.Of(), + gitRepoHelperFactory ?? Mock.Of()); + + private static IPipelineArtifactProvider CreateMockPipelineArtifactProvider() + { + var mock = new Mock(); + mock.Setup(p => p.GetReleaseConfigAsync(It.IsAny(), It.IsAny(), It.IsAny())) + .ReturnsAsync(CreateReleaseConfig()); + return mock.Object; + } + + private static IPipelinesService CreateMockPipelinesService() + { + var mock = new Mock(); + mock.Setup(p => p.GetBuildTagsAsync(It.IsAny(), It.IsAny(), It.IsAny())) + .ReturnsAsync(new List()); + return mock.Object; + } + + private static ReleaseConfig CreateReleaseConfig() => new() + { + Channel = "9.0", + MajorVersion = "9", + Release = "9.0.0", + Runtime = "9.0.0", + RuntimeBuild = "9.0.0", + Sdks = ["9.0.100"], + SdkBuilds = ["9.0.100"], + Security = false, + SupportPhase = "active", + Internal = false, + SdkOnly = false, + Asp = "9.0.0", + AspBuild = "9.0.0" + }; +} diff --git a/tests/UpdateDependencies.Tests/InternalStagingBuildsTests.cs b/tests/UpdateDependencies.Tests/InternalStagingBuildsTests.cs index f88e06d0e2..2e519e1222 100644 --- a/tests/UpdateDependencies.Tests/InternalStagingBuildsTests.cs +++ b/tests/UpdateDependencies.Tests/InternalStagingBuildsTests.cs @@ -2,12 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. using System.Collections.Immutable; -using System.Collections.Generic; -using System.Linq; using Dotnet.Docker.Sync; using Microsoft.DotNet.Docker.Shared; -using Shouldly; -using Xunit; namespace UpdateDependencies.Tests; @@ -16,39 +12,39 @@ public sealed class InternalStagingBuildsTests [Fact] public void ToStringOrdersVersionsAscending() { - var builds = new InternalStagingBuilds( - ImmutableDictionary.CreateRange( + var builds = new InternalStageContainers( + ImmutableDictionary.CreateRange( [ - KeyValuePair.Create(DotNetVersion.Parse("10.0"), 1000), - KeyValuePair.Create(DotNetVersion.Parse("8.0"), 800), - KeyValuePair.Create(DotNetVersion.Parse("9.0"), 900) + KeyValuePair.Create(DotNetVersion.Parse("10.0"), "stage-1000"), + KeyValuePair.Create(DotNetVersion.Parse("8.0"), "stage-800"), + KeyValuePair.Create(DotNetVersion.Parse("9.0"), "stage-900") ])); var lines = builds.ToString().Split(Environment.NewLine, StringSplitOptions.RemoveEmptyEntries); - lines.ShouldBe(["8.0=800", "9.0=900", "10.0=1000"]); + lines.ShouldBe(["8.0=stage-800", "9.0=stage-900", "10.0=stage-1000"]); } [Fact] public void AddReplacesEntryForSameMajorMinorVersion() { - var builds = new InternalStagingBuilds( - ImmutableDictionary.CreateRange( - [KeyValuePair.Create(DotNetVersion.Parse("8.0"), 100)])); + var builds = new InternalStageContainers( + ImmutableDictionary.CreateRange( + [KeyValuePair.Create(DotNetVersion.Parse("8.0"), "stage-100")])); - builds = builds.Add(DotNetVersion.Parse("8.0.101"), 200); - builds = builds.Add(DotNetVersion.Parse("8.0.202"), 300); + builds = builds.Add(DotNetVersion.Parse("8.0.101"), "stage-200"); + builds = builds.Add(DotNetVersion.Parse("8.0.202"), "stage-300"); builds.Versions.Count.ShouldBe(1); - builds.Versions.Single().ShouldBe(KeyValuePair.Create(DotNetVersion.Parse("8.0"), 300)); + builds.Versions.Single().ShouldBe(KeyValuePair.Create(DotNetVersion.Parse("8.0"), "stage-300")); } [Fact] public void ToStringOmitsPatchVersion() { - var builds = new InternalStagingBuilds(ImmutableDictionary.Empty); - builds = builds.Add(DotNetVersion.Parse("8.0.101"), 100); - builds = builds.Add(DotNetVersion.Parse("9.1.205-servicing.1"), 200); + var builds = new InternalStageContainers(ImmutableDictionary.Empty); + builds = builds.Add(DotNetVersion.Parse("8.0.101"), "stage-100"); + builds = builds.Add(DotNetVersion.Parse("9.1.205-servicing.1"), "stage-200"); foreach (var line in builds.ToString().Split(Environment.NewLine, StringSplitOptions.RemoveEmptyEntries)) { diff --git a/tests/UpdateDependencies.Tests/SyncInternalReleaseTests.cs b/tests/UpdateDependencies.Tests/SyncInternalReleaseTests.cs index 6b4853d35c..352fb25012 100644 --- a/tests/UpdateDependencies.Tests/SyncInternalReleaseTests.cs +++ b/tests/UpdateDependencies.Tests/SyncInternalReleaseTests.cs @@ -225,10 +225,10 @@ public async Task Sync() : throw new Exception($"PR {PullRequestUrl} was not created first")); // For this scenario, two internal versions have been checked in to this repo. - var internalVersions = new Dictionary + var internalVersions = new Dictionary { - { DotNetVersion.Parse("8.0"), 8000000 }, - { DotNetVersion.Parse("10.0"), 1000000 } + { DotNetVersion.Parse("8.0"), "stage-8000000" }, + { DotNetVersion.Parse("10.0"), "stage-1000000" } }; var internalVersionsService = CreateInternalVersionsService(LocalRepoPath, internalVersions); @@ -244,12 +244,12 @@ public async Task Sync() exitCode.ShouldBe(0); // Verify that we re-applied all internal versions by calling the downstream command. - foreach ((_, int buildId) in internalVersions) + foreach ((_, string stageContainer) in internalVersions) { fromStagingPipelineCommandMock.Verify(command => command.ExecuteAsync(It.Is(o => o.RepoRoot == LocalRepoPath - && o.StagingPipelineRunId == buildId + && o.StageContainer == stageContainer && o.StagingStorageAccount == options.StagingStorageAccount )), Times.Once @@ -293,20 +293,22 @@ private SyncInternalReleaseCommand CreateCommand( IGitRepoHelperFactory? repoFactory = null, ICommand? fromStagingPipelineCommand = null, IInternalVersionsService? internalVersionsService = null, + IEnvironmentService? environmentService = null, ILogger? logger = null) => // New parameters should be null by default and initialized with mocks if not specified. new(repoFactory ?? Mock.Of(), fromStagingPipelineCommand ?? Mock.Of>(), internalVersionsService ?? Mock.Of(), + environmentService ?? Mock.Of(), logger ?? Mock.Of>()); /// /// Helper method to create a mock version of /// private static IInternalVersionsService CreateInternalVersionsService( - string repoPath, Dictionary versions) + string repoPath, Dictionary versions) { - var internalStagingBuilds = new InternalStagingBuilds(versions.ToImmutableDictionary()); + var internalStagingBuilds = new InternalStageContainers(versions.ToImmutableDictionary()); var mock = new Mock(); mock.Setup(s => s.GetInternalStagingBuilds(repoPath))