Spaces:
Running
Running
File size: 3,329 Bytes
2526f60 644ba85 2526f60 54bc653 2526f60 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 | # Hugging Face Space deploy
Целевая схема:
```text
Corporate GitLab repository
↓ GitLab CI
Private Hugging Face Docker Space
↓ CPU Basic / Free
HiveTrace Leaderboard
```
## Hugging Face Space
Space создается вручную один раз.
Рекомендуемые настройки:
- Visibility: `Private`
- SDK: `Docker`
- Hardware: `CPU Basic` / free
- App port: `5173`
В `README.md` проекта уже есть Space frontmatter:
```yaml
---
title: HiveTrace Leaderboard
emoji: 🛡️
colorFrom: green
colorTo: indigo
sdk: docker
app_port: 5173
pinned: true
---
```
## Runtime secrets and variables in Hugging Face
В Space Settings нужно добавить runtime secret:
```text
HF_TOKEN=hf_...
```
Этот токен нужен приложению для чтения приватного Hugging Face bucket. Его нельзя делать
`PUBLIC_*` переменной и нельзя коммитить в репозиторий.
Variables:
```text
HF_BUCKET_ID=hivetrace/leaderboard_frontend_v2
HF_BUCKET_PREFIX=latest
HF_BUCKET_CACHE_TTL_MS=300000
HF_BUCKET_REQUEST_TIMEOUT_MS=60000
HF_BUCKET_REQUEST_RETRIES=2
```
Опционально:
```text
HF_BUCKET_ENDPOINT=https://huggingface.co
```
## GitLab CI variables
В корпоративном GitLab нужно добавить CI/CD variables:
```text
HF_USERNAME=<huggingface-user-or-service-account-name>
HF_SPACE_TOKEN=<huggingface-write-token-for-space-repo>
HF_SPACE_REPO=<namespace>/<space-name>
```
Пример:
```text
HF_SPACE_REPO=hivetrace/guard-leaderboard
```
`HF_SPACE_TOKEN` должен иметь право записи в Space repository.
Важно: `HF_SPACE_TOKEN` и runtime `HF_TOKEN` для чтения bucket лучше держать разными
токенами.
`HF_SPACE_TOKEN` в GitLab лучше пометить как masked/protected variable.
## Deploy flow
`.gitlab-ci.yml` делает два этапа:
1. `validate`
- `pnpm install --frozen-lockfile`
- `pnpm check` (внутри генерирует Paraglide output)
- `pnpm build`
2. `deploy:huggingface`
- срабатывает только на ветке `prod`
- пушит текущий commit в private Hugging Face Space repository
- использует force push, потому что Hugging Face Space является deploy-репозиторием
- Space автоматически пересобирает Docker image после push
## Production branch
Продакшн-деплой запускается только из ветки `prod`.
Типовой flow:
```bash
git checkout prod
git merge main
git push origin prod
```
После push в `prod` GitLab CI выполнит validate-этап и затем отправит этот commit в
ветку `main` Hugging Face Space repository.
## Local Docker smoke test
Перед первым deploy желательно локально проверить Docker image:
```bash
docker build -t hivetrace-leaderboard .
docker run --rm -p 5173:5173 \
-e HF_TOKEN=hf_... \
-e HF_BUCKET_ID=hivetrace/leaderboard_frontend_v2 \
-e HF_BUCKET_PREFIX=latest \
hivetrace-leaderboard
```
После запуска открыть:
```text
http://127.0.0.1:5173/
```
|