Go self-hosted 多架构构建辅助 action
使用 ARG TARGETOS 和 ARG TARGETARCH 对应 GOOS 和 GOARCH,动态复制编译结果
FROM alpine:latest
ARG TARGETOS
ARG TARGETARCH RUN apk update && \
apk upgrade --no-cache && \
apk add --no-cache tzdata && \
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \
echo 'Asia/Shanghai' >/etc/timezone && \
rm -rf /var/cache/apk/*
COPY /${TARGETOS}/${TARGETARCH}/runner /usr/bin/runner
RUN chmod +x /usr/bin/runner
WORKDIR /data
ENTRYPOINT [ "/usr/bin/runner" ]
- name: Get Docker Image Urlid: imageenv:
URL: example.docker.registry/repo/namerun: | echo LATEST=${URL}:latest >> $GITHUB_OUTPUT echo VERSION=${URL}:${GITHUB_REF/refs\/tags\//} >> $GITHUB_OUTPUT - name: Gen Go Commandsid: go_builduses: MultiMx/GoBuildxAction@v0.7with:
name: runnerargs: "-gcflags=-trimpath=$GOPATH -asmflags=-trimpath=$GOPATH -ldflags '-extldflags \"-static\"'"platform: linux/amd64,linux/arm64target: ./cmd/search
- name: Build Binaryenv:
CGO_ENABLED: 0run: ${{ steps.go_build.outputs.commands }}
- name: Build Docker Image and Pushid: docker_builduses: docker/build-push-action@v2with:
push: truecontext: .file: ./Dockerfileplatforms: linux/arm64,linux/amd64tags: ${{ steps.image.outputs.VERSION }},${{ steps.image.outputs.LATEST }}