Skip to content

Fix Windows arm64 release: use forked setup-sentry-cli with win32/arm64 mapping - #15491

Merged
advait-m merged 3 commits into
masterfrom
advait/fix-sentry-cli-windows-arm64
Aug 24, 2026
Merged

Fix Windows arm64 release: use forked setup-sentry-cli with win32/arm64 mapping#15491
advait-m merged 3 commits into
masterfrom
advait/fix-sentry-cli-windows-arm64

Conversation

@advait-m

@advait-m advait-m commented Aug 24, 2026

Copy link
Copy Markdown
Member

Description

The Bundle Release (Windows arm64) job fails at the Set up Sentry CLI step:

Installing sentry-cli version latest
Error: TypeError: Unsupported platform: win32/arm64

(failing job)

Root cause. matbour/setup-sentry-cli picks a sentry-cli asset from a hardcoded table with no win32-arm64 entry, and its only fallback covers darwin:

const PLATFORM_MAPPINGS: Record<string, string> = {
  ...
  'win32-x32': 'Windows-i686',
  'win32-x64': 'Windows-x86_64',   // no 'win32-arm64'
};
...
throw new TypeError(`Unsupported platform: ${process.platform}/${process.arch}`);

This started with #27746, which moved the Windows arm64 release legs from windows-latest-large onto the native windows-arm-latest-large runner. Previously the action ran on an x64 host cross-compiling to arm64, so Node reported win32/x64 and it worked. Now it reports win32/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:

  • Upstream PR: fix(arch): add support for Windows arm64 matbour/setup-sentry-cli#24 — adds 'win32-arm64': 'Windows-aarch64', mirroring the existing linux-arm64Linux-aarch64 entry.
  • Fork: warpdotdev/setup-sentry-cli, which is upstream main plus exactly that commit. This lives in warpdotdev alongside 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:

uses: warpdotdev/setup-sentry-cli@80a37ad0848719ac9d0390ee4197fd070af6718e # v2.0.0 + win32/arm64

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 a TEMPORARY: comment at the call site pointing at the upstream PR.

Linked Issue

N/A — CI/release-pipeline regression, no tracking issue.

  • The linked issue is labeled ready-to-spec or ready-to-implement.
  • Where appropriate, screenshots or a short video of the implementation are included below (especially for user-visible or UI changes).

Testing

Windows-runner-only CI change, so it can't be exercised via ./script/run. Verified as follows:

  • The asset exists and is the right architecture. sentry-cli-Windows-aarch64.exe returns 200 from the Sentry CDN, and file reports PE32+ executable (console) Aarch64, for MS Windows (11.7 MB).
  • The pinned SHA actually carries the fix. action.yml at 80a37ad runs dist/main.js, and that bundle contains all three Windows entries:
    "win32-x32": "Windows-i686"
    "win32-x64": "Windows-x86_64"
    "win32-arm64": "Windows-aarch64"
    
    This matters because dist/ is committed in that repo — a source-only change would have been inert.
  • The fork's bundle is trustworthy. I confirmed dist/ rebuilds byte-for-byte from unmodified upstream main before applying the change, so the fork's bundle diff is purely the mapping entry and not build-environment drift. pnpm lint and pnpm typecheck pass there.
  • Static checks here. Workflow YAML parses and the rewritten step resolves as expected; ./script/lint_powershell -ci exits 0.

Full end-to-end confirmation needs a dev release run on the arm64 runner, since the step is gated on should_publish == 'true'.

Screenshots / Videos

N/A — no user-visible surface.

Agent Mode

  • Warp Agent Mode - This PR was created via Warp's AI Agent Mode

Warp 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]>
@cla-bot cla-bot Bot added the cla-signed label Aug 24, 2026
@advait-m
advait-m marked this pull request as ready for review August 24, 2026 14:06
@warp-for-oss

warp-for-oss Bot commented Aug 24, 2026

Copy link
Copy Markdown
Contributor

@advait-m

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 /oz-review on this pull request to retrigger a review (up to 3 times on the same pull request).

Powered by Oz

@warp-for-oss warp-for-oss 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.

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]>
@advait-m
advait-m enabled auto-merge (squash) August 24, 2026 14:30
@advait-m
advait-m disabled auto-merge August 24, 2026 14:31
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]>
@advait-m advait-m changed the title Fix Windows arm64 release: install sentry-cli without matbour action Fix Windows arm64 release: use forked setup-sentry-cli with win32/arm64 mapping Aug 24, 2026
@advait-m
advait-m enabled auto-merge (squash) August 24, 2026 14:41
@advait-m
advait-m merged commit 378b74f into master Aug 24, 2026
47 of 49 checks passed
@advait-m
advait-m deleted the advait/fix-sentry-cli-windows-arm64 branch August 24, 2026 15:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants