ci(deploy): 镜像发布 - 原生多架构构建并复用提交镜像与缓存

This commit is contained in:
ddCat
2026-09-20 09:35:23 +08:00
parent 609ab70203
commit 8e64dc6d82
9 changed files with 352 additions and 80 deletions

View File

@@ -2,18 +2,17 @@
FROM --platform=$BUILDPLATFORM golang:1.25-alpine AS payment-package-build
ARG TARGETOS
ARG TARGETARCH
ARG GOPROXY=https://proxy.golang.org,direct
ENV GOPROXY=$GOPROXY
RUN apk add --no-cache nodejs unzip zip
WORKDIR /src
COPY backend/go.mod backend/go.sum ./backend/
RUN --mount=type=cache,target=/go/pkg/mod cd backend && go mod download
# 插件只下载实际依赖,不为四个小程序预取整个业务后端的模块图。
COPY backend ./backend
COPY plugin-packages ./plugin-packages
ARG TARGETOS
ARG TARGETARCH
RUN --mount=type=cache,target=/root/.cache/go-build set -eu; \
test -n "$TARGETOS"; \
test -n "$TARGETARCH"; \
@@ -35,18 +34,19 @@ RUN PAYMENT_PLUGIN_SMOKE_TEST=1 \
FROM golang:1.25-alpine AS backend-build
ARG GOPROXY=https://proxy.golang.org,direct
ARG BUILD_VERSION
ARG BUILD_COMMIT=unknown
ARG BUILD_TIME=unknown
ENV GOPROXY=$GOPROXY
RUN apk add --no-cache build-base
WORKDIR /src/backend
COPY VERSION /src/VERSION
COPY backend/go.mod backend/go.sum ./
RUN --mount=type=cache,target=/go/pkg/mod go mod download
# 模块保留在普通镜像层中,供后续编译及跨 Runner 的 GHA 层缓存复用。
RUN go mod download
COPY backend ./
COPY VERSION /src/VERSION
ARG BUILD_VERSION
ARG BUILD_COMMIT=unknown
ARG BUILD_TIME=unknown
RUN --mount=type=cache,target=/root/.cache/go-build set -eu; \
version="${BUILD_VERSION:-$(tr -d '\r\n' </src/VERSION)}"; \
ldflags="-s -w -X infinite-canvas/backend/internal/buildinfo.Version=${version} -X infinite-canvas/backend/internal/buildinfo.Commit=${BUILD_COMMIT} -X infinite-canvas/backend/internal/buildinfo.BuildTime=${BUILD_TIME}"; \