• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

archetech / archon / 33420533220
87%

Build:
DEFAULT BRANCH: main
Ran 31 Aug 2026 05:41PM UTC
Jobs 1
Files 92
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

31 Aug 2026 05:36PM UTC coverage: 92.487%. Remained the same
33420533220

push

github

web-flow
perf(docker): Serve client apps statically, and prune dev deps from the runtime (#990)

* perf(docker): Serve the client apps from a static server, not vite preview

Four images ran `npm run preview` as their production server. Vite
documents that command as "do not use this as a production server as it's
not designed for it", and needing it at runtime forced the entire dev
dependency tree into the image -- 1.2-1.3GB to serve a directory of
static files.

scripts/serve-static.mjs replaces it: plain node:http, no dependencies,
so the runtime stage needs no node_modules at all. It resolves paths
against the served root and rejects anything that escapes it, falls back
to index.html only for extension-less paths so a missing bundle 404s
rather than arriving as HTML, sets long immutable caching for Vite's
fingerprinted /assets and no-cache for the shell, and sends nosniff.

Each client image becomes two stages, keeping the build unchanged and
copying only the built output into a clean runtime:

  gatekeeper-client  1.26GB -> 239MB
  react-wallet        ~1.3GB -> 239MB
  keymaster-client    ~1.3GB -> 236MB
  herald-client       ~1.2GB -> 232MB

herald-client builds to `build` rather than `dist` (vite.config.ts sets
outDir), so its copy differs; the mismatch failed the build rather than
shipping an empty directory.

drawbridge is included as the first of the node-runtime images: the same
two-stage split plus `npm prune --omit=dev` in the builder, 1.13GB ->
629MB. A prune in a later layer would reclaim nothing, since layers are
additive, and the root cannot be pruned before the service build because
mediators like satoshi have no local typescript and resolve tsc from the
hoisted root.

Refs #987

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GYGMfX3foBcVqP7AQNXjWj

* docs: Make the new comments describe the code, not the change

The header of serve-static.mjs recounted what the client images used to
run... (continued)

3881 of 4464 branches covered (86.94%)

Branch coverage included in aggregate %.

8528 of 8953 relevant lines covered (95.25%)

717.56 hits per line

Jobs
ID Job ID Ran Files Coverage
1 33420533220.1 31 Aug 2026 05:41PM UTC 184
93.57
GitHub Action Run
Source Files on build 33420533220
  • Tree
  • List 92
  • Changed 78
  • Source Changed 0
  • Coverage Changed 78
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • Github Actions Build #33420533220
  • 0bdd9a99 on github
  • Prev Build on main (#33392385137)
  • Next Build on main (#33427826543)
  • Delete
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc