Skip to content

feat(build): support dSYMs with IPA uploads - #1467

Open
jared-outpost[bot] wants to merge 5 commits into
mainfrom
issue-1428-ipa-dsym-upload
Open

feat(build): support dSYMs with IPA uploads#1467
jared-outpost[bot] wants to merge 5 commits into
mainfrom
issue-1428-ipa-dsym-upload

Conversation

@jared-outpost

@jared-outpost jared-outpost Bot commented Aug 25, 2026

Copy link
Copy Markdown
Contributor

Adds a repeatable --dsym flag to sentry build upload. IPAs often omit dSYMs after app thinning, so this embeds the specified dSYM bundles into the synthetic XCArchive built from an IPA — no client-side XCArchive construction needed. Ports getsentry/sentry-cli#3393.

Each --dsym value may be a .dSYM bundle, a directory of bundles, or a ZIP of either. dSYMs only apply to a single IPA upload; --dsym with a non-IPA build or with multiple builds is rejected.

Testing

vitest run test/lib/build test/commands/build (65 pass), tsc --noEmit, biome check.

Closes #1428

Add a repeatable --dsym flag to `build upload` that embeds dSYM bundles
into the synthetic XCArchive built from an IPA. IPAs often omit dSYMs
after app thinning, so this lets clients attach debug symbols without
constructing an XCArchive themselves.

Each --dsym value may be a .dSYM bundle, a directory of bundles, or a ZIP
of either. dSYMs only apply to a single IPA upload; using --dsym with a
non-IPA build or multiple builds is rejected.

Ports getsentry/sentry-cli#3393.

Fixes #1428
@vercel

vercel Bot commented Aug 25, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
cli Ready Ready Preview Aug 27, 2026 11:56am

Request Review

Comment thread packages/cli/src/lib/build/index.ts Outdated
@BYK
BYK requested a review from jamieQ August 25, 2026 08:33
@BYK
BYK marked this pull request as ready for review August 25, 2026 08:33
@github-actions github-actions Bot added the risk: high PR risk score: high label Aug 25, 2026
Comment thread packages/cli/src/lib/build/index.ts
Comment thread packages/cli/src/lib/build/index.ts
@MathurAditya724

Copy link
Copy Markdown
Member

Jared, resume this PR. Address every active finding: normalize trailing slashes on direct dSYM bundles, use the straightforward efficient collection path where appropriate, add regression coverage, then validate and re-request review.

@jamieQ jamieQ left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Overall seems like a pretty faithful port from what I can tell. I'm a bit concerned with possible memory consumption issues when processing the dSYMs which we can hopefully improve. Since we're modeling this logic off what (hopefully) will go into the sentry-cli implementation, let's hold off on merging this until that version is merged.

Comment thread packages/cli/src/lib/build/index.ts
Comment thread packages/cli/src/lib/build/index.ts Outdated
Comment thread packages/cli/src/lib/build/index.ts
Comment thread packages/cli/src/lib/build/index.ts
@BYK

BYK commented Aug 27, 2026

Copy link
Copy Markdown
Member

Jared, see my inline responses. Address all of them and ask for a re-review from Jamie

…ntee no symlinks from ZIPs

- Normalize both / and \ before the .. check; add resolve-based safeJoin guard.
- Post-extract scan rejects any symlink that somehow appears inside the temp dir (even though fflate never emits them).
- Addresses the two remaining JamieQ review comments on the ZIP extraction path.

@cursor cursor 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.

Cursor Bugbot has reviewed your changes and found 2 potential issues.

There are 3 total unresolved issues (including 1 from previous review).

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 2ec3f33. Configure here.

Comment thread packages/cli/src/lib/build/index.ts
Comment thread packages/cli/src/lib/build/index.ts Outdated
- Replace the hardcoded base+'/' containment check with relative()/isAbsolute()
  so the traversal guard works on Windows (resolve emits backslashes there).
- Parse the ZIP central directory for S_IFLNK external attributes and reject
  symlink entries before extraction — fflate's unzipSync drops attributes and
  would otherwise turn a symlink into a regular file holding the link target.
- Drop the post-extract readdir scan (it could never see ZIP symlinks).
- Add regression tests for a ZIP symlink entry and a ..\ traversal entry.
Comment thread packages/cli/src/lib/build/index.ts
Replaces the push loop for dsymEntries with a spread .map(), per BYK's
review comment.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

risk: high PR risk score: high

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Support dSYMs with IPA build uploads

3 participants