Compare commits
1
Commits
d194890315
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1d259feae6 |
@@ -14,40 +14,64 @@
|
||||
cargo install --path .
|
||||
```
|
||||
|
||||
Требуется Rust 1.88+. Кроссплатформенно: Windows (MSVC), Linux, macOS.
|
||||
Бинарник называется **`xd`**. Требуется Rust 1.88+. Кроссплатформенно:
|
||||
Windows (MSVC), Linux, macOS.
|
||||
|
||||
## Быстрый старт
|
||||
## Команды
|
||||
|
||||
```sh
|
||||
xboct-deploy --list # показать проекты из конфига
|
||||
xboct-deploy --list-servers # показать серверы из конфига
|
||||
xboct-deploy --pick # интерактивно выбрать проект (нечёткий поиск)
|
||||
xboct-deploy --dry-run demo # напечатать план деплоя без выполнения
|
||||
xboct-deploy demo # задеплоить проект demo
|
||||
xboct-deploy --this # задеплоить проект текущей папки (глобальный конфиг)
|
||||
xd list # показать проекты из конфига
|
||||
xd list-servers # показать серверы из конфига
|
||||
xd pick # интерактивно выбрать проект (нечёткий поиск)
|
||||
xd deploy my-node-app # задеплоить проект my-node-app
|
||||
xd deploy # задеплоить проект текущей папки (workdir == cwd)
|
||||
xd --dry-run deploy my-node-app # напечатать план деплоя без выполнения
|
||||
xd edit-config # открыть глобальный конфиг в $EDITOR
|
||||
xd # статус: какой проект соответствует текущей папке
|
||||
# (вне проекта — список проектов из конфига)
|
||||
```
|
||||
|
||||
Вывод:
|
||||
Глобальные флаги:
|
||||
|
||||
```txt
|
||||
deploying 'demo'
|
||||
-c, --config <PATH> явный путь к конфигу (работает и внутри подкоманд)
|
||||
-g, --global использовать только глобальный конфиг (конфликтует с -c)
|
||||
--dry-run печать плана без выполнения; НЕ глобальный — ставится
|
||||
до подкоманды: `xd --dry-run deploy name`
|
||||
```
|
||||
|
||||
`xd deploy` без имени ищет проект, чей `workdir` совпадает с текущей папкой,
|
||||
и падает с ошибкой, если такого нет. `xd pick` требует реальный терминал —
|
||||
в скриптах используйте `xd list`.
|
||||
|
||||
Вывод деплоя:
|
||||
|
||||
```txt
|
||||
[Git] on branch 'main' ✓
|
||||
deploying 'my-node-app'
|
||||
[Local] running: npm run build... Success! (1.2s)
|
||||
[SFTP] transferring dist to /var/www/pages... Done! (14 file(s), 231.5 KiB) (829ms)
|
||||
connecting...
|
||||
[SFTP] transferring dist to /var/www/pages/my-node-app... Done! (14 file(s), 231.5 KiB) (829ms)
|
||||
[Remote] running: pm2 restart pages... Success! (102ms)
|
||||
[LocalAfter] running: curl -s -X POST https://example.com/hook... Success! (45ms)
|
||||
Deploy successful! (total 2.3s)
|
||||
```
|
||||
|
||||
Строка `[Git]` появляется только при заданном `branch`, `connecting...` — перед
|
||||
первым SSH-шагом (sync/remote), `[LocalAfter]` — шаги `local_after`.
|
||||
|
||||
## Конфигурация
|
||||
|
||||
Файл ищется по цепочке:
|
||||
|
||||
1. `--config PATH`, если указан явно;
|
||||
1. `-c/--config PATH`, если указан явно (конфликтует с `-g`);
|
||||
2. `./deploy.toml` в текущей папке — удобно держать рядом с проектом и в тестах;
|
||||
3. глобальный `~/.config/xboct-deploy/deploy.toml` — запуск «из любой папки».
|
||||
|
||||
`--this` деплоит проект, чей `workdir` совпадает с текущей папкой; конфиг
|
||||
ищется по обычной цепочке, так что временный локальный `./deploy.toml`
|
||||
переопределяет глобальный — создали файл, задеплоились, удалили.
|
||||
Флаг `-g/--global` исключает шаг 2: используется только глобальный конфиг.
|
||||
Деплой проекта текущей папки (`xd deploy` без имени) ищет конфиг по этой же
|
||||
цепочке, так что временный локальный `./deploy.toml` переопределяет глобальный —
|
||||
создали файл, задеплоились, удалили.
|
||||
|
||||
Схема — **один проект = один блок**, все параметры точечными ключами:
|
||||
|
||||
@@ -161,6 +185,10 @@ export DB_URL=postgres://localhost/app
|
||||
## Разработка
|
||||
|
||||
```sh
|
||||
just test # fmt + clippy -D warnings + cargo test
|
||||
just run # деплой из test/deploy.toml (в git не входит)
|
||||
just test # fmt + clippy -D warnings + cargo test
|
||||
just build # cargo build
|
||||
just install # cargo install --path . (бинарник xd)
|
||||
just run # деплой проекта github-tracker из test/deploy.toml (в git не входит)
|
||||
```
|
||||
|
||||
Схема деплоя и планы — в `docs/`, текущие задачи — в `backlog.md`.
|
||||
|
||||
Reference in New Issue
Block a user