Hub documentation
Gerenciando Spaces com GitHub Actions
Gerenciando Spaces com GitHub Actions
Você pode manter seu Space sincronizado com seu repositório no GitHub usando a Action oficial do GitHub huggingface/hub-sync.
hub-synctambém funciona para Models e Datasets. Consulte GitHub Actions para o uso geral.
Configuração
- Crie um segredo do GitHub chamado
HF_TOKENcom um token de acesso do Hugging Face. - Adicione um arquivo de workflow (por exemplo,
.github/workflows/sync-to-hub.yml) ao seu repositório:
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 }}Você pode configurar o Space SDK com space_sdk (padrão é gradio). Veja todos os parâmetros.
Como funciona
A ação espelha seus arquivos no Hub usando o CLI hf (hf repos create + hf upload). Não é uma sincronização git-to-git — ela faz o upload do conteúdo dos arquivos e exclui automaticamente os diretórios .github/ e .git/. Arquivos removidos do seu repositório GitHub também serão removidos do Hub.
Para fluxos de trabalho mais complexos (por exemplo, etapas de compilação, lógica personalizada), você pode instalar e usar o hf CLI diretamente no seu fluxo de trabalho.
Considerações sobre o tamanho do arquivo
A ação faz o upload do conteúdo dos arquivos com hf upload, então você não precisa configurar Git LFS ou git-xet para o Hub: arquivos grandes são armazenados no Xet automaticamente. Se o seu repositório GitHub armazena arquivos com Git LFS (o GitHub exige isso para arquivos com mais de 100MB), defina lfs: true na etapa actions/checkout para que a ação faça o upload dos arquivos em vez de ponteiros LFS.
Alternativa: git push manual
Se você preferir uma sincronização direta de git para git em vez de espelhamento de arquivos, você pode fazer push diretamente para o remote git do seu Space. Com um git push, arquivos maiores que 10MB devem ser rastreados com git-xet (recomendado) 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 mainSubstitua HF_USERNAME pelo seu nome de usuário e SPACE_NAME pelo nome do seu Space.