MapToPoster / docs /huggingface_deployment.md
isaachwf's picture
Sync from GitHub via hub-sync
008947a verified
|
Raw History Blame Contribute Delete
3.99 kB
# Hugging Face 部署与维护 / Deployment and operations
## 中文
### 部署结构
- GitHub 仓库 `IsaacHuo/maptoposter` 的 `main` 是唯一源码来源。
- `.github/workflows/publish-hugging-face.yml` 先运行 Python、前端和 Docker 检查。
- 所有检查通过后,官方 `huggingface/hub-sync` Action 将文件镜像到 `isaachwf/MapToPoster`。
- Hugging Face 根据 README 元数据以 Docker SDK 构建,并暴露容器的 7860 端口。
`hub-sync` 是文件镜像而不是 Git 强推。它会同步删除 GitHub 已移除的文件,同时排除 `.git/` 和 `.github/`,因此两个仓库不需要共享 Git 历史。
### 首次配置凭据
1. 打开 <https://huggingface.co/settings/tokens>。
2. 创建一个单独的 fine-grained Token,只授予 `isaachwf/MapToPoster` 写权限。
3. 打开 GitHub 仓库的 **Settings → Secrets and variables → Actions**。
4. 新建 Repository Secret,名称必须是 `HF_TOKEN`,值为刚创建的 Token。
5. 不要把 Token 写入代码、`.env`、提交记录、Issue 或聊天消息。
Token 只用于 GitHub Actions 发布。删除或轮换 Token 后,应立即更新同名 GitHub Secret。
### 发布
正常发布只需要将已验证的提交推送到 GitHub `main`:
```bash
git push origin main
```
工作流的 `validate` job 失败时,`publish` job 不会运行,线上 Space 保持原版本。工作流也支持在 GitHub Actions 页面手动运行。
### 环境和存储
容器默认使用:
```text
MAPTOPOSTER_CACHE_DIR=/data/cache
MAPTOPOSTER_OUTPUT_DIR=/data/posters
MPLCONFIGDIR=/tmp/matplotlib
```
CPU Basic 的磁盘是临时磁盘。Factory reboot、重新部署或平台重启可能清除 `/data`。当前应用只把可重新生成的 OSM/地理编码缓存放在那里,因此无需数据迁移。
### 验证
发布完成后检查:
1. Space 设置仍显示 `cpu-basic`,运行阶段为 `RUNNING`,SDK 为 Docker。
2. `GET https://isaachwf-maptoposter.hf.space/api/v1/health` 返回 `status: ok`。
3. 首页加载 React 编辑器,样式缩略图和交互地图正常。
4. 搜索“北京”,用小范围视口完成地图准备和预览。
5. 分别下载 PNG、SVG 和 PDF,确认文件非空且 Content-Type 正确。
### 回滚
GitHub `main` 是源码真相,不直接修改 Space 仓库进行长期修复。
1. 使用 `git revert <bad-commit>` 创建回滚提交,不重写 `main` 历史。
2. 在本地运行完整检查。
3. 将回滚提交推送到 `main`,等待自动镜像完成。
如果 Space 构建失败,旧容器通常仍会保留或显示构建错误。不要删除或重新创建 Space;先从构建日志修复 Docker 问题,再推送修复提交。
## English
### Deployment model
GitHub `IsaacHuo/maptoposter` `main` is the single source of truth. The publish workflow validates Python, the frontend, and the Linux container before the official `huggingface/hub-sync` Action mirrors repository files to `isaachwf/MapToPoster`. Hugging Face then builds the Docker Space and exposes port 7860.
The sync action mirrors files rather than force-pushing Git history. It propagates deletions and excludes `.git/` and `.github/`, so the GitHub repository and Space can retain independent histories.
### One-time credentials
Create a fine-grained token at <https://huggingface.co/settings/tokens> with write access limited to `isaachwf/MapToPoster`. Save it as a GitHub Actions repository secret named `HF_TOKEN`. Never store the token in source files, environment files, commits, issues, or chat messages.
### Release and rollback
A push to GitHub `main` starts validation and publishes only after every check succeeds. To roll back, revert the faulty GitHub commit and push the revert to `main`; do not rewrite `main` or maintain a manual fork of the Space source.
Free CPU Basic storage is ephemeral. `/data/cache` and `/data/posters` contain only reproducible runtime files and may be cleared during rebuilds or restarts.