Hub documentation

Управление Spaces с помощью GitHub Actions

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Управление Spaces с помощью GitHub Actions

Вы можете синхронизировать ваш Space с репозиторием GitHub с помощью официального GitHub Action huggingface/hub-sync.

hub-sync также работает с моделями и наборами данных. См. GitHub Actions для общей информации по использованию.

Настройка

  1. Создайте секрет GitHub с именем HF_TOKEN и значением — токен доступа Hugging Face.
  2. Добавьте файл рабочего процесса (например, .github/workflows/sync-to-hub.yml) в ваш репозиторий:
name: Sync to Hugging Face Hub
on:
  push:
    branches: [main]

jobs:
  sync:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v6
      - uses: huggingface/[email protected]
        with:
          github_repo_id: ${{ github.repository }}
          huggingface_repo_id: username/my-space
          hf_token: ${{ secrets.HF_TOKEN }}

Вы можете настроить Space SDK с помощью space_sdk (по умолчанию gradio). См. все параметры.

Как это работает

Действие зеркалит ваши файлы на Hub с помощью CLI hf (hf repos create + hf upload). Это не синхронизация git-to-git — загружаются содержимое файлов, а каталоги .github/ и .git/ автоматически исключаются. Файлы, удалённые из вашего репозитория GitHub, также будут удалены с Hub.

Для более сложных рабочих процессов (например, шаги сборки, пользовательская логика) вы можете установить и использовать CLI hf непосредственно в вашем рабочем процессе.

Учет размера файла

Действие загружает содержимое файлов с помощью hf upload, поэтому вам не нужно настраивать Git LFS или git-xet для Hub: большие файлы автоматически хранятся в Xet. Если ваш репозиторий GitHub хранит файлы с помощью Git LFS (GitHub требует этого для файлов размером более 100 МБ), установите lfs: true на шаге actions/checkout, чтобы действие загружало сами файлы, а не указатели LFS.

Альтернатива: ручной git push

Если вы предпочитаете прямую синхронизацию git-to-git вместо зеркалирования файлов, вы можете выполнять push непосредственно в git-удалённый репозиторий вашего Space. При выполнении git push файлы размером более 10 МБ должны отслеживаться с помощью git-xet (рекомендуется) или Git LFS:

name: Sync to Hugging Face hub
on:
  push:
    branches: [main]
  workflow_dispatch:

jobs:
  sync-to-hub:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
        with:
          fetch-depth: 0
          lfs: true
      - name: Push to hub
        env:
          HF_TOKEN: ${{ secrets.HF_TOKEN }}
        run: git push https://HF_USERNAME:[email protected]/spaces/HF_USERNAME/SPACE_NAME main

Замените HF_USERNAME на ваше имя пользователя, а SPACE_NAME — на имя вашего Space.

Update on GitHub