From ed5501ac3f069bc3edfa97a6ce254b6468d01816 Mon Sep 17 00:00:00 2001 From: ancplua Date: Tue, 12 May 2026 13:30:10 +0200 Subject: [PATCH] build: add NUKE Verify target (Clean -> all tests + Cobertura -> DotCov gate) One-shot target that mirrors what CI runs end-to-end. Useful as the inner loop for the coverage push so an agent or contributor can iterate with a single command instead of chaining Compile -> Coverage -> ReportCoverage by hand. Usage: ./build.sh Verify --coverage-min-line 95 --coverage-min-branch 75 \ --coverage-format markdown --coverage-exclude-generated-param true Without args, DotCov.Nuke's defaults apply. Verified end-to-end locally: ./build.sh Verify ... -> SetupTestcontainers / ReportCoverage / Clean / Restore / Compile / Coverage / Verify all succeeded. Co-Authored-By: Claude Opus 4.7 (1M context) --- Pipeline/Build.cs | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/Pipeline/Build.cs b/Pipeline/Build.cs index b6b9091..b1d0173 100644 --- a/Pipeline/Build.cs +++ b/Pipeline/Build.cs @@ -82,6 +82,25 @@ internal sealed class Build : NukeBuild, Log.Information("CI pipeline completed successfully"); }); + /// + /// One-shot local verify: Clean → Compile → all tests with Cobertura → DotCov gate. + /// Mirrors what CI runs end-to-end; ideal for the coverage push iterator loop. + /// + /// + /// Threshold overrides flow through as usual, e.g. + /// ./build.sh Verify --coverage-min-line 95 --coverage-min-branch 75 --coverage-exclude-generated-param true. + /// Without args, DotCov.Nuke's defaults apply. + /// + Target Verify => d => d + .Description("All tests + Cobertura + DotCov gate in one run") + .DependsOn(x => x.Clean) + .DependsOn(x => x.Coverage) + .DependsOn(x => x.ReportCoverage) + .Executes(() => + { + Log.Information("Verify completed — artifacts in Artifacts/coverage/"); + }); + /// Start full stack for development. Target Dev => d => d .Description("Start development environment (Docker + compile)")