Hub documentation

Gerenciando Spaces com GitHub Actions

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

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-sync também funciona para Models e Datasets. Consulte GitHub Actions para o uso geral.

Configuração

  1. Crie um segredo do GitHub chamado HF_TOKEN com um token de acesso do Hugging Face.
  2. 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 main

Substitua HF_USERNAME pelo seu nome de usuário e SPACE_NAME pelo nome do seu Space.

Update on GitHub