diff --git a/.github/workflows/docker-build.yml b/.github/workflows/docker-build.yml index a7a14cbe..522e56f9 100644 --- a/.github/workflows/docker-build.yml +++ b/.github/workflows/docker-build.yml @@ -19,33 +19,49 @@ permissions: contents: write jobs: - # ==================== AMD64 构建 ==================== - build-amd64: + build: runs-on: ubuntu-latest strategy: matrix: include: - image: xingrin-server dockerfile: docker/server/Dockerfile + context: . + platforms: linux/amd64,linux/arm64 - image: xingrin-frontend dockerfile: docker/frontend/Dockerfile + context: . + platforms: linux/amd64 # ARM64 构建时 Next.js 在 QEMU 下会崩溃 - image: xingrin-worker dockerfile: docker/worker/Dockerfile + context: . + platforms: linux/amd64,linux/arm64 - image: xingrin-nginx dockerfile: docker/nginx/Dockerfile + context: . + platforms: linux/amd64,linux/arm64 - image: xingrin-agent dockerfile: docker/agent/Dockerfile + context: . + platforms: linux/amd64,linux/arm64 steps: - name: Checkout uses: actions/checkout@v4 - - name: Free disk space + - name: Free disk space (for large builds like worker) run: | - sudo rm -rf /usr/share/dotnet /usr/local/lib/android /opt/ghc /opt/hostedtoolcache/CodeQL + echo "=== Before cleanup ===" + df -h + sudo rm -rf /usr/share/dotnet + sudo rm -rf /usr/local/lib/android + sudo rm -rf /opt/ghc + sudo rm -rf /opt/hostedtoolcache/CodeQL sudo docker image prune -af + echo "=== After cleanup ===" + df -h - - name: Generate SSL certificates for nginx + - name: Generate SSL certificates for nginx build if: matrix.image == 'xingrin-nginx' run: | mkdir -p docker/nginx/ssl @@ -53,26 +69,9 @@ jobs: -keyout docker/nginx/ssl/privkey.pem \ -out docker/nginx/ssl/fullchain.pem \ -subj "/CN=localhost" + echo "SSL certificates generated for CI build" - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 - - - name: Login to Docker Hub - uses: docker/login-action@v3 - with: - username: ${{ secrets.DOCKERHUB_USERNAME }} - password: ${{ secrets.DOCKERHUB_TOKEN }} - - - name: Get version - id: version - run: | - if [[ $GITHUB_REF == refs/tags/* ]]; then - echo "VERSION=${GITHUB_REF#refs/tags/}" >> $GITHUB_OUTPUT - else - echo "VERSION=dev-$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT - fi - - - name: Build and push (AMD64) + - name: Set up QEMU uses: docker/setup-qemu-action@v3 - name: Set up Docker Buildx @@ -113,7 +112,7 @@ jobs: # 所有镜像构建成功后,更新 VERSION 文件 update-version: runs-on: ubuntu-latest - needs: build # 等待所有 build job 完成 + needs: build if: startsWith(github.ref, 'refs/tags/v') steps: - name: Checkout