Hub documentation
使用 GitHub Actions 管理 Spaces
使用 GitHub Actions 管理 Spaces
您可以使用官方的 huggingface/hub-sync GitHub Action 来保持您的 Space 与 GitHub 仓库同步。
hub-sync同样适用于模型和数据集。有关一般用法,请参阅 GitHub Actions。
设置
- 创建一个名为
HF_TOKEN的 GitHub secret,其中包含 Hugging Face 访问令牌。 - 在您的仓库中添加一个工作流文件(例如
.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/hub-sync@v0.3.0
with:
github_repo_id: ${{ github.repository }}
huggingface_repo_id: username/my-space
hf_token: ${{ secrets.HF_TOKEN }}您可以使用 space_sdk 配置 Space SDK(默认为 gradio)。请参阅 所有参数。
工作原理
该操作使用 hf CLI(hf repos create + hf upload)将您的文件镜像到 Hub。它并非 git 到 git 的同步——它上传文件内容,并自动排除 .github/ 和 .git/ 目录。从您的 GitHub 仓库中删除的文件也会从 Hub 中删除。
对于更复杂的工作流(例如构建步骤、自定义逻辑),您可以直接在您的工作流中安装并使用 hf CLI。
文件大小注意事项
该操作使用 hf upload 上传文件内容,因此您无需为 Hub 配置 Git LFS 或 git-xet:大文件会自动存储在 Xet 中。如果您的 GitHub 仓库使用 Git LFS 存储文件(GitHub 要求对超过 100MB 的文件使用 Git LFS),请在 actions/checkout 步骤中设置 lfs: true,以便该操作上传实际文件而非 LFS 指针。
替代方案:手动 git push
如果您更喜欢直接的 git-to-git 同步而非文件镜像,您可以直接推送到您的 Space 的 git 远程仓库。使用 git push 时,大于 10MB 的文件必须通过 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:$HF_TOKEN@huggingface.co/spaces/HF_USERNAME/SPACE_NAME main将 HF_USERNAME 替换为您的用户名,将 SPACE_NAME 替换为您的 Space 名称。