Repository navigation
build(deb): ship production deps only to keep the package under GitHub's 100 MB limit - #8442
Conversation
…b's 100 MB limit The staging step copied the whole workspace node_modules into the .deb, so it shipped every devDependency plus the admin/ui/doc dependency trees. The 3.3.14 amd64 package hit 101 MiB and apt-publish was rejected by GitHub's 100 MiB file limit. Move staging into packaging/stage.sh and install a fresh `pnpm install --prod --frozen-lockfile` for root, src and bin. The build-only importers are dropped from the staged lockfile, since pnpm otherwise installs their deps too. Also drop src/tests and the playwright/vitest configs. amd64 goes from 101 MiB to 46 MiB. Add a CI step that fails the build if a .deb is over 95 MiB. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TcYAoEw35xr1qP19ipr25W
|
ⓘ Qodo reviews are paused because the subscription is no longer active. Ask your workspace admin to reactivate the subscription to resume reviews. Manage billing |
PR Summary by QodoKeep Debian packages below GitHub’s file-size limit
AI Description
Diagram
High-Level Assessment
Files changed (4)
|
Code Review by Qodo🐞 Bugs (0) 📘 Rule violations (0) 📎 Requirement gaps (0)
Great, no issues found!Qodo reviewed your code and found no material issues that require reviewTip of the day💡 Did you know, you can commit Qodo's fix in one click with committable suggestions (GitHub & GitLab) |
The v3.3.14 apt-publish job failed because GitHub rejected
etherpad_3.3.14-1_amd64.deb(101 MiB) for being over its 100 MiB file limit. The staging step copied the whole workspacenode_modulesinto the package, so every devDependency went in with it.The staging step now lives in
packaging/stage.shand does a freshpnpm install --prod --frozen-lockfilefor root, src and bin. pnpm installs deps for every importer in the lockfile, even when its directory is missing, so the script removes the admin/doc/ui/openapi-codegen importers from the staged lockfile first. Overrides and build policy are unchanged, so the frozen install still matches.Size (amd64, built locally from develop):
Dropped: devDependencies (typescript 6/7, playwright, vitest, eslint, vite/rolldown, vitepress, jsdom for tests, @types/*), the admin/ui/doc dependency trees (react, radix, tanstack, solid, ...), plus
src/tests,src/playwright.config.tsandsrc/vitest.config.ts. The built admin UI insrc/templates/adminis still shipped. The shippedpnpm-workspace.yamlis the same as before, and no lockfile is shipped, also as before.I also added a "Check package size" step that fails the build if any .deb is over 95 MiB.
Tested locally: I extracted the new .deb and booted it through
/usr/bin/etherpadwith sqlite./health,/, a pad page and its bundled JS/CSS,/admin/and its assets, the API (createPad/getText), and txt/html/pdf/docx export all returned 200.bin/plugins.ts i ep_aligninstalled intosrc/plugin_packages, and after a restart the plugin loaded and showed up in the pad bundle. The dpkg/systemd/postinst/plugin_packages smoke test runs in this workflow.After merge, publishing to the apt repo needs a new tag (3.3.15). The
releaseandapt-publishjobs only run whengithub.refis av*tag. Aworkflow_dispatchfrom develop skips them, and re-running or dispatching onv3.3.14uses the old workflow from that tag.🤖 Generated with Claude Code
https://claude.ai/code/session_01TcYAoEw35xr1qP19ipr25W