name: Deploy to Hugging Face Spaces on: push: branches: [main] jobs: deploy: name: Push source to Hugging Face Spaces runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 with: fetch-depth: 0 - name: Configure git run: | git config user.email "adivid198986@gmail.com" git config user.name "aditya-rAj19" - name: Push to Hugging Face Spaces env: HF_TOKEN: ${{ secrets.HF_TOKEN }} HF_USER: aditya-rAj19 HF_SPACE: FaceSWAP run: | if [ -z "$HF_TOKEN" ]; then echo "::error::HF_TOKEN secret is empty or not set." echo "Add it at: GitHub repo -> Settings -> Secrets and variables -> Actions -> New repository secret" echo "Name: HF_TOKEN Value: a Hugging Face token with WRITE access (huggingface.co -> Settings -> Access Tokens)" exit 1 fi # Token-in-URL auth. Force-push the repo to the Space. git remote remove hf 2>/dev/null || true git remote add hf "https://${HF_USER}:${HF_TOKEN}@huggingface.co/spaces/${HF_USER}/${HF_SPACE}" echo "Pushing to https://huggingface.co/spaces/${HF_USER}/${HF_SPACE} ..." # HF can transiently reject a push while the Space is still building # from a previous push — retry a few times before failing. n=0 until git push hf HEAD:main --force; do n=$((n+1)) if [ "$n" -ge 4 ]; then echo "::error::Push to Hugging Face failed after $n attempts." exit 1 fi echo "Push attempt $n failed - retrying in 15s..." sleep 15 done echo "Pushed to Hugging Face Spaces successfully."