From 62b3cb6b7024e3d54d808d80d75035d77ad192e3 Mon Sep 17 00:00:00 2001 From: eryajf Date: Mon, 29 Sep 2025 09:51:23 +0800 Subject: [PATCH 1/3] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=20UPX=20?= =?UTF-8?q?=E5=8E=8B=E7=BC=A9=E4=BA=8C=E8=BF=9B=E5=88=B6=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/release.yml | 9 +++++++++ Dockerfile | 5 +++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index e90aa8d..2a953ce 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -53,6 +53,11 @@ jobs: run: | mkdir -p build/hubproxy + - name: 安装 UPX + uses: crazy-max/ghaction-upx@v3 + with: + install-only: true + - name: 编译二进制文件 run: | cd src @@ -63,6 +68,10 @@ jobs: # 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: 复制配置文件 run: | # 复制配置文件 diff --git a/Dockerfile b/Dockerfile index ae7da99..879e47b 100644 --- a/Dockerfile +++ b/Dockerfile @@ -4,11 +4,12 @@ ARG TARGETARCH WORKDIR /app COPY src/go.mod src/go.sum ./ -RUN go mod download +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 . +RUN CGO_ENABLED=0 GOOS=linux GOARCH=${TARGETARCH} go build -ldflags="-s -w" -trimpath -o hubproxy . \ + && upx -9 hubproxy FROM alpine From 780ac14a8fa8e909b6b9ff3fb29aac4e872129a1 Mon Sep 17 00:00:00 2001 From: eryajf Date: Mon, 29 Sep 2025 10:11:02 +0800 Subject: [PATCH 2/3] =?UTF-8?q?feat:=20=E4=BC=98=E5=8C=96=E6=9E=84?= =?UTF-8?q?=E5=BB=BA=E6=B5=81=E7=A8=8B=EF=BC=8C=E4=BD=BF=E7=94=A8=E9=A2=84?= =?UTF-8?q?=E7=BC=96=E8=AF=91=E4=BA=8C=E8=BF=9B=E5=88=B6=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/docker-ghcr.yml | 25 +++++++++++++++++++++++++ .github/workflows/release.yml | 3 ++- Dockerfile | 22 +++++++--------------- 3 files changed, 34 insertions(+), 16 deletions(-) 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 From 198a18508b12e06f572678be7d029dde65d43138 Mon Sep 17 00:00:00 2001 From: eryajf Date: Mon, 29 Sep 2025 14:18:40 +0800 Subject: [PATCH 3/3] =?UTF-8?q?refactor:=20=E9=87=8D=E6=9E=84=20Docker=20?= =?UTF-8?q?=E6=9E=84=E5=BB=BA=E6=B5=81=E7=A8=8B=EF=BC=8C=E4=BD=BF=E7=94=A8?= =?UTF-8?q?=E5=A4=9A=E9=98=B6=E6=AE=B5=E6=9E=84=E5=BB=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/docker-ghcr.yml | 25 ------------------------- Dockerfile | 21 ++++++++++++++------- 2 files changed, 14 insertions(+), 32 deletions(-) diff --git a/.github/workflows/docker-ghcr.yml b/.github/workflows/docker-ghcr.yml index 0b33a7b..fc1808e 100644 --- a/.github/workflows/docker-ghcr.yml +++ b/.github/workflows/docker-ghcr.yml @@ -17,31 +17,6 @@ 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/Dockerfile b/Dockerfile index 419da9d..e4f248e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,13 +1,20 @@ +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/ -ENV BINARY_NAME=hubproxy - -ARG TARGETOS -ARG TARGETARCH - -COPY src/config.toml . -COPY build/hubproxy/${BINARY_NAME}-${TARGETOS}-${TARGETARCH} ${BINARY_NAME} +COPY --from=builder /app/hubproxy . +COPY --from=builder /app/config.toml . CMD ["./hubproxy"] \ No newline at end of file