diff --git a/.github/workflows/docker-ghcr.yml b/.github/workflows/docker-ghcr.yml index fc1808e..0b33a7b 100644 --- a/.github/workflows/docker-ghcr.yml +++ b/.github/workflows/docker-ghcr.yml @@ -17,6 +17,31 @@ jobs: - name: Checkout repository uses: actions/checkout@v4 + - name: 设置Go环境 + uses: actions/setup-go@v5 + with: + go-version-file: "src/go.mod" + cache-dependency-path: "src/go.sum" + + - name: 安装 UPX + uses: crazy-max/ghaction-upx@v3 + with: + install-only: true + + - name: 编译二进制文件 + run: | + cd src + + # Linux AMD64 + CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags="-s -w" -o ../build/hubproxy/hubproxy-linux-amd64 . + + # Linux ARM64 + CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build -ldflags="-s -w" -o ../build/hubproxy/hubproxy-linux-arm64 . + + # 压缩二进制文件 + upx -9 ../build/hubproxy/hubproxy-linux-amd64 + upx -9 ../build/hubproxy/hubproxy-linux-arm64 + - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 2a953ce..73931ec 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -23,7 +23,8 @@ jobs: - name: 设置Go环境 uses: actions/setup-go@v5 with: - go-version: '1.25' + go-version-file: "src/go.mod" + cache-dependency-path: "src/go.sum" - name: 获取版本号 id: version diff --git a/Dockerfile b/Dockerfile index 879e47b..419da9d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,21 +1,13 @@ -FROM golang:1.25-alpine AS builder - -ARG TARGETARCH - -WORKDIR /app -COPY src/go.mod src/go.sum ./ -RUN go mod download && apk add upx - -COPY src/ . - -RUN CGO_ENABLED=0 GOOS=linux GOARCH=${TARGETARCH} go build -ldflags="-s -w" -trimpath -o hubproxy . \ - && upx -9 hubproxy - FROM alpine WORKDIR /root/ -COPY --from=builder /app/hubproxy . -COPY --from=builder /app/config.toml . +ENV BINARY_NAME=hubproxy + +ARG TARGETOS +ARG TARGETARCH + +COPY src/config.toml . +COPY build/hubproxy/${BINARY_NAME}-${TARGETOS}-${TARGETARCH} ${BINARY_NAME} CMD ["./hubproxy"] \ No newline at end of file