feat(ci): reusable .NET CI and NuGet release workflows #3

Merged
KofTwentyTwo merged 2 commits from feat/dotnet-workflows into main 2026-10-09 19:36:50 +00:00
2 Commits
Author SHA1 Message Date
james.maesandClaude Opus 5.5 cf94d3044f fix(ci): keep MSBuild-colliding env vars out of dotnet steps; build before format
- MSBuild turns environment variables into properties, so PLATFORM=x64 made
  dotnet test look under bin/x64/ while the solution build mapped test projects
  to AnyCPU (bin/Debug/). SOLUTION, PLATFORM, and VERSION are now K22_-prefixed.
- The release title step still read $VERSION after the rename; fixed.
- dotnet format runs without XAML compilation, so XAML event handlers looked
  unused (IDE0051); the format job now builds first.

Found by AppKit's adoption PR, the first real run of these workflows.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: James Maes <james@kof22.com>
2026-10-09 14:35:23 -05:00
james.maesandClaude Opus 5.5 c00b9341f0 feat(ci): reusable .NET CI and NuGet release workflows
- dotnet.yml: locked restore, zero-warning build, tests with a per-package
  coverage gate, Kingsrook format check (--severity warn), optional FlaUI UI
  tests and pack; contexts ci / build-test, ci / format, ci / ui-tests.
- release-nuget.yml: tag validation, Release gates, pack, CycloneDX 1.6 SBOM per
  package from its lock file (Syft, digest-pinned), SHA256SUMS, SLSA build
  provenance and SBOM attestations, draft-then-publish GitHub release.
- nuget.org trusted publishing validates job_workflow_ref against the package's
  own repository, so the push runs in a caller job (template) that first
  verifies the attestations with --signer-repo KofTwentyTwo/standards.
- Caller templates, docs (ci-cd, releases, README, configs/dotnet), and the
  conformance checker: CI-30 requires a SHA-pinned standards release-*.yml call,
  CI-01 expects the .NET contexts when a solution exists.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: James Maes <james@kof22.com>
2026-10-09 14:35:23 -05:00