Skip to content

Bring Cake.StrongNameSigner to canonical baseline - #19

Merged
gep13 merged 6 commits into
cake-contrib:developfrom
gep13:baseline
May 4, 2026
Merged

gep13 merged 6 commits into
cake-contrib:developfrom
gep13:baseline

Conversation

@gep13

@gep13 gep13 commented May 4, 2026 •

Copy link
Copy Markdown
Member

Summary

Brings Cake.StrongNameSigner to the cake-contrib canonical baseline (modelled on Cake.7zip and the recently merged Cake.Eazfuscator.Net #12 / Cake.Coveralls #191 / Cake.Json #155). Bundles Group 1 (mechanical baseline) + Group 2 (AppVeyor removal + GitHub Actions consolidation) + Group 6 (exercise .cake script) + bootstrap modernisation in a single PR.

TFMs (netstandard2.0;net461) and Cake.Core 0.33.0 are deliberately not bumped here — those land in the per-Cake-major catch-up PR.

Changes

Recipe + tool mesh (recipe.cake, .config/dotnet-tools.json)

  • Cake.Recipe 2.2.0 → 4.0.0
  • cake.tool 0.38.5 → 2.3.0
  • testFilePattern: "DO_NOT_RUN_TESTS" — the existing tests TFM (netcoreapp3.1) is EOL and not installable from setup-dotnet. Test execution returns when the tests TFM gets bumped in the per-Cake-major catch-up. Coverage of the alias surface is provided by strongnamesigner.cake instead.
  • Adds canonical testCoverageFilter / exclusion settings.

Analyzers (Source/Cake.StrongNameSigner/Cake.StrongNameSigner.csproj)

  • CakeContrib.Guidelines 0.5.0 → 1.7.0
  • Cake.Addin.Analyzer 0.1.1 → 0.1.3
  • Microsoft.SourceLink.GitHub 1.0.0 → 8.0.0
  • Adds IDisposableAnalyzers 4.0.8 (was missing in every cake-contrib addin per the workspace audit).

Nullable + Source/Directory.Build.props (new file)

  • Enables LangVersion 10 + Nullable across the Source folder, matching Cake.7zip canonical.
  • Tests project pins Nullable=disable and adds NoWarn: SA1600;SA1633;CS1591 to keep TreatWarningsAsErrors viable on the legacy doc/null surface — these get revisited at per-Cake-major catch-up time.

Floor files (global.json, NuGet.Config, .gitignore)

  • global.json pins SDK 8.0.100 with rollForward: latestFeature.
  • NuGet.Config clears all sources except nuget.org to bypass the broken MyGet fallback that Cake.Recipe 4.0.0 still hardcodes.
  • .gitignore adds *.lscache (language-service cache artifact dropped by dotnet build).

CI consolidation (.github/workflows/build.yml, .github/workflows/codeql-analysis.yml, .github/renovate.json, .appveyor.yml, .github/dependabot.yml)

  • Removes .appveyor.yml — recipe already prefers GitHub Actions.
  • Removes .github/dependabot.yml — workspace standardises on Renovate.
  • Adds .github/renovate.json extending cake-contrib/renovate-presets.
  • Adds .github/workflows/codeql-analysis.yml (canonical Eazfuscator/7zip shape).
  • Rewrites .github/workflows/build.yml to canonical:
    • matrix: [windows-2025, ubuntu-24.04] only — macOS dropped until Cake.Recipe catches up (GitVersion fails on macOS with the 4.0.0 + cake.tool 2.3.0 mesh).
    • dotnet 6/7/8/9/10 + mono on Linux (for net461).
    • SHA-pinned actions (checkout/setup-dotnet/cache/upload-artifact).
    • cake-build/cake-action@v3 with cake-version: tool-manifest.
    • Env-var list slimmed (drops GITTER_*, TWITTER_*, WYAM_*).

Bootstrappers (build.ps1, build.sh)

  • Modernised to the Cake.7zip shape: DOTNET_* env-var hardening, cd to script root, drops the legacy --bootstrap step.

Group 6 exercise script (new strongnamesigner.cake)

  • Self-contained exercise of the addin's alias + settings surface.
  • The StrongNameSigner alias shells out to StrongNameSigner.Console.exe from Brutal.Dev.StrongNameSigner, which isn't installed via this script — verification therefore covers:
    • StrongNameSignerSettings round-trip (all 6 properties).
    • StrongNameSignerVerbosity round-trip (all 5 enum values).
    • Alias is callable and reaches tool resolution (throws "Could not locate executable" — confirms the alias is wired correctly).

Test plan

  • dotnet publish Source/Cake.StrongNameSigner -c Release -f netstandard2.0 -o BuildArtifacts/temp/_PublishedLibraries/Cake.StrongNameSigner/netstandard2.0 succeeds.
  • dotnet cake strongnamesigner.cake exits 0 with both Settings-Roundtrip and Alias-ResolvesToToolError passing.
  • CI: build.yml matrix passes on windows-2025 and ubuntu-24.04.
  • CI: codeql-analysis.yml runs successfully.
  • CI: release-notes.yml still runs (left untouched in this PR; refresh deferred to follow-up).

🤖 Generated with Claude Code

gep13 and others added 6 commits May 4, 2026 11:29
Bump recipe.cake to Cake.Recipe 4.0.0 and tool-manifest cake.tool to
2.3.0; add testFilePattern: DO_NOT_RUN_TESTS since the tests TFM
(netcoreapp3.1) is EOL and not installable from setup-dotnet — TFM
bump is deferred to the per-Cake-major catch-up release. Adds
testCoverage* settings to match the canonical recipe shape.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Bump CakeContrib.Guidelines 0.5.0 -> 1.7.0, Cake.Addin.Analyzer
0.1.1 -> 0.1.3, and Microsoft.SourceLink.GitHub 1.0.0 -> 8.0.0 to
match the canonical mesh. Add IDisposableAnalyzers 4.0.8 (missing
in every cake-contrib addin per the audit). Cake.Core stays at
0.33.0 — TFM/Cake.Core bumps belong in per-Cake-major catch-up.

Add Source/Directory.Build.props to enable LangVersion 10 and
Nullable, matching Cake.7zip canonical. Tests project gets
Nullable=disable plus NoWarn for SA1600;SA1633;CS1591 to keep
TreatWarningsAsErrors viable on the legacy doc/null surface;
revisit during the per-Cake-major catch-up.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
global.json pins SDK 8.0.100 with rollForward=latestFeature so
local + CI both resolve a consistent SDK band. NuGet.Config bypasses
the broken MyGet fallback that Cake.Recipe 4.0.0 still hardcodes
in parameters.cake when no NuGet.Config is present. *.lscache is a
language-service cache artifact dropped by `dotnet build` and
should never be committed.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Remove .appveyor.yml — workspace standardises on GitHub Actions, and
recipe.cake already sets preferredBuildProviderType: GitHubActions.

Remove .github/dependabot.yml — workspace standardises on Renovate
(see project_standardize_on_renovate memory); replacement
.github/renovate.json comes in the next commit.

Modernize build.ps1 and build.sh to the Cake.7zip canonical shape:
DOTNET_* env-var hardening, cd to script root, drop the
`--bootstrap` step (cake.tool 2.3.0 manages its own #addin/#tool
acquisition).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Bring .github/workflows/build.yml to the canonical Cake.7zip /
Cake.Eazfuscator.Net shape:
- matrix limited to [windows-2025, ubuntu-24.04] — macOS dropped
  until Cake.Recipe catches up (GitVersion fails on macOS with the
  4.0.0 + cake.tool 2.3.0 mesh; see no_macos_in_build_matrix memory)
- pinned-SHA actions (checkout/setup-dotnet/cache/upload-artifact)
- dotnet 6/7/8/9/10 installed
- mono installed on Linux (needed for net461 build)
- cake-build/cake-action@v3 with cake-version: tool-manifest
- env-var list slimmed to the in-use surface (drop GITTER_*,
  TWITTER_*, WYAM_*)
- per-OS issues artifact name, packages only uploaded from Windows

Add codeql-analysis.yml (canonical Eazfuscator/7zip shape) — the
audit flagged this as missing across all 28 addins.

Add .github/renovate.json extending cake-contrib/renovate-presets;
Cake.Core minor/patch updates suppressed and major Cake.Core
updates labelled "Breaking Change" per the canonical packageRules.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Self-contained exercise of the addin's alias and settings surface.
The actual StrongNameSigner alias shells out to a third-party tool
(StrongNameSigner.Console.exe from Brutal.Dev.StrongNameSigner)
that CI doesn't install via this script, so verification covers:
- StrongNameSignerSettings round-trip (all 6 properties)
- StrongNameSignerVerbosity round-trip (all 5 enum values)
- alias is callable and reaches tool resolution (throws
  "Could not locate executable" — confirms the alias is wired)

Verified locally: dotnet publish to
BuildArtifacts/temp/_PublishedLibraries/Cake.StrongNameSigner/netstandard2.0
then `dotnet cake strongnamesigner.cake` exits 0 with both tasks
passing.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

@gep13 gep13 left a comment

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!

@github-advanced-security

Copy link
Copy Markdown

You are seeing this message because GitHub Code Scanning has recently been set up for this repository, or this pull request contains the workflow file for the Code Scanning tool.

What Enabling Code Scanning Means:

  • The 'Security' tab will display more code scanning analysis results (e.g., for the default branch).
  • Depending on your configuration and choice of analysis tool, future pull requests will be annotated with code scanning analysis results.
  • You will be able to see the analysis results for the pull request's branch on this overview once the scans have completed and the checks have passed.

For more information about GitHub Code Scanning, check out the documentation.

@gep13
gep13 merged commit 88408f8 into cake-contrib:develop May 4, 2026
4 checks passed
@gep13
gep13 deleted the baseline branch May 4, 2026 10:35
gep13 added a commit that referenced this pull request Aug 20, 2026
Baseline PR #19 gated tests off while the addin was still on
Cake.Core 0.33.0. Now that Cake.Core has been bumped to 1.0.0 and
tests target net6.0, let CI actually run the test suite. The
Windows-only path test is already gated via [WindowsTheory]
(historical fix, commit a9b0819).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants