From 462a61151b30524b4c6cdec597e5bfec834ca8f8 Mon Sep 17 00:00:00 2001 From: estorozhenko Date: Mon, 21 Sep 2026 15:37:52 +0000 Subject: [PATCH] =?UTF-8?q?docs:=20=D1=83=D0=B1=D1=80=D0=B0=D1=82=D1=8C=20?= =?UTF-8?q?=D0=BF=D0=B0=D1=80=D0=BE=D0=BB=D1=8C=20SFTP=20=D0=B8=D0=B7=20DE?= =?UTF-8?q?PLOY=5FINSTRUCTIONS.md,=20=D0=BE=D0=BF=D0=B8=D1=81=D0=B0=D1=82?= =?UTF-8?q?=D1=8C=20=D0=B4=D0=B5=D0=BF=D0=BB=D0=BE=D0=B9=20=D1=87=D0=B5?= =?UTF-8?q?=D1=80=D0=B5=D0=B7=20Actions=20=D0=B8=20=D1=81=D0=B5=D0=BA?= =?UTF-8?q?=D1=80=D0=B5=D1=82=20SSHPASS?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/DEPLOY_INSTRUCTIONS.md | 109 +++++++++++++----------------------- 1 file changed, 38 insertions(+), 71 deletions(-) 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.