name: Build and Push Docker Image to Docker Hub on: push: branches: - main pull_request: branches: - main if: github.repository == 'huangxd-/danmu_api' jobs: build: runs-on: ubuntu-latest steps: # 检出代码 - name: Checkout code uses: actions/checkout@v3 # 从 danmu_api/configs/globals.js 中读取版本号 - name: Read version from globals.js id: version run: | VERSION=$(grep "VERSION:" danmu_api/configs/globals.js | sed -E "s/.*VERSION: '(.*)'.*/\1/") echo "VERSION=$VERSION" >> $GITHUB_ENV # 根据分支设置版本号后缀 - name: Set version suffix run: | if [ "${{ github.ref }}" != "refs/heads/main" ]; then echo "VERSION_TAG=${{ env.VERSION }}-test" >> $GITHUB_ENV else echo "VERSION_TAG=${{ env.VERSION }}" >> $GITHUB_ENV fi # ✅ 先登录,再初始化 Buildx,避免拉取 BuildKit 镜像时触发匿名限速 - name: Login to Docker Hub uses: docker/login-action@v3 with: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} # 登录后手动拉取,绕过匿名限速 - name: Pull BuildKit image run: docker pull moby/buildkit:buildx-stable-1 - name: Set up QEMU uses: docker/setup-qemu-action@v3 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Build and Push Docker image run: | if [ "${{ github.ref }}" = "refs/heads/main" ]; then docker buildx build --platform linux/amd64,linux/arm64 \ -t ${{ secrets.DOCKER_USERNAME }}/danmu-api:${{ env.VERSION_TAG }} \ -t ${{ secrets.DOCKER_USERNAME }}/danmu-api:latest \ --push . else docker buildx build --platform linux/amd64,linux/arm64 \ -t ${{ secrets.DOCKER_USERNAME }}/danmu-api:${{ env.VERSION_TAG }} \ --push . fi