77 lines
3.7 KiB
Markdown
77 lines
3.7 KiB
Markdown
# Инструкция по публикации сайта через SFTP
|
||
|
||
## Описание
|
||
|
||
Этот документ описывает процесс публикации сгенерированного сайта (папка `public`)
|
||
на хостинге через SFTP.
|
||
|
||
**Деплой автоматизирован через Gitea Actions.** Публикация выполняется
|
||
автоматически при каждом пуше в ветку `main` репозитория или вручную через
|
||
Workflow Dispatch в Gitea UI (Actions -> deploy-dedinit -> Run workflow).
|
||
|
||
## Учетные данные и параметры подключения
|
||
|
||
- **Хост**: kpa39l.myjino.ru
|
||
- **Порт SFTP**: 2222
|
||
- **Пользователь**: kpa39l_dedinit
|
||
- **Пароль**: хранится в секрете Gitea `SSHPASS` (Settings -> Actions -> Secrets
|
||
репозитория). В открытом виде в репозитории **не хранится**.
|
||
- **Целевой путь**: /dedinit.ru (относительно корня аккаунта)
|
||
|
||
## Как работает деплой
|
||
|
||
1. Workflow `.gitea/workflows/deploy.yml` (события: `push` в `main`
|
||
и `workflow_dispatch`).
|
||
2. Шаги:
|
||
- **Checkout** — `actions/checkout@v4` (самодостаточный зеркальный экшен,
|
||
без обращения к github.com);
|
||
- **Install dependencies** — `python3`, `python3-venv`, `python3-pip`, `hugo`;
|
||
- **Deploy via SFTP** — сборка `hugo --minify`, создание `.venv` с
|
||
`paramiko`, проверка секрета `SSHPASS` и запуск
|
||
`tools/deploy_sftp.py` (рекурсивный mirror + удаление устаревших файлов).
|
||
|
||
> **ВАЖНО: аккаунт Jino — SFTP-only:** удалённый запуск команд (rsync,
|
||
> ssh-exec) запрещён сервером (ошибка `exec request failed on channel 0`).
|
||
> Прямой rsync на этот аккаунт НЕ РАБОТАЕТ — только `tools/deploy_sftp.py`.
|
||
|
||
## Запуск вручную
|
||
|
||
В Gitea: открыть репозиторий -> Actions -> workflow `deploy-dedinit` ->
|
||
кнопка **Run workflow** (ветка `main`).
|
||
|
||
## Локальный запуск (без Actions)
|
||
|
||
Только для отладки. Требуется заранее заданный секрет:
|
||
|
||
```bash
|
||
export SSHPASS='<пароль из секрета Gitea SSHPASS>'
|
||
hugo --minify
|
||
python3 -m venv .venv && .venv/bin/pip install -q paramiko
|
||
.venv/bin/python tools/deploy_sftp.py
|
||
```
|
||
|
||
## Симуляция деплоя (dry-run)
|
||
|
||
```bash
|
||
export SSHPASS='<пароль из секрета Gitea SSHPASS>'
|
||
.venv/bin/python tools/deploy_sftp.py --dry-run
|
||
```
|
||
|
||
Собирает сайт и показывает, какие файлы будут загружены/удалены, без заливки.
|
||
|
||
## Конфигурация
|
||
|
||
Параметры подключения находятся в `tools/deploy_sftp.py`
|
||
(переменные `DEDINIT_HOST`, `DEDINIT_PORT`, `DEDINIT_USER`, `DEDINIT_REMOTE`,
|
||
по умолчанию — kpa39l.myjino.ru:2222 / kpa39l_dedinit / /dedinit.ru).
|
||
|
||
При необходимости вы можете изменить эти параметры.
|
||
|
||
## Управление паролем (секрет SSHPASS)
|
||
|
||
- Пароль задан один раз через Gitea API:
|
||
`PUT /api/v1/repos/estorozhenko/dedinit.ru/actions/secrets/SSHPASS`.
|
||
- Обновить/посмотреть наличие: Gitea UI -> Settings -> Actions -> Secrets.
|
||
- Workflow читает его как `${{ secrets.SSHPASS }}` и передаёт в переменную
|
||
окружения `SSHPASS` шагу Deploy via SFTP.
|