Skip to content

Build darwin-x64 releases on the macos-15-intel runner - #395

Open
meancrazy wants to merge 2 commits into
Nimblesite:mainfrom
meancrazy:chore/darwin-x64-release
Open

meancrazy wants to merge 2 commits into
Nimblesite:mainfrom
meancrazy:chore/darwin-x64-release

Conversation

@meancrazy

@meancrazy meancrazy commented Oct 19, 2026 •

Copy link
Copy Markdown

TLDR

Re-enables the commented-out darwin-x64 release leg on macos-15-intel — GitHub's standard-runner Intel label — so Intel Macs get released VSIXes and server archives again.

Details

The leg was disabled with "This just spins forever on GitHub's hosted runners": it pointed at macos-13, which GitHub retired on 2025-12-04, so the job queued until cancelled. GitHub's migration changelog (2025-09-19) added macos-15-intel for standard-runner users, supported until the macOS 15 image retires in Fall 2027; runner-images lists it un-deprecated today. Changes (all in release.yml):

  • darwin-x64 leg on os: macos-15-intel, native → can_execute: true runs the real smoke tests (sharplsp --version, verify-archive.sh execution check), same as the other native legs.
  • Per-leg timeout: timeout-minutes: "${{ matrix.timeout_minutes || 45 }}" with timeout_minutes: 60 for darwin-x64 — 4 Intel cores compile the Rust release build slower than the ARM leg.
  • PLATFORM_COUNT: '5' → '6' for the asset-count gate.
  • Why not macos-26-intel: the older SDK keeps binaries' minimum deployment target low for the (aging) Intel install base, and macos-15-intel is the label GitHub explicitly announced for standard (free, public-repo) runners.
  • netcoredbg has no darwin-x64 build upstream; fetch-netcoredbg.sh and verify-vsix-payload.mjs (NO_DEBUGGER_PREBUILT) already handle the platform cleanly — same fallback as win32-arm64 (PATH / sharplsp.debug.netcoredbgPath).
  • Fork hygiene (droppable if you prefer forks to fail loudly): the publish-side jobs hard-fail by design without the canonical secrets (Require BREW_SCOOP_PAT, OVSX_PAT, Entra OIDC), so every fork's release currently turns red after a perfectly good GitHub Release. Scoped them to github.repository == 'Nimblesite/SharpLsp' — job-level for deploy-pages/brew/scoop, step-level for publish-marketplace/publish-openvsx because security-gates.test.mjs asserts those jobs carry no job-level if. The jobs still require the audited release unconditionally; only the credential-holding steps are scoped. No-op on this repo.
  • No Homebrew follow-up — deliberately. render-package-manifests.mjs / verify-package-manifests.mjs exclude darwin-x64 from the formula, and that stays correct policy even though the stated reason ("the macos-13 runner hangs") is stale: Homebrew 7.0.0 (Sep 2026) moved Intel to Tier 3 — no project support, no routine bottles, Intel CI removed from homebrew-core, winding down by Sep 2027. The checksummed server-darwin-x64 archive on the GitHub Release is the Intel distribution channel ([DIST-PATH-INSTALL]), for the same window GitHub keeps macos-15-intel alive (macOS 15 image retires Fall 2027; Apple's macOS 26 is the last Intel release). This leg serves the existing Intel fleet through that wind-down, not a permanent commitment.

End-to-end verified on a real Intel Mac (x86_64-apple-darwin, macOS 26.7.1): make _package-vsix-darwin-x64 builds the Rust host, both sidecars, the profiler engine, the VSIX (46 MB, 277 files) and the standalone archive; the VSIX installs and activates in VS Code.

How Do The Automated Tests Prove It Works?

  • tools/ci/security-gates.test.mjs [DIST-CI-AUDIT]: all 14 gates pass, including "vulnerability findings block the release and both VSIX marketplaces" — the assertions that publish-marketplace/publish-openvsx have no job-level if are untouched; the fork scoping lives on steps, which is exactly what the test permits.
  • The release matrix itself: tag v0.22.1 on the fork runs the full six-platform release including the new leg — the darwin-x64 job executes the same gates as every native platform (binary --version, VSIX-contents check with the foreign-binary negative check, verify-archive.sh unpack-and-run smoke test) on a real Intel runner.
  • This PR's own Analyse phase re-runs the workflow meta-tests (security-gates, vsix-rebuild, reinstall-loop) against the modified release.yml.

Dmitrii Smirnov added 2 commits October 19, 2026 19:47
The commented-out leg pointed at macos-13, which GitHub retired on
2025-12-04, so it queued forever. macos-15-intel is the standard-runner
Intel label for public repos: the leg builds natively (can_execute runs
the real smoke test) with a longer per-leg timeout for the slower
4-core Intel release build.

PLATFORM_COUNT rises to 6 to match. Publish-side jobs (marketplace,
open-vsx, brew, scoop, pages) are guarded to the canonical repo so fork
releases stay green without the publish secrets; the GitHub Release
assets upload unchanged. Homebrew rendering still excludes darwin-x64
deliberately (verify-package-manifests.mjs) and only runs on the
canonical repo.
security-gates.test.mjs implements [DIST-CI-AUDIT]: publish-marketplace
and publish-openvsx must carry no job-level if, so publishing can never
bypass the audited release dependency. Move the canonical-repo scoping
onto the credential-holding steps instead — on forks the jobs still run
and still require the audited release, but sign in to nothing and
publish nothing. All 14 gate tests pass locally.
@MelbourneDeveloper

Copy link
Copy Markdown
Collaborator

@meancrazy GitHub rarely has macOS intel runners and it often blocks the release. I'm not going to reenable this until there is a long term solution for moving the runners off GitHub

This branch has not been deployed

No deployments
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