From 03c33449db33a9822c84be18719319a5b879190b Mon Sep 17 00:00:00 2001 From: WJQSERVER Date: Thu, 10 Oct 2024 07:56:42 +0800 Subject: [PATCH] 1.4.2 --- .github/workflows/build.yml | 25 ++++++++++---------- docker/dockerfile/release/Dockerfile | 34 ++++++++++++++++++++++++---- 2 files changed, 43 insertions(+), 16 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 527e502..0c44e0f 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -11,9 +11,12 @@ on: jobs: build: runs-on: ubuntu-latest + strategy: + matrix: + goos: [linux] + goarch: [amd64, arm64] env: - OUTPUT_BINARY: ghproxy - OUTPUT_ARCHIVE: ghproxy.tar.gz + OUTPUT_BINARY: go GO_VERSION: 1.23.2 steps: @@ -31,35 +34,33 @@ jobs: go-version: ${{ env.GO_VERSION }} - name: Build run: | - CGO_ENABLED=0 go build -o ${{ env.OUTPUT_BINARY }} ./main.go + CGO_ENABLED=0 go build -o ${{ env.OUTPUT_BINARY }}-${{matrix.goos}}-${{matrix.goarch}} ./main.go - name: Package run: | - tar -czvf ${{ env.OUTPUT_ARCHIVE }} ./${{ env.OUTPUT_BINARY }} + tar -czvf ${{ env.OUTPUT_BINARY }}-${{matrix.goos}}-${{matrix.goarch}}.tar.gz ./${{ env.OUTPUT_BINARY }}-${{matrix.goos}}-${{matrix.goarch}} - name: Upload to GitHub Artifacts uses: actions/upload-artifact@v3 with: name: ${{ env.OUTPUT_BINARY }} path: | - ./${{ env.OUTPUT_ARCHIVE }} - ./${{ env.OUTPUT_BINARY }} + ./${{ env.OUTPUT_BINARY }}* - name: 上传至Release id: create_release uses: ncipollo/release-action@v1 with: name: ${{ env.VERSION }} - artifacts: ./${{ env.OUTPUT_ARCHIVE }}, ./${{ env.OUTPUT_BINARY }} + artifacts: ./${{ env.OUTPUT_BINARY }}* token: ${{ secrets.GITHUB_TOKEN }} tag: ${{ env.VERSION }} allowUpdates: true env: export PATH: $PATH:/usr/local/go/bin - docker: runs-on: ubuntu-latest needs: build # 确保这个作业在 build 作业完成后运行 env: IMAGE_NAME: wjqserver/ghproxy # 定义镜像名称变量 - DOCKERFILE: docker/dockerfile/release/Dockerfile + DOCKERFILE: docker/dockerfile/release/Dockerfile # 定义 Dockerfile 路径变量 steps: - name: Checkout @@ -70,7 +71,7 @@ jobs: echo "VERSION=$(cat VERSION)" >> $GITHUB_ENV else echo "VERSION file not found!" && exit 1 - fi + fi - name: Set up QEMU uses: docker/setup-qemu-action@v3 @@ -85,10 +86,10 @@ jobs: password: ${{ secrets.DOCKERHUB_TOKEN }} - name: 构建镜像 - uses: docker/build-push-action@v5 + uses: docker/build-push-action@v6 with: file: ./${{ env.DOCKERFILE }} - platforms: linux/amd64 + platforms: linux/amd64,linux/arm64 push: true tags: | ${{ env.IMAGE_NAME }}:${{ env.VERSION }} diff --git a/docker/dockerfile/release/Dockerfile b/docker/dockerfile/release/Dockerfile index 6f7d5a0..5247449 100644 --- a/docker/dockerfile/release/Dockerfile +++ b/docker/dockerfile/release/Dockerfile @@ -1,21 +1,47 @@ -FROM wjqserver/caddy:alpine +FROM wjqserver/caddy:2.9.0-rc-alpine AS builder ARG USER=WJQSERVER-STUDIO ARG REPO=ghproxy ARG APPLICATION=ghproxy +ARG TARGETOS +ARG TARGETARCH +ARG TARGETPLATFORM +# 创建文件夹 RUN mkdir -p /data/www RUN mkdir -p /data/${APPLICATION}/config RUN mkdir -p /data/${APPLICATION}/log + +# 安装依赖 +RUN apk add --no-cache curl wget + +# 前端 RUN wget -O /data/www/index.html https://raw.githubusercontent.com/${USER}/${REPO}/main/pages/index.html RUN wget -O /data/www/favicon.ico https://raw.githubusercontent.com/${USER}/${REPO}/main/pages/favicon.ico -RUN wget -O /data/caddy/Caddyfile https://raw.githubusercontent.com/${USER}/${REPO}/main/caddyfile/release/Caddyfile + +# 后端 RUN VERSION=$(curl -s https://raw.githubusercontent.com/${USER}/${REPO}/main/VERSION) && \ - wget -O /data/${APPLICATION}/${APPLICATION} https://github.com/${USER}/${REPO}/releases/download/$VERSION/${APPLICATION} + wget -O /data/${APPLICATION}/${APPLICATION} https://github.com/${USER}/${REPO}/releases/download/$VERSION/${APPLICATION}-${TARGETOS}-${TARGETARCH} +RUN wget -O /usr/local/bin/init.sh https://raw.githubusercontent.com/${USER}/${REPO}/main/docker/dockerfile/release/init.sh + +# 拉取配置 +RUN wget -O /data/caddy/Caddyfile https://raw.githubusercontent.com/${USER}/${REPO}/main/caddyfile/release/Caddyfile RUN wget -O /data/${APPLICATION}/config.yaml https://raw.githubusercontent.com/${USER}/${REPO}/main/config/config.yaml RUN wget -O /data/${APPLICATION}/blacklist.json https://raw.githubusercontent.com/${USER}/${REPO}/main/config/blacklist.json RUN wget -O /data/${APPLICATION}/whitelist.json https://raw.githubusercontent.com/${USER}/${REPO}/main/config/whitelist.json -RUN wget -O /usr/local/bin/init.sh https://raw.githubusercontent.com/${USER}/${REPO}/main/docker/dockerfile/release/init.sh + +# 权限 +RUN chmod +x /data/${APPLICATION}/${APPLICATION} +RUN chmod +x /usr/local/bin/init.sh + +FROM wjqserver/caddy:2.9.0-rc-alpine + +COPY --from=builder /data/www /data/www +COPY --from=builder /data/caddy /data/caddy +COPY --from=builder /data/${APPLICATION} /data/${APPLICATION} +COPY --from=builder /usr/local/bin/init.sh /usr/local/bin/init.sh + +# 权限 RUN chmod +x /data/${APPLICATION}/${APPLICATION} RUN chmod +x /usr/local/bin/init.sh