From fbcde69b2c81f2aaf40d8d779539d21be2c3ca92 Mon Sep 17 00:00:00 2001 From: Mark Ridgwell <273118822+dnyw4l3n13@users.noreply.github.com> Date: Wed, 28 Oct 2026 06:07:32 +0000 Subject: [PATCH 1/7] docs(changelog): placeholder for #430 PublishTrimmed/PublishAot --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index f1adba6b..51b85d43 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -91,6 +91,7 @@ Please ADD ALL Changes to the UNRELEASED SECTION and not a specific release - Dependencies - Updated Microsoft.Extensions to 10.0.13 - Dependencies - Updated Microsoft.NET.Test.Sdk to 18.11.0 - Dependencies - Updated Meziantou.Analyzer to 3.0.317 +- Enable PublishTrimmed and PublishAot for BuildBot now Discord.Net is gone ### Deprecated ### Removed - Removed NuGet audit suppressions for Scriban 6.2.0 vulnerabilities now that the transitive dependency has been dropped From 2d01fc69e0d54745b0efc1bb142486ef2cf0b972 Mon Sep 17 00:00:00 2001 From: Mark Ridgwell <273118822+dnyw4l3n13@users.noreply.github.com> Date: Wed, 28 Oct 2026 06:32:24 +0000 Subject: [PATCH 2/7] build: fix buildcheck configuration binding generator properties (#430) --- .../BuildBot.CloudFormation.Tests.csproj | 1 - src/BuildBot.CloudFormation/BuildBot.CloudFormation.csproj | 1 - src/BuildBot.Discord.Tests/BuildBot.Discord.Tests.csproj | 1 - src/BuildBot.Discord/BuildBot.Discord.csproj | 1 - src/BuildBot.GitHub.Tests/BuildBot.GitHub.Tests.csproj | 1 - src/BuildBot.GitHub/BuildBot.GitHub.csproj | 1 - src/BuildBot.Health.Tests/BuildBot.Health.Tests.csproj | 1 - src/BuildBot.Health/BuildBot.Health.csproj | 1 - src/BuildBot.Json.Tests/BuildBot.Json.Tests.csproj | 1 - src/BuildBot.Json/BuildBot.Json.csproj | 1 - .../BuildBot.ServiceModel.Tests.csproj | 1 - src/BuildBot.ServiceModel/BuildBot.ServiceModel.csproj | 1 - src/BuildBot.Tests/BuildBot.Tests.csproj | 1 - src/BuildBot.Watchtower.Tests/BuildBot.Watchtower.Tests.csproj | 1 - src/BuildBot.Watchtower/BuildBot.Watchtower.csproj | 1 - src/BuildBot/BuildBot.csproj | 2 +- 16 files changed, 1 insertion(+), 16 deletions(-) diff --git a/src/BuildBot.CloudFormation.Tests/BuildBot.CloudFormation.Tests.csproj b/src/BuildBot.CloudFormation.Tests/BuildBot.CloudFormation.Tests.csproj index 08261a9c..d7b6bfde 100644 --- a/src/BuildBot.CloudFormation.Tests/BuildBot.CloudFormation.Tests.csproj +++ b/src/BuildBot.CloudFormation.Tests/BuildBot.CloudFormation.Tests.csproj @@ -5,7 +5,6 @@ true true true - true true false true diff --git a/src/BuildBot.CloudFormation/BuildBot.CloudFormation.csproj b/src/BuildBot.CloudFormation/BuildBot.CloudFormation.csproj index 787800a5..d450daed 100644 --- a/src/BuildBot.CloudFormation/BuildBot.CloudFormation.csproj +++ b/src/BuildBot.CloudFormation/BuildBot.CloudFormation.csproj @@ -5,7 +5,6 @@ true true true - true true true true diff --git a/src/BuildBot.Discord.Tests/BuildBot.Discord.Tests.csproj b/src/BuildBot.Discord.Tests/BuildBot.Discord.Tests.csproj index 76df7cd3..8e80a231 100644 --- a/src/BuildBot.Discord.Tests/BuildBot.Discord.Tests.csproj +++ b/src/BuildBot.Discord.Tests/BuildBot.Discord.Tests.csproj @@ -5,7 +5,6 @@ true true true - true true false true diff --git a/src/BuildBot.Discord/BuildBot.Discord.csproj b/src/BuildBot.Discord/BuildBot.Discord.csproj index e3126940..fea4e47e 100644 --- a/src/BuildBot.Discord/BuildBot.Discord.csproj +++ b/src/BuildBot.Discord/BuildBot.Discord.csproj @@ -5,7 +5,6 @@ true true true - true true true true diff --git a/src/BuildBot.GitHub.Tests/BuildBot.GitHub.Tests.csproj b/src/BuildBot.GitHub.Tests/BuildBot.GitHub.Tests.csproj index b1d8af30..420d6a06 100644 --- a/src/BuildBot.GitHub.Tests/BuildBot.GitHub.Tests.csproj +++ b/src/BuildBot.GitHub.Tests/BuildBot.GitHub.Tests.csproj @@ -5,7 +5,6 @@ true true true - true true false true diff --git a/src/BuildBot.GitHub/BuildBot.GitHub.csproj b/src/BuildBot.GitHub/BuildBot.GitHub.csproj index 330a6795..fa33afba 100644 --- a/src/BuildBot.GitHub/BuildBot.GitHub.csproj +++ b/src/BuildBot.GitHub/BuildBot.GitHub.csproj @@ -5,7 +5,6 @@ true true true - true true true true diff --git a/src/BuildBot.Health.Tests/BuildBot.Health.Tests.csproj b/src/BuildBot.Health.Tests/BuildBot.Health.Tests.csproj index dcca9b8a..0c6f5579 100644 --- a/src/BuildBot.Health.Tests/BuildBot.Health.Tests.csproj +++ b/src/BuildBot.Health.Tests/BuildBot.Health.Tests.csproj @@ -5,7 +5,6 @@ true true true - true true false true diff --git a/src/BuildBot.Health/BuildBot.Health.csproj b/src/BuildBot.Health/BuildBot.Health.csproj index 86d1030c..bbf4d4ee 100644 --- a/src/BuildBot.Health/BuildBot.Health.csproj +++ b/src/BuildBot.Health/BuildBot.Health.csproj @@ -5,7 +5,6 @@ true true true - true true true true diff --git a/src/BuildBot.Json.Tests/BuildBot.Json.Tests.csproj b/src/BuildBot.Json.Tests/BuildBot.Json.Tests.csproj index 9126fce9..880ab8fe 100644 --- a/src/BuildBot.Json.Tests/BuildBot.Json.Tests.csproj +++ b/src/BuildBot.Json.Tests/BuildBot.Json.Tests.csproj @@ -5,7 +5,6 @@ true true true - true true false true diff --git a/src/BuildBot.Json/BuildBot.Json.csproj b/src/BuildBot.Json/BuildBot.Json.csproj index 4c111fa9..4db32db3 100644 --- a/src/BuildBot.Json/BuildBot.Json.csproj +++ b/src/BuildBot.Json/BuildBot.Json.csproj @@ -5,7 +5,6 @@ true true true - true true true true diff --git a/src/BuildBot.ServiceModel.Tests/BuildBot.ServiceModel.Tests.csproj b/src/BuildBot.ServiceModel.Tests/BuildBot.ServiceModel.Tests.csproj index 0346eba8..4c8d1208 100644 --- a/src/BuildBot.ServiceModel.Tests/BuildBot.ServiceModel.Tests.csproj +++ b/src/BuildBot.ServiceModel.Tests/BuildBot.ServiceModel.Tests.csproj @@ -5,7 +5,6 @@ true true true - true true false true diff --git a/src/BuildBot.ServiceModel/BuildBot.ServiceModel.csproj b/src/BuildBot.ServiceModel/BuildBot.ServiceModel.csproj index 3f6150eb..a94d8628 100644 --- a/src/BuildBot.ServiceModel/BuildBot.ServiceModel.csproj +++ b/src/BuildBot.ServiceModel/BuildBot.ServiceModel.csproj @@ -5,7 +5,6 @@ true true true - true true true true diff --git a/src/BuildBot.Tests/BuildBot.Tests.csproj b/src/BuildBot.Tests/BuildBot.Tests.csproj index acff2344..413a322c 100644 --- a/src/BuildBot.Tests/BuildBot.Tests.csproj +++ b/src/BuildBot.Tests/BuildBot.Tests.csproj @@ -5,7 +5,6 @@ true true true - true true false true diff --git a/src/BuildBot.Watchtower.Tests/BuildBot.Watchtower.Tests.csproj b/src/BuildBot.Watchtower.Tests/BuildBot.Watchtower.Tests.csproj index 4e33e4c1..8d1cc79e 100644 --- a/src/BuildBot.Watchtower.Tests/BuildBot.Watchtower.Tests.csproj +++ b/src/BuildBot.Watchtower.Tests/BuildBot.Watchtower.Tests.csproj @@ -5,7 +5,6 @@ true true true - true true false true diff --git a/src/BuildBot.Watchtower/BuildBot.Watchtower.csproj b/src/BuildBot.Watchtower/BuildBot.Watchtower.csproj index e4d60b76..7a54d769 100644 --- a/src/BuildBot.Watchtower/BuildBot.Watchtower.csproj +++ b/src/BuildBot.Watchtower/BuildBot.Watchtower.csproj @@ -5,7 +5,6 @@ true true true - true true true true diff --git a/src/BuildBot/BuildBot.csproj b/src/BuildBot/BuildBot.csproj index 9ee820a2..d1841083 100644 --- a/src/BuildBot/BuildBot.csproj +++ b/src/BuildBot/BuildBot.csproj @@ -6,7 +6,7 @@ true BuildBot true - true + true true true true From 883f2276d236a1a031ffc1e6f5c86a2110b8a416 Mon Sep 17 00:00:00 2001 From: Mark Ridgwell <273118822+dnyw4l3n13@users.noreply.github.com> Date: Wed, 28 Oct 2026 06:34:22 +0000 Subject: [PATCH 3/7] build: remove unused System.Reactive and System.Interactive.Async packages (#430) --- src/BuildBot.ServiceModel/BuildBot.ServiceModel.csproj | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/BuildBot.ServiceModel/BuildBot.ServiceModel.csproj b/src/BuildBot.ServiceModel/BuildBot.ServiceModel.csproj index a94d8628..4e5b54bf 100644 --- a/src/BuildBot.ServiceModel/BuildBot.ServiceModel.csproj +++ b/src/BuildBot.ServiceModel/BuildBot.ServiceModel.csproj @@ -36,10 +36,6 @@ false - - - - From 6893cd9a4758008431b6c5887b5ab11ebf8f2fcc Mon Sep 17 00:00:00 2001 From: Mark Ridgwell <273118822+dnyw4l3n13@users.noreply.github.com> Date: Wed, 28 Oct 2026 06:37:08 +0000 Subject: [PATCH 4/7] build: remove Serilog.Enrichers.Demystifier (#430) Remove the Serilog.Enrichers.Demystifier package reference and its .Enrich.WithDemystifiedStackTraces() call in ServerStartup, ahead of publishing trimmed AOT builds. Refs #430 --- src/BuildBot/BuildBot.csproj | 1 - src/BuildBot/Helpers/ServerStartup.cs | 1 - 2 files changed, 2 deletions(-) diff --git a/src/BuildBot/BuildBot.csproj b/src/BuildBot/BuildBot.csproj index d1841083..25a8de27 100644 --- a/src/BuildBot/BuildBot.csproj +++ b/src/BuildBot/BuildBot.csproj @@ -85,7 +85,6 @@ - diff --git a/src/BuildBot/Helpers/ServerStartup.cs b/src/BuildBot/Helpers/ServerStartup.cs index bd6bdc34..f52fa2a9 100644 --- a/src/BuildBot/Helpers/ServerStartup.cs +++ b/src/BuildBot/Helpers/ServerStartup.cs @@ -124,7 +124,6 @@ private static void ConfigureLogging(ILoggingBuilder logger) private static Logger CreateLogger() { return new LoggerConfiguration() - .Enrich.WithDemystifiedStackTraces() .Enrich.FromLogContext() .Enrich.WithMachineName() .Enrich.WithProcessId() From f911ea785946f2df76e462c6e1ef979cb884a25c Mon Sep 17 00:00:00 2001 From: Mark Ridgwell <273118822+dnyw4l3n13@users.noreply.github.com> Date: Wed, 28 Oct 2026 06:41:48 +0000 Subject: [PATCH 5/7] build: enable InvariantGlobalization and use plain chiseled runtime image (#430) Enable InvariantGlobalization in BuildBot.csproj and remove the en-US culture validation from ServerStartup.cs, which is no longer meaningful under invariant mode. Switch the Dockerfile to the plain runtime-deps 11.0 resolute chiseled image, as ICU is no longer required. --- Dockerfile | 4 ++-- src/BuildBot/BuildBot.csproj | 2 +- src/BuildBot/Helpers/ServerStartup.cs | 5 ----- 3 files changed, 3 insertions(+), 8 deletions(-) diff --git a/Dockerfile b/Dockerfile index e5a2e5ae..886f9ce4 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,6 +1,6 @@ -# chiseled-extra is needed over chiseled for ICU, as globalization invariant mode is disabled +# plain chiseled is sufficient: globalization invariant mode is enabled (no ICU needed) and no timezone APIs are used (no tzdata needed) #FROM mcr.microsoft.com/dotnet/runtime-deps:9.0-noble-chiseled-extra -FROM mcr.microsoft.com/dotnet/runtime-deps:11.0-resolute-chiseled-extra +FROM mcr.microsoft.com/dotnet/runtime-deps:11.0-resolute-chiseled WORKDIR /usr/src/app diff --git a/src/BuildBot/BuildBot.csproj b/src/BuildBot/BuildBot.csproj index 25a8de27..682eb876 100644 --- a/src/BuildBot/BuildBot.csproj +++ b/src/BuildBot/BuildBot.csproj @@ -17,7 +17,7 @@ false Size disable - false + true false true true diff --git a/src/BuildBot/Helpers/ServerStartup.cs b/src/BuildBot/Helpers/ServerStartup.cs index f52fa2a9..1f6c485a 100644 --- a/src/BuildBot/Helpers/ServerStartup.cs +++ b/src/BuildBot/Helpers/ServerStartup.cs @@ -1,7 +1,6 @@ using System; using System.Diagnostics; using System.Diagnostics.CodeAnalysis; -using System.Globalization; using System.IO; using System.Net; using System.Threading; @@ -59,10 +58,6 @@ public static WebApplication CreateApp(string[] args) const int h2Port = 0; WebApplicationBuilder builder = WebApplication.CreateSlimBuilder(args); - Console.WriteLine("Validating cultures are working...."); - CultureInfo culture = CultureInfo.GetCultureInfo("en-US"); - Console.WriteLine($"Test Culture: {culture.Name}"); - string configPath = ApplicationConfigLocator.ConfigurationFilesPath; IConfigurationRoot config = LoadConfiguration(configPath); From cbdb77af292888baeef0271fe0aa592ac57e3d8b Mon Sep 17 00:00:00 2001 From: Mark Ridgwell <273118822+dnyw4l3n13@users.noreply.github.com> Date: Wed, 28 Oct 2026 06:46:20 +0000 Subject: [PATCH 6/7] build: publish BuildBot trimmed and as native AOT (#430) Enable PublishAot and PublishTrimmed in BuildBot.csproj and remove the -p:PublishAot=false override from src/publish so the publish script produces a trimmed native AOT build. --- src/BuildBot/BuildBot.csproj | 4 ++-- src/publish | 1 - 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/src/BuildBot/BuildBot.csproj b/src/BuildBot/BuildBot.csproj index 682eb876..9c341e95 100644 --- a/src/BuildBot/BuildBot.csproj +++ b/src/BuildBot/BuildBot.csproj @@ -33,8 +33,8 @@ speed Exe FunFair BuildBot - false - false + true + true https://github.com/funfair-tech/BuildBot false win-x64;win-arm64;osx-x64;osx-arm64;linux-x64;linux-arm64 diff --git a/src/publish b/src/publish index fea1ca92..a683c2a2 100755 --- a/src/publish +++ b/src/publish @@ -31,7 +31,6 @@ echo "Clear $OUTFOLDER" \ "-p:IsProduction=True" \ "-p:NoWarn=NETSDK1179" \ "-p:Optimize=true" \ - "-p:PublishAot=false" \ "-p:PublishReadyToRun=False" \ "-p:PublishReadyToRunShowWarnings=True" \ "-p:PublishSingleFile=true" \ From 8d6d3a0e8fb3da797b202b3f5af90a441bea5206 Mon Sep 17 00:00:00 2001 From: Mark Ridgwell <273118822+dnyw4l3n13@users.noreply.github.com> Date: Wed, 28 Oct 2026 06:48:57 +0000 Subject: [PATCH 7/7] docs: update changelog for trimmed AOT publish (#430) --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 51b85d43..cfee9751 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -91,7 +91,7 @@ Please ADD ALL Changes to the UNRELEASED SECTION and not a specific release - Dependencies - Updated Microsoft.Extensions to 10.0.13 - Dependencies - Updated Microsoft.NET.Test.Sdk to 18.11.0 - Dependencies - Updated Meziantou.Analyzer to 3.0.317 -- Enable PublishTrimmed and PublishAot for BuildBot now Discord.Net is gone +- BuildBot is published trimmed and as a native AOT binary with InvariantGlobalization enabled, and the Docker image uses the plain chiseled runtime-deps base; unused System.Reactive and System.Interactive.Async packages and Serilog.Enrichers.Demystifier are removed, and buildcheck configuration binding generator properties are fixed (#430) ### Deprecated ### Removed - Removed NuGet audit suppressions for Scriban 6.2.0 vulnerabilities now that the transitive dependency has been dropped