| name: Mirror to Hugging Face | |
| on: | |
| push: | |
| branches: [main] | |
| workflow_dispatch: | |
| concurrency: | |
| group: hf-mirror-${{ github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| mirror: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout (full history + LFS) | |
| uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 | |
| lfs: true | |
| - name: Configure git identity | |
| run: | | |
| git config user.name "github-actions[bot]" | |
| git config user.email "github-actions[bot]@users.noreply.github.com" | |
| - name: Ensure LFS objects are present | |
| run: | | |
| git lfs install | |
| # Fetch any missing LFS content referenced by HEAD | |
| git lfs fetch --all || true | |
| git lfs checkout || true | |
| echo "LFS files present:" && git lfs ls-files || true | |
| - name: Track image assets via LFS (mirror-only) and rewrite history | |
| run: | | |
| # Hugging Face requires binary assets (jpg/png) to be stored via LFS. | |
| # We rewrite history locally on the runner so GitHub history remains intact, | |
| # but the mirror on HF receives LFS pointers. | |
| git lfs track "*.jpg" "*.jpeg" "*.png" | |
| git add .gitattributes || true | |
| git commit -m "ci(hf): track images via LFS (mirror-only)" || true | |
| # Rewrite history for all refs so no plain binaries remain in the mirror | |
| git lfs migrate import --everything --yes --include="*.jpg,*.jpeg,*.png,*.webp,*.gif,*.bmp,*.tif,*.tiff" | |
| - name: Inject HF metadata (mirror-only) | |
| run: | | |
| cat > README.hf.md << 'EOF' | |
| --- | |
| library_name: comfyui | |
| repo_type: model | |
| license: agpl-3.0 | |
| pretty_name: MagicNodes (CADE 2.5, QSilk) | |
| pipeline_tag: text-to-image | |
| tags: | |
| - comfyui | |
| - stable-diffusion | |
| - sdxl | |
| - pipeline | |
| - magicnodes | |
| - zeresfdg | |
| - qsilk | |
| - depth-anything | |
| - render | |
| homepage: https://github.com/1dZb1/MagicNodes | |
| --- | |
| EOF | |
| printf "\n" >> README.hf.md | |
| cat README.md >> README.hf.md | |
| mv README.hf.md README.md | |
| git add README.md || true | |
| git commit -m "ci(hf): inject HF metadata" || true | |
| - name: Push to HF mirror | |
| env: | |
| HF_USERNAME: ${{ secrets.HF_USERNAME }} | |
| HF_TOKEN: ${{ secrets.HF_TOKEN }} | |
| HF_REPO: MagicNodes | |
| run: | | |
| if [ -z "${HF_USERNAME}" ] || [ -z "${HF_TOKEN}" ]; then | |
| echo "HF secrets are missing. Set HF_USERNAME and HF_TOKEN in repo secrets." >&2 | |
| exit 1 | |
| fi | |
| git lfs install || true | |
| git remote add hf "https://${HF_USERNAME}:${HF_TOKEN}@huggingface.co/${HF_USERNAME}/${HF_REPO}.git" 2>/dev/null || true | |
| # Mirror current branch to HF main | |
| git push --force --prune hf HEAD:main | |