docs: убрать пароль SFTP из DEPLOY_INSTRUCTIONS.md, описать деплой через Actions и секрет SSHPASS
deploy-dedinit / Build & SFTP Deploy (push) Successful in 8m2s
deploy-dedinit / Build & SFTP Deploy (push) Successful in 8m2s
This commit is contained in:
+38
-71
@@ -3,107 +3,74 @@
|
|||||||
## Описание
|
## Описание
|
||||||
|
|
||||||
Этот документ описывает процесс публикации сгенерированного сайта (папка `public`)
|
Этот документ описывает процесс публикации сгенерированного сайта (папка `public`)
|
||||||
на хостинге через SFTP. Решение кроссплатформенное и работает как на Unix-подобных
|
на хостинге через SFTP.
|
||||||
системах (Linux/macOS), так и на Windows.
|
|
||||||
|
|
||||||
> **ВАЖНО: деплой сайта выполняется ТОЛЬКО через `make deploy`.** Аккаунт Jino —
|
**Деплой автоматизирован через Gitea Actions.** Публикация выполняется
|
||||||
> SFTP-only: удалённый запуск команд (rsync, ssh-exec) запрещён сервером
|
автоматически при каждом пуше в ветку `main` репозитория или вручную через
|
||||||
> (ошибка `exec request failed on channel 0`). Прямой rsync на этот аккаунт
|
Workflow Dispatch в Gitea UI (Actions -> deploy-dedinit -> Run workflow).
|
||||||
> НЕ РАБОТАЕТ.
|
|
||||||
|
|
||||||
## Учетные данные и параметры подключения
|
## Учетные данные и параметры подключения
|
||||||
|
|
||||||
- **Хост**: kpa39l.myjino.ru
|
- **Хост**: kpa39l.myjino.ru
|
||||||
- **Порт SFTP**: 2222
|
- **Порт SFTP**: 2222
|
||||||
- **Пользователь**: kpa39l_dedinit
|
- **Пользователь**: kpa39l_dedinit
|
||||||
- **Пароль**: -Zp4ep747t25
|
- **Пароль**: хранится в секрете Gitea `SSHPASS` (Settings -> Actions -> Secrets
|
||||||
|
репозитория). В открытом виде в репозитории **не хранится**.
|
||||||
- **Целевой путь**: /dedinit.ru (относительно корня аккаунта)
|
- **Целевой путь**: /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)
|
> **ВАЖНО: аккаунт Jino — SFTP-only:** удалённый запуск команд (rsync,
|
||||||
- **Make** — для выполнения команд из Makefile
|
> ssh-exec) запрещён сервером (ошибка `exec request failed on channel 0`).
|
||||||
- Пакет `paramiko` ставится автоматически в `.venv/` при первом `make deploy`
|
> Прямой rsync на этот аккаунт НЕ РАБОТАЕТ — только `tools/deploy_sftp.py`.
|
||||||
(таргет `venv`), либо вручную: `pip install paramiko`
|
|
||||||
|
|
||||||
### Для Windows
|
## Запуск вручную
|
||||||
|
|
||||||
- **WinSCP** — установите с официального сайта (<https://winscp.net/>)
|
В Gitea: открыть репозиторий -> Actions -> workflow `deploy-dedinit` ->
|
||||||
- **Make** — можно установить через Chocolatey, MinGW или Git for Windows
|
кнопка **Run workflow** (ветка `main`).
|
||||||
|
|
||||||
## Использование Makefile
|
## Локальный запуск (без Actions)
|
||||||
|
|
||||||
### Сборка сайта
|
Только для отладки. Требуется заранее заданный секрет:
|
||||||
|
|
||||||
```bash
|
```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
|
```bash
|
||||||
# один раз экспортируем пароль SFTP (каждый раз в новой сессии)
|
export SSHPASS='<пароль из секрета Gitea SSHPASS>'
|
||||||
export SSHPASS='-Zp4ep747t25'
|
.venv/bin/python tools/deploy_sftp.py --dry-run
|
||||||
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
|
|
||||||
```
|
```
|
||||||
|
|
||||||
Собирает сайт и показывает, какие файлы будут загружены/удалены, без заливки.
|
Собирает сайт и показывает, какие файлы будут загружены/удалены, без заливки.
|
||||||
|
|
||||||
### Очистка
|
|
||||||
|
|
||||||
```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`,
|
(переменные `DEDINIT_HOST`, `DEDINIT_PORT`, `DEDINIT_USER`, `DEDINIT_REMOTE`,
|
||||||
по умолчанию — kpa39l.myjino.ru:2222 / kpa39l_dedinit / /dedinit.ru).
|
по умолчанию — kpa39l.myjino.ru:2222 / kpa39l_dedinit / /dedinit.ru).
|
||||||
На Windows — в `Makefile` и `winscp_script.txt`.
|
|
||||||
|
|
||||||
При необходимости вы можете изменить эти параметры.
|
При необходимости вы можете изменить эти параметры.
|
||||||
|
|
||||||
## Настройка для Windows
|
## Управление паролем (секрет SSHPASS)
|
||||||
|
|
||||||
1. Убедиться, что WinSCP установлен в стандартную директорию
|
- Пароль задан один раз через Gitea API:
|
||||||
`C:\Program Files (x86)\WinSCP\`
|
`PUT /api/v1/repos/estorozhenko/dedinit.ru/actions/secrets/SSHPASS`.
|
||||||
2. Файл `winscp_script.txt` содержит команды для подключения и синхронизации файлов
|
- Обновить/посмотреть наличие: Gitea UI -> Settings -> Actions -> Secrets.
|
||||||
|
- Workflow читает его как `${{ secrets.SSHPASS }}` и передаёт в переменную
|
||||||
|
окружения `SSHPASS` шагу Deploy via SFTP.
|
||||||
|
|||||||
Reference in New Issue
Block a user