Skip to content

perf(ci): overlap release validation and reuse macOS binaries - #298

Merged
hyperb1iss merged 1 commit into
mainfrom
nova/ci-release-efficiency
Sep 20, 2026
Merged

hyperb1iss merged 1 commit into
mainfrom
nova/ci-release-efficiency

Conversation

@hyperb1iss

@hyperb1iss hyperb1iss commented Sep 20, 2026

Copy link
Copy Markdown
Owner

What this changes

Release compilation now starts alongside validation. Each macOS native job produces both the installer and standalone tarball from its existing binaries.

Why

The v0.5.1 release waited roughly an hour for validation before starting its longest native build. Separate macOS installer and tarball jobs also compile overlapping binaries.

Verification

Workflow lint, 26 focused Node tests, and five distribution archive tests pass. Independent verification exercised the real distribution script for both architectures with a platform signer fixture and confirmed that every publication dependency is preserved. All live PR checks passed before merge, including Windows, both macOS architectures, Linux tests, and Servo/CPU E2E.

Unchecked gates below are not applicable to this workflow-only change. Native compilation and live Apple notarization require the macOS release runners.

  • Added or updated tests
  • Added or updated docs (README, AGENTS.md, relevant spec, or guide)
  • just verify passes locally (Rust fmt + lint + test)
  • just deny passes (required for dependency or license changes)
  • just ui-test and just ui-build pass (required for crates/hypercolor-ui/)
  • just sdk-lint, just sdk-check, and just sdk-build pass (required for sdk/)
  • just python-verify passes (required for python/)
  • just compat-check passes (required for data/drivers/vendors/*.toml)
  • just docs-build passes (required for docs or README changes)
  • cd docs && zola check passes (required for docs link/content changes)
  • Packaging scripts were syntax-checked (required for scripts/ or packaging/)
  • just e2e-build passes with the normal Servo stack (required for daemon/UI/effect integration changes)
  • just e2e-build-cpu passes when validating the CPU smoke fallback
  • just e2e passes against the Servo stack (required for end-to-end behavior changes; starts daemon/browser)
  • Tested on real hardware, simulator, or e2e harness (describe below)

Notes for reviewers

Artifact builds require signing preflight and web assets; publication requires all prior validation gates plus finished artifacts. Failed checks still prevent publishing.

The daemon and CLI come from the host release directory; the app comes from Tauri's explicit-target directory. The existing distribution script signs and verifies standalone binaries independently. Tarball filenames and checksums retain the format consumed by Homebrew.

Shipping optimization settings are unchanged. No release was dispatched for this change.

Summary by CodeRabbit

  • Build and Release
    • Release compilation now starts earlier while validation checks run in parallel.
    • macOS releases are packaged with signed application binaries for both supported architectures.
    • macOS release packages now include downloadable archives and SHA-256 checksums.
    • Release publication remains blocked until all required validation checks complete.
  • Tests
    • Added coverage to verify macOS packaging, signing, architecture support, and release gating.

Start release compilation once signing credentials and web assets are
ready, while retaining every validation prerequisite on publication.
Avoid making the longest native build wait behind the full test matrix.

Package macOS tarballs from the native job's compiled daemon, CLI and
app instead of compiling a second release graph. Preserve standalone
signing, notarization verification, archive names and checksums.

Co-Authored-By: Nova (GPT-6) <noreply@openai.com>
@coderabbitai

coderabbitai Bot commented Sep 20, 2026

Copy link
Copy Markdown

Review Change StackReview Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Advanced

Run ID: 791d8415-bf09-42a2-bae2-b6fd8ff1a048

📥 Commits

Reviewing files that changed from the base of the PR and between de3e787 and f1c7084.

📒 Files selected for processing (3)
  • .github/workflows/ci.yml
  • scripts/tests/macos-ci-coverage.test.mjs
  • scripts/tests/macos-release.test.mjs

Included review availability: Your plan provides up to 1 included review per hour; 0 remain after this review.


📝 Walkthrough

Walkthrough

The release workflow now builds native and Linux artifacts with fewer validation dependencies, packages signed macOS distributions in build-native-app, and makes create-release wait for the builders and validation jobs. Tests verify the dependency graph and macOS artifacts.

Changes

Release pipeline

Layer / File(s) Summary
Builder dependencies and platform matrix
.github/workflows/ci.yml
build-native-app and build-release now depend on release-credentials and web-assets. build-release now contains only Linux matrix entries.
macOS distribution packaging
.github/workflows/ci.yml, scripts/tests/macos-release.test.mjs
build-native-app stages signed macOS binaries, creates and verifies architecture-specific tarballs, writes checksums, and uploads artifacts. Tests execute this packaging step with fixtures.
Release publication gate
.github/workflows/ci.yml, scripts/tests/macos-ci-coverage.test.mjs
create-release now depends on both builders, release credentials, and the validation jobs. Tests verify the dependency lists and tag-based release condition.

Priority: ➖ Normal

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

Change: Refactor

Sequence Diagram(s)

sequenceDiagram
  participant ReleaseInputs
  participant ValidationJobs
  participant NativeApp as build-native-app
  participant LinuxBuild as build-release
  participant CreateRelease as create-release
  ReleaseInputs->>NativeApp: Provide release-credentials and web-assets
  ReleaseInputs->>LinuxBuild: Provide release-credentials and web-assets
  ValidationJobs->>ValidationJobs: Run validation jobs in parallel
  NativeApp->>NativeApp: Package macOS tarballs
  LinuxBuild->>LinuxBuild: Build Linux artifacts
  NativeApp->>CreateRelease: Provide native artifacts
  LinuxBuild->>CreateRelease: Provide Linux artifacts
  ValidationJobs->>CreateRelease: Provide validation results
  CreateRelease->>CreateRelease: Publish release when dependencies succeed
Loading
🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 2…
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.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly summarizes the main changes: overlapping release validation and reusing macOS binaries. It is concise and specific.
✨ Finishing Touches
📝 Generate docstrings
  • Commit to this branch
  • Create a new PR

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

@hyperb1iss
hyperb1iss merged commit 4e1b344 into main Sep 20, 2026
40 checks passed
@hyperb1iss
hyperb1iss deleted the nova/ci-release-efficiency branch September 20, 2026 10:01
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