Skip to content

Add tag-driven release workflow producing AOT binaries - #55

Merged
jamescrosswell merged 4 commits into
mainfrom
milestone-45-release-workflow
May 31, 2026
Merged

jamescrosswell merged 4 commits into
mainfrom
milestone-45-release-workflow

Conversation

@jamescrosswell

Copy link
Copy Markdown
Contributor

Summary

  • New .github/workflows/release.yml triggered by v* tag push (or workflow_dispatch against an existing tag). Matrix builds AOT single-file binaries on native runners for all six RIDs (osx-arm64, osx-x64, linux-x64, linux-arm64, win-x64, win-arm64), archives + .sha256s each, and uploads them to a draft GitHub Release for manual review/publish.
  • macOS signing + notarization auto-enable when these secrets are configured; until then macOS tarballs ship unsigned (Gatekeeper quarantines on download):
    • APPLE_CERT_BASE64 / APPLE_CERT_PASSWORD / APPLE_SIGNING_IDENTITY — Developer ID Application .p12 + identity for codesign.
    • APPLE_ID / APPLE_TEAM_ID / APPLE_APP_PASSWORD — notarytool submit credentials (app-specific password from appleid.apple.com).
  • README + AGENTS.md updated with release process and required secrets.

Notes

  • A bare Mach-O can't carry a stapled notarization ticket, so we notarize the tarball directly; users get the ticket via Gatekeeper's cache on first launch.
  • arm64 Linux/Windows use the public ubuntu-24.04-arm / windows-11-arm runners — native AOT, no cross-compile.
  • gh release create … --draft so each tag produces a draft release you publish manually after sanity-checking the artifacts.

Closes #45. Unblocks #41 (Homebrew tap), #43 (Windows distribution), #44 (Linux distribution).

🤖 Generated with Claude Code

Triggered by `v*` tag (or workflow_dispatch with an existing tag).
Matrix builds AOT single-file binaries on native runners for the six
supported RIDs, tarballs/zips them with a .sha256 sidecar, and uploads
to a draft GitHub Release.

macOS signing + notarization auto-enable when APPLE_* secrets are
present; without them the macOS tarballs ship unsigned (Gatekeeper
quarantine on download). Required secrets are documented in AGENTS.md.

Blocks #41 (Homebrew tap), #43 (Windows), #44 (Linux) — they all
consume the artifacts this workflow produces.

Closes #45
So we can validate the matrix build / tarball / sha256 / artifact upload
on this PR before merging. Skips the release job and macOS
sign/notarize/spctl steps on PR runs. Remove this trigger before merge.
Apple's last Intel Mac shipped in 2020 and recent macOS releases drop
support for the older Intel models. The osx-x64 publish was also
hanging on macos-13 runners. Apple Silicon only going forward.
- Remove the temporary pull_request trigger from release.yml now that
  the matrix is verified green on PR #55.
- Bump checkout v4→v6, setup-dotnet v4→v5, upload-artifact v4→v7,
  download-artifact v4→v8 in release.yml; same checkout/setup-dotnet
  bumps in ci.yml. Clears the Node.js 20 deprecation annotation
  (forced to Node 24 from 2026-06-16).
@jamescrosswell
jamescrosswell marked this pull request as ready for review May 31, 2026 03:13
@jamescrosswell
jamescrosswell merged commit a0fb4df into main May 31, 2026
2 checks passed
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.

GitHub Actions release workflow: single-file publish per architecture

1 participant