diff --git a/docs/DEPLOY_INSTRUCTIONS.md b/docs/DEPLOY_INSTRUCTIONS.md index c2c5cb3..fe92ab8 100644 --- a/docs/DEPLOY_INSTRUCTIONS.md +++ b/docs/DEPLOY_INSTRUCTIONS.md @@ -3,107 +3,74 @@ ## Описание Этот документ описывает процесс публикации сгенерированного сайта (папка `public`) -на хостинге через SFTP. Решение кроссплатформенное и работает как на Unix-подобных -системах (Linux/macOS), так и на Windows. +на хостинге через SFTP. -> **ВАЖНО: деплой сайта выполняется ТОЛЬКО через `make deploy`.** Аккаунт Jino — -> SFTP-only: удалённый запуск команд (rsync, ssh-exec) запрещён сервером -> (ошибка `exec request failed on channel 0`). Прямой rsync на этот аккаунт -> НЕ РАБОТАЕТ. +**Деплой автоматизирован через Gitea Actions.** Публикация выполняется +автоматически при каждом пуше в ветку `main` репозитория или вручную через +Workflow Dispatch в Gitea UI (Actions -> deploy-dedinit -> Run workflow). ## Учетные данные и параметры подключения - **Хост**: kpa39l.myjino.ru - **Порт SFTP**: 2222 - **Пользователь**: kpa39l_dedinit -- **Пароль**: -Zp4ep747t25 +- **Пароль**: хранится в секрете Gitea `SSHPASS` (Settings -> Actions -> Secrets + репозитория). В открытом виде в репозитории **не хранится**. - **Целевой путь**: /dedinit.ru (относительно корня аккаунта) -## Установка зависимостей +## Как работает деплой -### Для Linux/macOS +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 + удаление устаревших файлов). -- **Python 3** (с venv/pip) -- **Make** — для выполнения команд из Makefile -- Пакет `paramiko` ставится автоматически в `.venv/` при первом `make deploy` - (таргет `venv`), либо вручную: `pip install paramiko` +> **ВАЖНО: аккаунт Jino — SFTP-only:** удалённый запуск команд (rsync, +> ssh-exec) запрещён сервером (ошибка `exec request failed on channel 0`). +> Прямой rsync на этот аккаунт НЕ РАБОТАЕТ — только `tools/deploy_sftp.py`. -### Для Windows +## Запуск вручную -- **WinSCP** — установите с официального сайта () -- **Make** — можно установить через Chocolatey, MinGW или Git for Windows +В Gitea: открыть репозиторий -> Actions -> workflow `deploy-dedinit` -> +кнопка **Run workflow** (ветка `main`). -## Использование Makefile +## Локальный запуск (без Actions) -### Сборка сайта +Только для отладки. Требуется заранее заданный секрет: ```bash -make build +export SSHPASS='<пароль из секрета Gitea SSHPASS>' +hugo --minify +python3 -m venv .venv && .venv/bin/pip install -q paramiko +.venv/bin/python tools/deploy_sftp.py ``` -Команда генерирует сайт в папку `public/`. - -### Деплой сайта +## Симуляция деплоя (dry-run) ```bash -# один раз экспортируем пароль SFTP (каждый раз в новой сессии) -export SSHPASS='-Zp4ep747t25' -make deploy -``` - -ЕДИНСТВЕННЫЙ способ публикации. Сначала собирает сайт, затем зеркалирует -`public/` на сервер (`/dedinit.ru`) с удалением устаревших файлов -(аналог `rsync --delete`): - -- **Unix**: `tools/deploy_sftp.py` (paramiko, SFTP + рекурсивный mirror) -- **Windows**: WinSCP.com (скрипт `winscp_script.txt`) - -Если `SSHPASS` не задана — `make deploy` завершится с ошибкой и подсказкой. - -### Симуляция деплоя - -```bash -export SSHPASS='-Zp4ep747t25' -make deploy-dry-run +export SSHPASS='<пароль из секрета Gitea SSHPASS>' +.venv/bin/python tools/deploy_sftp.py --dry-run ``` Собирает сайт и показывает, какие файлы будут загружены/удалены, без заливки. -### Очистка - -```bash -make clean -``` - -Команда удаляет папку `public/`. - -### Полная пересборка - -```bash -make rebuild -``` - -Команда удаляет папку `public/`, затем заново собирает и деплоит сайт. - -### Справка - -```bash -make help -``` - -Показывает список доступных команд. - ## Конфигурация -Параметры подключения для Unix находятся в `tools/deploy_sftp.py` +Параметры подключения находятся в `tools/deploy_sftp.py` (переменные `DEDINIT_HOST`, `DEDINIT_PORT`, `DEDINIT_USER`, `DEDINIT_REMOTE`, по умолчанию — kpa39l.myjino.ru:2222 / kpa39l_dedinit / /dedinit.ru). -На Windows — в `Makefile` и `winscp_script.txt`. При необходимости вы можете изменить эти параметры. -## Настройка для Windows +## Управление паролем (секрет SSHPASS) -1. Убедиться, что WinSCP установлен в стандартную директорию - `C:\Program Files (x86)\WinSCP\` -2. Файл `winscp_script.txt` содержит команды для подключения и синхронизации файлов \ No newline at end of file +- Пароль задан один раз через Gitea API: + `PUT /api/v1/repos/estorozhenko/dedinit.ru/actions/secrets/SSHPASS`. +- Обновить/посмотреть наличие: Gitea UI -> Settings -> Actions -> Secrets. +- Workflow читает его как `${{ secrets.SSHPASS }}` и передаёт в переменную + окружения `SSHPASS` шагу Deploy via SFTP.