first commit
This commit is contained in:
@@ -0,0 +1,68 @@
|
||||
# Расширения: git-репы на первый bootstrap
|
||||
|
||||
Срабатывает вместе с первым диском и первым инстансом, **до** первого старта SwarmUI (C# extensions компилируются при запуске). Повторный `up` на уже засеянный диск только догоняет новые строки манифеста (идемпотентный `git fetch`).
|
||||
|
||||
Два разных мира — не путать:
|
||||
|
||||
| Вид | Куда клонировать | Что это |
|
||||
| --- | --- | --- |
|
||||
| `swarmui` | `/mnt/swarm_data/Extensions/<dir>` → `/opt/swarmui/src/Extensions/<dir>` | C# extension SwarmUI (класс `: Extension`). После рестарта подхватывается сам |
|
||||
| `comfy` | `/mnt/swarm_data/DLNodes/<dir>` → `…/ComfyUIBackend/DLNodes/<dir>` | Custom nodes ComfyUI (Python). `requirements.txt` ставит SwarmUI/Comfy при первом старте backend |
|
||||
|
||||
Пустой манифест или его нет — ничего не клонируем, SwarmUI как из коробки. Это не связано с Civitai-токеном.
|
||||
|
||||
## Манифест
|
||||
|
||||
Пример: [`extensions.example.yaml`](../extensions.example.yaml). Рабочая копия: `~/.gpu-rent/extensions.yaml` (или `EXTENSIONS_MANIFEST`).
|
||||
|
||||
```yaml
|
||||
swarmui:
|
||||
- url: https://github.com/example/SwarmUI-SomeExt.git
|
||||
ref: main # ветка, тег или commit SHA; по умолчанию HEAD default branch
|
||||
dir: SomeExt # имя папки; по умолчанию последний сегмент URL без .git
|
||||
comfy:
|
||||
- url: https://github.com/example/ComfyUI-Something.git
|
||||
ref: v1.2.0
|
||||
```
|
||||
|
||||
В git репозитория gpu-rent не коммитить рабочий список с приватными URL. В примере — вымышленные репы.
|
||||
|
||||
## Когда в жизненном цикле
|
||||
|
||||
Idle-killer ещё не вооружён. Git нужен на VM (`apt` в bootstrap, если нет в образе).
|
||||
|
||||
1. Маркер FS data volume.
|
||||
2. **Clone extensions** (этот документ). Маркер `/mnt/swarm_data/.gpu-rent-extensions-seeded` после успешного прохода всех строк.
|
||||
3. Civitai-seed моделей ([models.md](models.md)), если есть токен.
|
||||
4. Первый `systemctl start swarmui`: видит `src/Extensions`, собирает их; ComfyUI ставит pip из DLNodes.
|
||||
5. Backend Idle → idle-killer.
|
||||
|
||||
Порядок 2→3 важен: расширения до старта UI, модели тоже до старта (чтобы не качать дефолт SwarmUI).
|
||||
|
||||
Позже: `gpu-rent seed-extensions` — те же clone/fetch на живом диске, затем **рестарт** SwarmUI (иначе новый C# extension не подхватится). CLI предупреждает и делает `systemctl restart swarmui`, если VM жива.
|
||||
|
||||
## Clone на VM
|
||||
|
||||
- `git clone --recurse-submodules`.
|
||||
- Если `ref` — ветка/тег: `--depth 1` + `checkout`.
|
||||
- Если `ref` похож на SHA: fetch этого commit (shallow может не хватить).
|
||||
- Каталог уже есть и `remote origin` совпадает с `url` → `fetch` + `checkout ref`, не `rm -rf`.
|
||||
- Каталог есть, origin другой → fail этой строки, не молча перезаписывать.
|
||||
|
||||
Публичный HTTPS без секретов. Приватный репозиторий:
|
||||
|
||||
- `GIT_TOKEN` в `.env` (GitHub: `x-access-token`; GitLab: `oauth2` / PAT). CLI подставляет в URL **только на VM**, не пишет токен в yaml и не в cloud-init.
|
||||
- Либо отдельный deploy key `~/.gpu-rent/git_deploy` — v1.1, не обязательно сейчас.
|
||||
|
||||
Не использовать `git://`. Только `https://` и `git@` + ключ.
|
||||
|
||||
## Сбой
|
||||
|
||||
Одна строка упала (404, auth, сеть) — остальные можно продолжить; `up` в конце ненулевой, маркер seeded не ставить, повтор доклонирует. Не оставлять полупустой `.git`.
|
||||
|
||||
## Конфиг
|
||||
|
||||
```env
|
||||
EXTENSIONS_MANIFEST= # пусто = ~/.gpu-rent/extensions.yaml
|
||||
GIT_TOKEN= # опционально, для приватных https
|
||||
```
|
||||
Reference in New Issue
Block a user