name: Build and Publish Docker Image on: workflow_dispatch: jobs: generate-meta: runs-on: ubuntu-latest outputs: tag: ${{ steps.meta.outputs.tag }} steps: - name: Checkout Code uses: actions/checkout@v4 - name: Generate Tag id: meta run: | DATE=$(date +'%Y%m%d') COMMIT=$(git rev-parse --short=6 HEAD) echo "tag=${DATE}-${COMMIT}" >> $GITHUB_OUTPUT build-and-push: needs: generate-meta runs-on: ubuntu-latest strategy: matrix: include: - cuda_version: 12.4 lite: false tag_prefix: lite-cu124 - cuda_version: 12.4 lite: true tag_prefix: cu124 - cuda_version: 12.8 lite: false tag_prefix: lite-cu128 - cuda_version: 12.8 lite: true tag_prefix: cu128 steps: - name: Checkout Code uses: actions/checkout@v4 - name: Free up disk space run: | echo "Before cleanup:" df -h sudo rm -rf /opt/ghc sudo rm -rf /opt/hostedtoolcache/CodeQL sudo rm -rf /opt/hostedtoolcache/PyPy sudo rm -rf /opt/hostedtoolcache/go sudo rm -rf /opt/hostedtoolcache/node sudo rm -rf /opt/hostedtoolcache/Ruby sudo rm -rf /opt/microsoft sudo rm -rf /opt/pipx sudo rm -rf /opt/az sudo rm -rf /opt/google sudo rm -rf /usr/lib/jvm sudo rm -rf /usr/lib/google-cloud-sdk sudo rm -rf /usr/lib/dotnet sudo rm -rf /usr/local/lib/android sudo rm -rf /usr/local/.ghcup sudo rm -rf /usr/local/julia1.11.5 sudo rm -rf /usr/local/share/powershell sudo rm -rf /usr/local/share/chromium sudo rm -rf /usr/share/swift sudo rm -rf /usr/share/miniconda sudo rm -rf /usr/share/az_12.1.0 sudo rm -rf /usr/share/dotnet echo "After cleanup:" df -h - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Log in to Docker Hub uses: docker/login-action@v3 with: username: ${{ secrets.DOCKER_HUB_USERNAME }} password: ${{ secrets.DOCKER_HUB_PASSWORD }} - name: Build and Push Docker Image uses: docker/build-push-action@v5 with: context: . file: ./Dockerfile push: false platforms: linux/amd64,linux/arm64 build-args: | LITE=${{ matrix.lite }} CUDA_VERSION=${{ matrix.cuda_version }} WORKFLOW=true tags: | xxxxrt666/gpt-sovits:${{ matrix.tag_prefix }}-${{ needs.generate-meta.outputs.tag }} xxxxrt666/gpt-sovits:latest-${{ matrix.tag_prefix }} cache-from: type=gha # cache-to: type=gha,mode=max