Hub documentation

Gérer les Spaces avec GitHub Actions

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Gérer les Spaces avec GitHub Actions

Vous pouvez synchroniser votre Space avec votre dépôt GitHub à l'aide de l'Action GitHub officielle huggingface/hub-sync.

hub-sync fonctionne également pour les Models et les Datasets. Consultez GitHub Actions pour un usage général.

Configuration

  1. Créez un secret GitHub nommé HF_TOKEN avec un jeton d'accès Hugging Face.
  2. Ajoutez un fichier de workflow (par exemple .github/workflows/sync-to-hub.yml) à votre dépôt :
name: Sync to Hugging Face Hub
on:
  push:
    branches: [main]

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

Vous pouvez configurer le Space SDK avec space_sdk (par défaut gradio). Consultez tous les paramètres.

Fonctionnement

L’action réplique vos fichiers vers le Hub à l’aide du CLI hf (hf repos create + hf upload). Il ne s’agit pas d’une synchronisation git-vers-git : le contenu des fichiers est téléversé et les répertoires .github/ et .git/ sont automatiquement exclus. Les fichiers supprimés de votre dépôt GitHub seront également supprimés du Hub.

Pour des flux de travail plus complexes (par exemple, des étapes de compilation, une logique personnalisée), vous pouvez installer et utiliser directement le hf CLI dans votre flux de travail à la place.

Considérations relatives à la taille des fichiers

L’action téléverse le contenu des fichiers avec hf upload, il n’est donc pas nécessaire de configurer Git LFS ou git-xet pour le Hub : les fichiers volumineux sont stockés dans Xet automatiquement. Si votre dépôt GitHub stocke des fichiers avec Git LFS (GitHub l’exige pour les fichiers de plus de 100 Mo), définissez lfs: true sur l’étape actions/checkout afin que l’action téléverse les fichiers plutôt que des pointeurs LFS.

Alternative : git push manuel

Si vous préférez une synchronisation git-vers-git directe plutôt qu’un miroir de fichiers, vous pouvez pousser directement vers le distant git de votre Space. Avec un git push, les fichiers de plus de 10 Mo doivent être suivis avec git-xet (recommandé) ou 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:$HF_TOKEN@huggingface.co/spaces/HF_USERNAME/SPACE_NAME main

Remplacez HF_USERNAME par votre nom d'utilisateur et SPACE_NAME par le nom de votre Space.

Update on GitHub