Skip to content

fix(release): support Windows and Linux prereleases#756

Merged
meiiie merged 2 commits into
mainfrom
ci/windows-linux-prerelease
Jul 11, 2026
Merged

fix(release): support Windows and Linux prereleases#756
meiiie merged 2 commits into
mainfrom
ci/windows-linux-prerelease

Conversation

@meiiie

@meiiie meiiie commented Jul 11, 2026

Copy link
Copy Markdown
Collaborator

Summary

Add an explicit windows-linux scope for prereleases while keeping stable and ordinary release runs fail-closed on every platform.

Problem and root cause

The reviewed v1.3.5-beta.2 source builds on Windows and Linux, but both signed macOS jobs are blocked by invalid Apple notarization credentials. The existing workflow requires all four platforms, so its publish job correctly skips every release asset.

Focused change

  • expose all / windows-linux on manual release dispatch
  • recognize <!-- release-scope: windows-linux --> only on prerelease publication
  • skip macOS jobs only for that explicit scope
  • require both Windows and Linux build jobs before publishing
  • upload only their installers/blockmaps plus a combined attested checksum
  • reject partial stable releases and suppress stable update/Homebrew metadata

The default remains all; no product source, version, tag, dependency, or signing policy changes.

Verification

  • PyYAML parse and Bash syntax checks
  • checksum-verified actionlint 1.7.12
  • marked/default/manual scope scenarios
  • stable partial rejection scenario
  • partial/full/stable asset-set simulations
  • npx tsc --noEmit
  • npm run lint (pass; inherited warnings)
  • npm test — 106 files, 995 pass, 1 skip
  • git diff --check

Risk and rollback

Risk is limited to release orchestration. The partial path is prerelease-only and opt-in; removing the merge commit restores the all-platform gate. v1.3.5-beta.2 will be labeled Windows/Linux only, with macOS unavailable and the Windows installer disclosed as unsigned.

Summary by CodeRabbit

  • New Features
    • Added selectable release scope for publishing all platforms or Windows/Linux only.
    • Enabled macOS publishing to be automatically skipped for partial scope releases (when applicable).
  • Bug Fixes
    • Prevented Homebrew updates for partial releases and for prereleases.
    • Ensured release assets are staged/published only for the platforms included in the selected scope.
  • Chores
    • Improved release validation and conditional execution to match the chosen scope.

@coderabbitai

coderabbitai Bot commented Jul 11, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: ee0a6149-54db-4744-8baa-3cd26d28ab81

📥 Commits

Reviewing files that changed from the base of the PR and between bffd986 and 83a2407.

📒 Files selected for processing (1)
  • .github/workflows/release.yml
🚧 Files skipped from review as they are similar to previous changes (1)
  • .github/workflows/release.yml

📝 Walkthrough

Walkthrough

The release workflow adds release_scope selection and validation, supports Windows/Linux-only prereleases, conditionally skips macOS jobs and assets, and limits Homebrew updates to full non-prerelease releases.

Changes

Release Scope Publishing

Layer / File(s) Summary
Resolve and validate release scope
.github/workflows/release.yml
Release scope is read from manual dispatch input or release-body metadata, restricted to all and windows-linux, and exported through prepare-release.
Gate platform builds and publishing
.github/workflows/release.yml
macOS builds, metadata downloads, staged assets, release publishing, and Homebrew updates are conditioned on the resolved scope and prerelease status.

Estimated code review effort: 3 (Moderate) | ~20 minutes

Sequence Diagram(s)

sequenceDiagram
  participant ReleaseEvent
  participant prepare-release
  participant PlatformBuilds
  participant publish-release-assets
  participant HomebrewTap
  ReleaseEvent->>prepare-release: resolve and validate release_scope
  prepare-release->>PlatformBuilds: pass release_scope output
  PlatformBuilds->>publish-release-assets: provide successful scoped artifacts
  publish-release-assets->>HomebrewTap: trigger only for full non-prerelease releases
Loading
🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly matches the main change: adding prerelease support for Windows/Linux release scope handling.
Description check ✅ Passed The description covers the purpose, motivation, implementation, verification, and rollback context, with only some template sections omitted.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch ci/windows-linux-prerelease

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In @.github/workflows/release.yml:
- Around line 54-68: Replace the inline GitHub expression expansions for tag
names in the release workflow’s shell block with environment-variable inputs,
and read those variables inside the release and workflow_dispatch branches
before assigning TAG_NAME. Ensure shell interpolation cannot execute tag
contents, while preserving the existing marker detection, release-scope
fallback, and subsequent validation behavior.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 3b5c4849-a823-4703-9fee-cc9da45bd56b

📥 Commits

Reviewing files that changed from the base of the PR and between 15ef10c and bffd986.

📒 Files selected for processing (1)
  • .github/workflows/release.yml

Comment thread .github/workflows/release.yml
@meiiie meiiie merged commit 360b160 into main Jul 11, 2026
4 checks passed
@meiiie meiiie deleted the ci/windows-linux-prerelease branch July 11, 2026 11:53
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.

1 participant