mirror of
https://github.com/Studio-Saelix/sencho.git
synced 2026-09-04 14:45:41 +00:00
fix(docker): replace QEMU npm execution with tonistiigi/xx cross-compilation (#78)
Node.js v20 uses ARMv8.1 LSE atomic instructions that the GitHub Actions QEMU version does not support, causing SIGILL / "Illegal instruction" core dumps when npm ci runs inside the arm64 emulated layer. Solution: add a dedicated prod-deps build stage that runs on $BUILDPLATFORM (amd64, native) and uses tonistiigi/xx + xx-clang to cross-compile native modules (bcrypt, better-sqlite3, node-pty) for the TARGET architecture without ever executing Node.js under QEMU. The final runtime stage simply copies the pre-compiled node_modules from prod-deps. Stage breakdown: xx - cross-compilation helper (provides xx-clang, xx-apk) frontend-builder - $BUILDPLATFORM, vite build (no native modules) backend-builder - $BUILDPLATFORM, tsc compilation prod-deps - $BUILDPLATFORM + xx-clang cross-compiles for $TARGET final - TARGET platform, no compilation at all
This commit is contained in:
+1
-1
@@ -11,7 +11,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
||||
|
||||
### Fixed
|
||||
- fix(ci): add missing `docker/setup-qemu-action@v3` step to `docker-publish.yml` — without it multi-platform builds hang indefinitely and consume all available runner minutes
|
||||
- fix(docker): optimize Dockerfile for multi-platform builds using `--platform=$BUILDPLATFORM` on builder stages so TypeScript compilation runs at native amd64 speed; native modules (bcrypt, better-sqlite3, node-pty) are compiled for the target architecture only in the lean production stage via `npm ci --omit=dev`, reducing arm64 QEMU-emulated work from 6+ hours to ~15–30 minutes
|
||||
- fix(docker): eliminate QEMU execution of Node.js entirely using `tonistiigi/xx` cross-compilation; a dedicated `prod-deps` stage runs on the amd64 BUILD platform and compiles native modules (bcrypt, better-sqlite3, node-pty) for the TARGET architecture via `xx-clang` — fixes the `SIGILL` crash caused by Node.js v20 using ARMv8.1 LSE atomic instructions that the GitHub Actions QEMU version does not support
|
||||
|
||||
### Added
|
||||
- feat(ui): theme-aware sidebar logo — dark and light variants auto-switch based on active theme (dark/light/auto)
|
||||
|
||||
Reference in New Issue
Block a user