name: Sync to Hugging Face Spaces on: push: branches: [main] workflow_dispatch: jobs: sync-to-hub: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 with: fetch-depth: 0 lfs: true - name: Push to Hugging Face Space env: HF_TOKEN: ${{ secrets.HF_TOKEN }} HF_USERNAME: ${{ secrets.HF_USERNAME }} SPACE_NAME: ${{ secrets.HF_SPACE_NAME }} run: | git config --global user.email "bot@github.com" git config --global user.name "GitHub Actions Bot" if [ -z "$HF_TOKEN" ] || [ -z "$HF_USERNAME" ] || [ -z "$SPACE_NAME" ]; then echo "Error: Missing required secrets" echo "Please set HF_TOKEN, HF_USERNAME, and HF_SPACE_NAME in repository secrets" exit 1 fi git remote add space https://$HF_USERNAME:$HF_TOKEN@huggingface.co/spaces/$HF_USERNAME/$SPACE_NAME || true # Create a temporary orphan branch to squash history # This avoids pushing historical binary blobs that HF rejects git checkout --orphan sync-branch git lfs install git add -A git commit -m "Sync: $(date)" # Push to Hugging Face git push --force space sync-branch:main - name: Verify deployment env: HF_USERNAME: ${{ secrets.HF_USERNAME }} SPACE_NAME: ${{ secrets.HF_SPACE_NAME }} run: | echo "Deployment completed!" echo "Check your Space at: https://huggingface.co/spaces/$HF_USERNAME/$SPACE_NAME" echo "API endpoint: https://$HF_USERNAME-$SPACE_NAME.hf.space"