From b250774dce58ab4e6620550919e54a4af395a904 Mon Sep 17 00:00:00 2001 From: JT Date: Sat, 6 Dec 2025 18:55:00 +0800 Subject: [PATCH 1/2] GHA/Nuke Maintenance --- .github/workflows/docs-prs.yml | 21 ++++------- .github/workflows/docs.yml | 23 +++++------- .../workflows/on-manual-do-nuget-publish.yml | 21 ++++------- .../on-push-do-ci-build-pg15-jsonnet.yml | 29 ++++++--------- ...sh-do-ci-build-pgLatest-systemtextjson.yml | 29 ++++++--------- build/build.cs | 35 +++++++++---------- build/build.csproj | 8 ++--- 7 files changed, 65 insertions(+), 101 deletions(-) diff --git a/.github/workflows/docs-prs.yml b/.github/workflows/docs-prs.yml index b03249c709..7ed9f9b50d 100644 --- a/.github/workflows/docs-prs.yml +++ b/.github/workflows/docs-prs.yml @@ -11,7 +11,7 @@ on: env: DOTNET_CLI_TELEMETRY_OPTOUT: 1 DOTNET_SKIP_FIRST_TIME_EXPERIENCE: 1 - node_version: 20.x + node_version: 24.x NUKE_TELEMETRY_OPTOUT: true jobs: @@ -19,7 +19,7 @@ jobs: name: "linting, spell check and build" runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 name: Check out the code - name: Lint Code Base @@ -27,7 +27,7 @@ jobs: with: args: "--disable MD009 -- docs/**/*.md" - - uses: actions/setup-node@v4 + - uses: actions/setup-node@v6 name: Install Node.js with: node-version: ${{ env.node_version }} @@ -41,17 +41,10 @@ jobs: - name: Install .NET 8.0.x uses: actions/setup-dotnet@v3 with: - dotnet-version: 8.0.x - - - name: Install .NET 9.0.x - uses: actions/setup-dotnet@v3 - with: - dotnet-version: 9.0.x - - - name: Install .NET 10.0.x - uses: actions/setup-dotnet@v3 - with: - dotnet-version: 10.0.x + dotnet-version: | + 8.0.x + 9.0.x + 10.0.x - name: Build docs run: ./build.sh docs-build \ No newline at end of file diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 00cee805a7..52757bd13a 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -14,7 +14,7 @@ on: env: DOTNET_CLI_TELEMETRY_OPTOUT: 1 DOTNET_SKIP_FIRST_TIME_EXPERIENCE: 1 - node_version: 20.x + node_version: 24.x NUKE_TELEMETRY_OPTOUT: true jobs: @@ -30,27 +30,20 @@ jobs: os: [ ubuntu-latest ] steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - name: Install Node.js - uses: actions/setup-node@v4 + uses: actions/setup-node@v6 with: node-version: ${{ env.node_version }} - name: Install .NET 8.0.x - uses: actions/setup-dotnet@v3 + uses: actions/setup-dotnet@v5 with: - dotnet-version: 8.0.x - - - name: Install .NET 9.0.x - uses: actions/setup-dotnet@v3 - with: - dotnet-version: 9.0.x - - - name: Install .NET 10.0.x - uses: actions/setup-dotnet@v3 - with: - dotnet-version: 10.0.x + dotnet-version: | + 8.0.x + 9.0.x + 10.0.x - name: Build & Deploy docs preview run: | diff --git a/.github/workflows/on-manual-do-nuget-publish.yml b/.github/workflows/on-manual-do-nuget-publish.yml index 3242c49e2b..32d132dbaf 100644 --- a/.github/workflows/on-manual-do-nuget-publish.yml +++ b/.github/workflows/on-manual-do-nuget-publish.yml @@ -14,22 +14,15 @@ jobs: steps: - name: Checkout code - uses: actions/checkout@v4 + uses: actions/checkout@v6 - - name: Install .NET 8.0.x - uses: actions/setup-dotnet@v3 + - name: Install .NET + uses: actions/setup-dotnet@v5 with: - dotnet-version: 8.0.x - - - name: Install .NET 9.0.x - uses: actions/setup-dotnet@v3 - with: - dotnet-version: 9.0.x - - - name: Install .NET 10.0.x - uses: actions/setup-dotnet@v3 - with: - dotnet-version: 10.0.x + dotnet-version: | + 8.0.x + 9.0.x + 10.0.x - name: Install .NET Aspire workload run: | diff --git a/.github/workflows/on-push-do-ci-build-pg15-jsonnet.yml b/.github/workflows/on-push-do-ci-build-pg15-jsonnet.yml index 6008ebf132..ded47763e5 100644 --- a/.github/workflows/on-push-do-ci-build-pg15-jsonnet.yml +++ b/.github/workflows/on-push-do-ci-build-pg15-jsonnet.yml @@ -1,4 +1,4 @@ -name: build_net8.0 pg15 Json.NET +name: Build & Test - NET8 - PG15 - Newtonsoft on: push: @@ -21,11 +21,11 @@ on: env: DOTNET_CLI_TELEMETRY_OPTOUT: 1 DOTNET_SKIP_FIRST_TIME_EXPERIENCE: 1 - node_version: 16.x + node_version: 24.x pg_db: marten_testing pg_user: postgres CONFIGURATION: Release - FRAMEWORK: net9.0 + FRAMEWORK: net8.0 DISABLE_TEST_PARALLELIZATION: true DEFAULT_SERIALIZER: "Newtonsoft" NUKE_TELEMETRY_OPTOUT: true @@ -52,22 +52,15 @@ jobs: --user postgres steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - - name: Install .NET 8.0.x - uses: actions/setup-dotnet@v3 + - name: Install .NET + uses: actions/setup-dotnet@v5 with: - dotnet-version: 8.0.x - - - name: Install .NET 9.0.x - uses: actions/setup-dotnet@v3 - with: - dotnet-version: 9.0.x - - - name: Install .NET 10.0.x - uses: actions/setup-dotnet@v3 - with: - dotnet-version: 10.0.x + dotnet-version: | + 8.0.x + 9.0.x + 10.0.x - name: Install .NET Aspire workload run: | @@ -75,7 +68,7 @@ jobs: dotnet workload install aspire - name: Install Node.js - uses: actions/setup-node@v3 + uses: actions/setup-node@v6 with: node-version: ${{ env.node_version }} diff --git a/.github/workflows/on-push-do-ci-build-pgLatest-systemtextjson.yml b/.github/workflows/on-push-do-ci-build-pgLatest-systemtextjson.yml index 40b16e0610..3101f9c041 100644 --- a/.github/workflows/on-push-do-ci-build-pgLatest-systemtextjson.yml +++ b/.github/workflows/on-push-do-ci-build-pgLatest-systemtextjson.yml @@ -1,4 +1,4 @@ -name: build_net7.0 pgLatest System.Text.Json +name: Build & Test - NET10 - PGLatest - System.Text.Json on: push: @@ -21,11 +21,11 @@ on: env: DOTNET_CLI_TELEMETRY_OPTOUT: 1 DOTNET_SKIP_FIRST_TIME_EXPERIENCE: 1 - node_version: 16.x + node_version: 24.x pg_db: marten_testing pg_user: postgres CONFIGURATION: Release - FRAMEWORK: net9.0 + FRAMEWORK: net10.0 DISABLE_TEST_PARALLELIZATION: true DEFAULT_SERIALIZER: "SystemTextJson" NUKE_TELEMETRY_OPTOUT: true @@ -52,22 +52,15 @@ jobs: --user postgres steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - - name: Install .NET 8.0.x - uses: actions/setup-dotnet@v3 + - name: Install .NET + uses: actions/setup-dotnet@v5 with: - dotnet-version: 8.0.x - - - name: Install .NET 9.0.x - uses: actions/setup-dotnet@v3 - with: - dotnet-version: 9.0.x - - - name: Install .NET 10.0.x - uses: actions/setup-dotnet@v3 - with: - dotnet-version: 10.0.x + dotnet-version: | + 8.0.x + 9.0.x + 10.0.x - name: Install .NET Aspire workload run: | @@ -75,7 +68,7 @@ jobs: dotnet workload install aspire - name: Install Node.js - uses: actions/setup-node@v3 + uses: actions/setup-node@v6 with: node-version: ${{ env.node_version }} diff --git a/build/build.cs b/build/build.cs index e103f221dc..6039600e38 100644 --- a/build/build.cs +++ b/build/build.cs @@ -4,6 +4,7 @@ using System.Linq; using System.Text.RegularExpressions; using System.Threading; +using System.Threading.Tasks; using Nuke.Common; using Nuke.Common.IO; using Nuke.Common.ProjectModel; @@ -20,7 +21,7 @@ class Build : NukeBuild [Parameter("Configuration to build - Default is 'Debug' (local) or 'Release' (server)")] readonly Configuration Configuration = IsLocalBuild ? Configuration.Debug : Configuration.Release; - [Solution] readonly Solution Solution; + [Solution(GenerateProjects = true)] readonly Solution Solution; [Parameter] readonly bool DisableTestParallelization = true; [Parameter]readonly string Framework; [Parameter] readonly string Profile; @@ -55,7 +56,7 @@ class Build : NukeBuild Target NpmInstall => _ => _ .Executes(() => NpmTasks.NpmInstall(c => c - .SetProcessArgumentConfigurator(args => args.Add("--loglevel=error")))); + .AddProcessAdditionalArguments("--loglevel=error"))); Target Compile => _ => _ .DependsOn(Restore) @@ -233,10 +234,10 @@ class Build : NukeBuild }); Target InitDb => _ => _ - .Executes(() => + .Executes(async () => { ProcessTasks.StartProcess("docker", "compose up -d"); - WaitForDatabaseToBeReady(); + await WaitForDatabaseToBeReady(); }); Target InstallMdSnippets => _ => _ @@ -371,7 +372,7 @@ class Build : NukeBuild } } - var marten = Solution.GetProject("Marten").Path; + var marten = Solution.Marten.Path; foreach (var nuget in Nugets) { DotNet($"remove {marten} package {nuget}"); @@ -388,7 +389,7 @@ class Build : NukeBuild } } - var marten = Solution.GetProject("Marten").Path; + var marten = Solution.Marten.Path; foreach (var nuget in Nugets) { DotNet($"add {marten} package {nuget} --prerelease"); @@ -403,7 +404,7 @@ private void addProject(string repository, string projectName) if (Nugets.Contains(projectName)) { - var marten = Solution.GetProject("Marten").Path; + var marten = Solution.Marten.Path; DotNet($"add {marten} reference {path}"); } } @@ -414,7 +415,7 @@ private void removeProject(string repository, string projectName) if (Nugets.Contains(projectName)) { - var marten = Solution.GetProject("Marten").Path; + var marten = Solution.Marten.Path; DotNet($"remove {marten} reference {path}"); } @@ -424,23 +425,21 @@ private void removeProject(string repository, string projectName) } - private void WaitForDatabaseToBeReady() + private async Task WaitForDatabaseToBeReady() { var attempt = 0; while (attempt < 10) try { - using (var conn = new Npgsql.NpgsqlConnection(ConnectionString + ";Pooling=false")) - { - conn.Open(); + await using var conn = new Npgsql.NpgsqlConnection(ConnectionString + ";Pooling=false"); + await conn.OpenAsync(); - var cmd = conn.CreateCommand(); - cmd.CommandText = "SELECT 1"; - cmd.ExecuteNonQuery(); + var cmd = conn.CreateCommand(); + cmd.CommandText = "SELECT 1"; + await cmd.ExecuteNonQueryAsync(); - Log.Information("Postgresql is up and ready!"); - break; - } + Log.Information("Postgresql is up and ready!"); + break; } catch (Exception ex) { diff --git a/build/build.csproj b/build/build.csproj index 116e6d32d1..d8a64286c7 100644 --- a/build/build.csproj +++ b/build/build.csproj @@ -2,7 +2,7 @@ Exe - net8.0 + net10.0 CS0649;CS0169;CA1050;CA1822;CA2211;IDE1006 .. @@ -12,9 +12,9 @@ - - - + + + From 18a653b6798687050f63cc4a32069e4507ec363d Mon Sep 17 00:00:00 2001 From: JT Date: Sat, 6 Dec 2025 19:23:39 +0800 Subject: [PATCH 2/2] Fix nuke codegen commands --- build/build.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/build.cs b/build/build.cs index 6039600e38..488363fb46 100644 --- a/build/build.cs +++ b/build/build.cs @@ -214,7 +214,7 @@ class Build : NukeBuild .Executes(() => { // It's actually important to do a codegen write a 2nd time to prevent a temporary bug - var codegenCommands = new[] { "codegen delete", "codegen write", "codegen test", "codegen write" }; + var codegenCommands = new string[][] { ["codegen", "delete"], ["codegen", "write"], ["codegen","test"], ["codegen","write"] }; foreach (var command in codegenCommands) { DotNetRun(s => s