ci(deploy): 镜像发布 - 原生多架构构建并复用提交镜像与缓存
This commit is contained in:
@@ -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}"; \
|
||||
|
||||
Reference in New Issue
Block a user