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

zwave-js / zwave-js-ui / 26517614546
19%

Build:
DEFAULT BRANCH: master
Ran 27 May 2026 02:30PM UTC
Jobs 1
Files 70
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

27 May 2026 02:29PM UTC coverage: 18.557%. Remained the same
26517614546

push

github

web-flow
refactor(build): improve Docker layer and GHA cache reuse (#4648)

## Why

Docker layers were not structured or cached in a way that allowed reuse
across builds. Previously unchanged layers were being re-built and
re-pulled unnecessarily:

- \`node_modules\`, \`dist\`, \`dev-dist\`, and \`server\` were not in
\`.dockerignore\`, so the build context included ~1 GB of
generated/installed content — none of which Docker could use, but all of
which had to be uploaded on every build.
- JS/TS build artifacts (\`dist/\`, \`server/\`) were rebuilt on every
target platform (\`amd64\`, \`arm64\`, \`arm/v7\`, \`arm/v6\`) even
though they are fully platform-agnostic — only native addons like
\`@serialport/bindings-cpp\` need per-platform compilation. Running Vite
and \`tsc\` under QEMU on \`arm64\`/\`arm/v7\` was also significantly
slower than a native \`amd64\` build.
- All \`COPY\` instructions were in a single layer, so any source change
invalidated the \`npm ci\` layer even when \`package.json\` hadn't
changed.
- CI workflows ran \`npm ci\` and \`npm run build\` before invoking
Docker, but Docker couldn't use those artifacts and rebuilt everything
anyway — making the pre-build steps wasted work that also broke layer
caching.
- Both \`zwave-js-ui\` and \`zwavejs2mqtt\` used the same GHA cache
scope, so the \`zwavejs2mqtt\` build silently evicted the
\`zwave-js-ui\` cache entry, forcing a full re-pull on the next run.
- \`apk\`/\`apt-get\` packages were re-downloaded on every layer
rebuild, with no protection against concurrent writes during
multi-platform builds.
- \`COPY --from=build-zui\` in the runtime stage was coupled to the base
image layer, so a base image security patch forced the built app layer
to be re-pulled even though the app itself hadn't changed.

## What

- **\`.dockerignore\`**: exclude \`node_modules\`, \`dist\`,
\`dev-dist\`, and \`server\` to shrink build context from ~1 GB to ~20
MB.
- **Dockerfiles** (\`alpine\` + \`debian\`): add \`#
syn... (continued)

339 of 455 branches covered (74.51%)

Branch coverage included in aggregate %.

1 of 1 new or added line in 1 file covered. (100.0%)

4142 of 23692 relevant lines covered (17.48%)

1.12 hits per line

Jobs
ID Job ID Ran Files Coverage
1 26517614546.1 27 May 2026 02:30PM UTC 70
18.56
GitHub Action Run
Source Files on build 26517614546
  • Tree
  • List 70
  • Changed 0
  • Source Changed 0
  • Coverage Changed 0
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • de9acf1d on github
  • Prev Build on master (#26517551850)
  • Next Build on master (#26517714592)
  • Delete
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc