Hub documentation
Gérer les Spaces avec GitHub Actions
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-syncfonctionne également pour les Models et les Datasets. Consultez GitHub Actions pour un usage général.
Configuration
- Créez un secret GitHub nommé
HF_TOKENavec un jeton d'accès Hugging Face. - 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 mainRemplacez HF_USERNAME par votre nom d'utilisateur et SPACE_NAME par le nom de votre Space.