Fix Windows arm64 release: use forked setup-sentry-cli with win32/arm64 mapping - #15491
Conversation
`matbour/setup-sentry-cli` maps `process.platform`/`process.arch` to a sentry-cli asset via a hardcoded table with no `win32-arm64` entry, and only falls back to a universal build on darwin. Since #27746 moved the Windows arm64 release legs onto the native `windows-arm-latest-large` runner, Node reports `win32/arm64` there and the action throws `TypeError: Unsupported platform: win32/arm64`, failing the Bundle Release (Windows arm64) job after the build, signing, and installer steps had all succeeded. Upstream has not fixed this: `main` still lacks the mapping and v2.0.0 is the newest tag, so bumping the action does not help. getsentry/sentry-cli does publish `sentry-cli-Windows-aarch64.exe`, so install the CLI directly on Windows instead. The new script resolves the asset from `RUNNER_ARCH`, puts the binary on `GITHUB_PATH`, and forwards the `SENTRY_*` variables to later steps, which is all the action did. The other platforms keep using the action, where it works fine. Co-Authored-By: Warp <[email protected]>
|
I'm starting a first review of this pull request. You can view the conversation on Warp. I completed the review and no human review was requested for this pull request. Comment Powered by Oz |
There was a problem hiding this comment.
Overview
This PR replaces matbour/setup-sentry-cli only for the Windows release job with a small PowerShell installer that selects the official Sentry CLI Windows asset from RUNNER_ARCH, adds it to PATH, and forwards the Sentry environment values needed by the existing upload script.
Concerns
No blocking correctness, security, testing, comment-quality, or spec-alignment concerns found. The added comments explain the third-party action compatibility workaround rather than narrating the implementation, and the PR is not user-visible so screenshots/videos are not required.
Verdict
Found: 0 critical, 0 important, 0 suggestions
Approve
Comment /oz-review on this pull request to retrigger a review (up to 3 times on the same pull request).
Powered by Oz
script/lint_powershell checks script/windows against Windows PowerShell 5.1, and `Invoke-WebRequest` only grew -MaximumRetryCount and -RetryIntervalSec in PowerShell 6.1, so PSUseCompatibleCommands flagged both and failed the lint. Lowering the analyzer's target profiles was the other option, but .PSScriptAnalyzerSettings.psd1 is shared with app/assets/bundled/bootstrap, whose scripts genuinely run under Windows PowerShell 5.1 (pwsh_init_shell.ps1 branches on `$PSEdition -eq 'Desktop'`, and pwsh.ps1 special-cases `PSVersion.Major -le 5`). Dropping 5.1 would weaken compatibility checking on shipped shell integration to paper over two lines of CI-only code, so retry by hand instead. Co-Authored-By: Warp <[email protected]>
Replaces the hand-rolled install script with a pinned reference to
warpdotdev/setup-sentry-cli, a fork of matbour/setup-sentry-cli carrying
the one-line platform mapping upstream is missing:
'win32-arm64': 'Windows-aarch64',
That fix is submitted upstream as matbour/setup-sentry-cli#24. Pointing
at the fork keeps this call site configured exactly like the other eight,
so reverting is a one-line change to the `uses:` reference once upstream
releases the fix, rather than deleting a bespoke script.
Only the Windows call site moves to the fork. The other platforms work
fine on upstream, and leaving them there keeps currently-healthy release
legs off a fork they do not need.
Co-Authored-By: Warp <[email protected]>
Description
The
Bundle Release (Windows arm64)job fails at the Set up Sentry CLI step:(failing job)
Root cause.
matbour/setup-sentry-clipicks a sentry-cli asset from a hardcoded table with nowin32-arm64entry, and its only fallback covers darwin:This started with #27746, which moved the Windows arm64 release legs from
windows-latest-largeonto the nativewindows-arm-latest-largerunner. Previously the action ran on an x64 host cross-compiling to arm64, so Node reportedwin32/x64and it worked. Now it reportswin32/arm64.Everything before this step — build, Azure Trusted Signing, Inno Setup bundling — succeeds. The job only dies setting up the Sentry CLI, which then skips the symbol upload, the GitHub release asset upload, and the GCS upload.
Fix. sentry-cli does publish
sentry-cli-Windows-aarch64.exe, so only the action's mapping is stale. Rather than working around it locally, the mapping is fixed at the source and we consume it via a fork until upstream ships it:'win32-arm64': 'Windows-aarch64', mirroring the existinglinux-arm64→Linux-aarch64entry.mainplus exactly that commit. This lives inwarpdotdevalongside our other action dependencies (oz-agent-action,generate-changelog,repo-sync) rather than a personal account.This PR just repoints the Windows call site at the fork, pinned by SHA per repo convention:
Scope. Only the Windows call site moves. The other 8 (macOS, Linux, web) work fine on upstream, and leaving them there keeps currently-healthy release legs off a fork they don't need.
Reverting. Once matbour/setup-sentry-cli#24 lands and is released, this is a one-line change back to
matbour/setup-sentry-cli@<new-sha>. There's aTEMPORARY:comment at the call site pointing at the upstream PR.Linked Issue
N/A — CI/release-pipeline regression, no tracking issue.
ready-to-specorready-to-implement.Testing
Windows-runner-only CI change, so it can't be exercised via
./script/run. Verified as follows:sentry-cli-Windows-aarch64.exereturns 200 from the Sentry CDN, andfilereportsPE32+ executable (console) Aarch64, for MS Windows(11.7 MB).action.ymlat80a37adrunsdist/main.js, and that bundle contains all three Windows entries:dist/is committed in that repo — a source-only change would have been inert.dist/rebuilds byte-for-byte from unmodified upstreammainbefore applying the change, so the fork's bundle diff is purely the mapping entry and not build-environment drift.pnpm lintandpnpm typecheckpass there../script/lint_powershell -ciexits 0.Full end-to-end confirmation needs a
devrelease run on the arm64 runner, since the step is gated onshould_publish == 'true'.Screenshots / Videos
N/A — no user-visible surface.
Agent Mode
Warp conversation