feat(swift-release): support pre-releases (rc), GitHub-only, no Jamf - #81
Conversation
swift-release.yml could only cut stable releases — it never passed the `prerelease` flag the underlying blocks already support, and it deployed to Jamf on every release. This brings it to parity with the TS/Rust release workflows and adds a Jamf safety gate for pre-releases. - add `labels-to-check`, `prerelease`, and `release` inputs (matching typescript-service-release / rust-service-release) - `prerelease` is a peer of `release`: either label/input alone triggers the pipeline (small ergonomic improvement over the TS/Rust gating, which treats prerelease as a modifier requiring `release` too) - thread `prerelease` into generate-release-info (-> -rc.N version) and create-github-release (-> GitHub pre-release flag) - skip jamf-upload on pre-releases so an rc never ships to the fleet Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (1)
📜 Recent review details⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
🧰 Additional context used🧠 Learnings (3)📚 Learning: 2026-04-05T00:07:12.194ZApplied to files:
📚 Learning: 2026-04-27T01:30:22.893ZApplied to files:
📚 Learning: 2026-04-27T01:30:22.893ZApplied to files:
🔇 Additional comments (6)
📝 WalkthroughWalkthroughThis PR extends the Swift release workflow with configurable PR-label checking. A new ChangesPrerelease Configuration and Workflow Gating
🎯 2 (Simple) | ⏱️ ~12 minutes
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
📄 README may need an updateThis PR introduces changes that might not be reflected in Reason: The
|
📚 Skills documentation may need an updateThis PR introduces changes that might not be reflected in the skills documentation. Reason:
|
What
Teaches
swift-release.ymlto cut pre-releases (release candidates), not just stable releases — bringing it to parity withtypescript-service-release.yamlandrust-service-release.yaml, which already have this. The underlying blocks (generate-release-info,create-github-release) already supportedprerelease; the Swift workflow just never wired it up.Why
macrocosm-astrolabe) ships to the Jamf production Mac fleet on every release. There was no way to cut a candidate build for testing without shipping it to everyone..pkg, attaches it to a GitHub pre-release (vX.Y.Z-rc.N, flagged prerelease) for manual testing, and skips Jamf entirely.Changes
check-labels["release"]labels-to-check, default["release","prerelease"]prepare-releasereleaselabelreleaseorprerelease(label or forced input)generate-release-infoprerelease→-rc.Nversion suffixgithub-releaseprerelease→ GitHub pre-release flagjamf-uploadNew inputs (mirroring TS/Rust):
labels-to-check,prerelease(force),release(force).Note on semantics
Here
prereleaseis a peer ofrelease— either one alone triggers the pipeline. TS/Rust treatprereleaseas a modifier that still requires thereleaselabel. This is a small ergonomic improvement (lets a caller cut an rc with one label / one toggle); it's a strict superset of the old behavior, so existingrelease-labeled flows are unchanged. Happy to align all three either way.Compatibility
Backward compatible. Existing callers (only
macrocosm-astrolabetoday) keep working unchanged — arelease-labeled merge still cuts a stable release + Jamf deploy.Merge order
macrocosm-astrolabe) passes the newrelease/prereleaseinputs, which don't exist on@mainuntil this merges. Merge this first, then the astrolabe PR.🤖 Generated with Claude Code
Need help on this PR? Tag
@codesmithwith what you need. Autofix is disabled.Summary by CodeRabbit