feat(release): add deb packaging pipeline#1655
feat(release): add deb packaging pipeline#1655YougLin-dev wants to merge 2 commits intopingdotgg:mainfrom
Conversation
|
Important Review skippedAuto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Repository UI Review profile: CHILL Plan: Pro Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 2 potential issues.
Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
| "release/*.dmg" \ | ||
| "release/*.zip" \ | ||
| "release/*.AppImage" \ | ||
| "release/*.deb" \ |
There was a problem hiding this comment.
Duplicate artifact name causes Linux build upload conflict
High Severity
The two new Linux matrix entries (Linux x64 AppImage and Linux x64 deb) both have platform: linux and arch: x64, so the artifact upload name desktop-${{ matrix.platform }}-${{ matrix.arch }} resolves to desktop-linux-x64 for both jobs. With actions/upload-artifact@v7, uploading a second artifact with the same name in the same workflow run results in a 409 Conflict error. The artifact name template needs to incorporate matrix.target to differentiate the two Linux builds.
Additional Locations (1)
| if (nodeGypShim) { | ||
| buildEnv.PATH = [nodeGypShim.shimDir, buildEnv.PATH] | ||
| .filter(Boolean) | ||
| .join(process.platform === "win32" ? ";" : ":"); |
There was a problem hiding this comment.
Windows PATH key casing causes broken environment variable
Medium Severity
On Windows, spreading process.env into a plain object loses case-insensitivity — the path key is stored as Path, not PATH. Reading buildEnv.PATH returns undefined, so the assignment creates a new PATH key containing only nodeGypShim.shimDir, while Path (with the real system path) remains untouched. The resulting env object has both Path and PATH, leading to unpredictable behavior: the child process may lose the system path entirely, preventing bun and other tools from being found.


What Changed
.debpackaging to the desktop release flow..debartifacts alongside the existing desktop assets.bun run dist:desktop:deb.node-gyp.electron-builder/fpmfor.deboutput..debdownload option.Why
.debassets.node-ptyneeded to rebuild without a resolvablenode-gyp.UI Changes
.deb) on the/downloadpage..debwhen an AppImage asset is not available.Before:
After:
.deb.Screenshots:
/downloadpage showing the added.debcard.Video:
Checklist
Note
Medium Risk
Changes the CI release matrix and desktop artifact build/staging process, which could break production release builds or dependency installation (notably native modules) across platforms. Limited runtime impact for users, but packaging/metadata changes for Linux releases need verification.
Overview
Adds first-class Linux
.debpackaging to the desktop release workflow: CI now builds an additional Linuxdebtarget, collects/publishes*.debassets, and includes them in the GitHub Release upload set.Extends local tooling and build staging to support
.deboutput by addingdist:desktop:deb, injecting Debian metadata (homepage, Linuxmaintainer) into the stagedpackage.json, and hardening dependency installs via a generatednode-gypshim + cleaned env so staging no longer relies on a globally availablenode-gyp.Updates marketing download surfaces to expose the new
.deboption (new Linux download card on/download, and homepage Linux CTA falls back to.debif no AppImage), and refreshesdocs/release.mdto document the new artifact set and that Linux auto-update remains AppImage-only.Written by Cursor Bugbot for commit 8fbc65d. This will update automatically on new commits. Configure here.