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

archetech / archon / 31708173324
95%

Build:
DEFAULT BRANCH: main
Ran 13 Aug 2026 02:07PM UTC
Jobs 1
Files 88
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

13 Aug 2026 02:03PM UTC coverage: 94.157% (+0.008%) from 94.149%
31708173324

push

github

web-flow
ci: Make native-module installs resilient to prebuild fetch failures (#879)

* ci: Make native-module installs resilient to prebuild fetch failures

Docker image builds have been failing across the matrix with:

    npm error prebuild-install warn install socket hang up
    ERROR: failed to solve: process "/bin/sh -c npm ci" did not
    complete successfully

prebuild-install fetches prebuilt native binaries from GitHub release
assets with a single request and no retry (see its download.js), so one
transient connection reset fails `npm ci`. The source-build fallback that
sqlite3 and @ipshipyard/node-datachannel both declare cannot rescue it,
because the node:*-slim base images have no Python or C++ toolchain --
the builds die on `gyp ERR! find Python`.

Nothing cached the result either: the image builds had no layer cache and
no workflow used npm caching, so a single push fired ~30 identical
anonymous downloads of the same two tarballs from one runner IP.

Two layers of defence:

1. Layer cache. Add cache-from/cache-to type=gha to docker-build.yml,
   scoped per image so the matrix legs don't evict each other. This needs
   setup-buildx-action, as the default docker driver cannot export cache.
   mode=min is enough since every Dockerfile here is single-stage. Most
   PRs don't touch the root lockfile, so their `npm ci` layer becomes a
   cache hit and never reaches the network at all.

2. Vendored prebuilds, for the PRs that do change the root lockfile.
   scripts/prefetch-prebuilds.mjs resolves versions from
   package-lock.json, reconstructs prebuild-install's URL template and
   downloads x64 + arm64 with retries. prebuild-install checks a local
   prebuilds directory before both its cache and the network, so the
   Dockerfiles copy that directory in and point at it via env var.

The prefetch is deliberately best-effort: on failure it warns and the
build falls back to fetching at npm-ci time, so an accelerator can never
itself break a build. The ta... (continued)

3616 of 4070 branches covered (88.85%)

Branch coverage included in aggregate %.

8245 of 8527 relevant lines covered (96.69%)

685.96 hits per line

Jobs
ID Job ID Ran Files Coverage
1 31708173324.1 13 Aug 2026 02:07PM UTC 176
95.17
GitHub Action Run
Source Files on build 31708173324
  • Tree
  • List 88
  • Changed 74
  • Source Changed 0
  • Coverage Changed 74
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • Github Actions Build #31708173324
  • cab53a30 on github
  • Prev Build on main (#31706436572)
  • Next Build on main (#31712460295)
  • 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