fix(docker): build the web bundle on the runner architecture

QEMU arm64 hangs inside Vite and the publish job is cancelled at 60 minutes. The bundle is plain JavaScript, so the build stage uses the runner platform and only the Bun runtime image stays per architecture.
This commit is contained in:
tianma-if committed 2026-10-25 13:14:29 +08:00
1 parent 644ed04d62
commit 91498c475f
2 files changed
+5 -1

No files matched your search

+4 -1
View File
@@ -1,5 +1,8 @@
# syntax=docker/dockerfile:1.7 # syntax=docker/dockerfile:1.7
FROM oven/bun:1.3.14-alpine AS manifests # The web bundle and self-hosted server are plain JavaScript. Build them on the
# runner's own architecture. QEMU arm64 hangs in Vite until the publish job hits
# its timeout. The runtime image below still follows the target architecture.
FROM --platform=$BUILDPLATFORM oven/bun:1.3.14-alpine AS manifests
WORKDIR /app WORKDIR /app
COPY package.json bun.lock bunfig.toml ./ COPY package.json bun.lock bunfig.toml ./
+1
View File
@@ -58,6 +58,7 @@ describe("Docker release contract", () => {
dockerfile.indexOf("FROM oven/bun:1.3.14-alpine AS runtime"), dockerfile.indexOf("FROM oven/bun:1.3.14-alpine AS runtime"),
); );
const packageMetadata = JSON.parse(readProjectFile("package.json")); const packageMetadata = JSON.parse(readProjectFile("package.json"));
expect(dockerfile).toContain("FROM --platform=$BUILDPLATFORM oven/bun:1.3.14-alpine AS manifests");
expect(dockerfile).toContain("FROM oven/bun:1.3.14-alpine AS runtime"); expect(dockerfile).toContain("FROM oven/bun:1.3.14-alpine AS runtime");
expect(dockerfile).toContain("COPY patches patches"); expect(dockerfile).toContain("COPY patches patches");
expect(dockerfile).toContain("COPY docs docs"); expect(dockerfile).toContain("COPY docs docs");