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