70a3671d61
- Makefile Unix: tools/deploy_sftp.py (paramiko mirror --delete), autovenv - tools/deploy_sftp.py: рекурсивный SFTP-mirror public/ -> /dedinit.ru - Jino SFTP-only: rsync/ssh-exec запрещены (exec request failed on channel 0) - README/DEPLOY_INSTRUCTIONS: обновлены, деплой только через make deploy - .gitignore: + .venv/
69 lines
3.1 KiB
Makefile
69 lines
3.1 KiB
Makefile
# Определяем операционную систему
|
||
ifeq ($(OS),Windows_NT)
|
||
PLATFORM = Windows
|
||
# На Windows используем WinSCP.com для SFTP
|
||
WINSCP_PATH = "C:\Program Files (x86)\WinSCP\WinSCP.com"
|
||
DEPLOY_CMD = $(WINSCP_PATH) /script=winscp_script.txt
|
||
DRYRUN_CMD = echo "Windows: проверка SFTP-соединения..."
|
||
else
|
||
PLATFORM = Unix
|
||
# На Unix используем paramiko (SFTP). Аккаунт Jino — SFTP-only: rsync/ssh-exec
|
||
# запрещены ("exec request failed on channel 0"), поэтому deploy через
|
||
# tools/deploy_sftp.py (рекурсивный mirror + удаление лишнего).
|
||
# Венв .venv создаётся автоматически таргетом venv (нужен paramiko).
|
||
DEPLOY_CMD = .venv/bin/python tools/deploy_sftp.py
|
||
DRYRUN_CMD = .venv/bin/python tools/deploy_sftp.py --dry-run
|
||
# Пароль берётся из переменной окружения SSHPASS (см. README.md / DEPLOY_INSTRUCTIONS.md)
|
||
endif
|
||
.PHONY: build deploy deploy-dry-run clean rebuild help venv
|
||
|
||
build:
|
||
hugo --minify
|
||
@echo "Сайт успешно собран в папку public/"
|
||
|
||
# ЕДИНСТВЕННЫЙ способ деплоя — через make deploy.
|
||
# Никогда не заменять на rsync/ssh-exec напрямую: на Jino аккаунт SFTP-only.
|
||
deploy: build venv
|
||
ifeq ($(PLATFORM),Windows)
|
||
$(DEPLOY_CMD)
|
||
else
|
||
@test -n "$$SSHPASS" || (echo "ОШИБКА: переменная SSHPASS (пароль SFTP) не задана. См. README.md / DEPLOY_INSTRUCTIONS.md"; exit 1)
|
||
$(DEPLOY_CMD)
|
||
endif
|
||
|
||
deploy-dry-run: build venv
|
||
ifeq ($(PLATFORM),Windows)
|
||
@echo "Выполняем проверку соединения с сервером..."
|
||
$(DRYRUN_CMD)
|
||
else
|
||
@test -n "$$SSHPASS" || (echo "ОШИБКА: переменная SSHPASS (пароль SFTP) не задана. См. README.md / DEPLOY_INSTRUCTIONS.md"; exit 1)
|
||
$(DRYRUN_CMD)
|
||
endif
|
||
|
||
# Создаёт venv с paramiko для Unix-деплоя (единожды)
|
||
venv:
|
||
@if [ ! -x .venv/bin/python ]; then \
|
||
echo "Создаю .venv и ставлю paramiko..."; \
|
||
python3 -m venv .venv && .venv/bin/pip install -q paramiko; \
|
||
fi
|
||
clean:
|
||
ifeq ($(OS),Windows_NT)
|
||
del /q /s public\/
|
||
else
|
||
rm -rf public/
|
||
endif
|
||
@echo "Папка public удалена"
|
||
|
||
rebuild: clean deploy
|
||
|
||
help:
|
||
@echo "Доступные команды:"
|
||
@echo " make build - собрать сайт"
|
||
@echo " make deploy - собрать и задеплоить сайт (SFTP через lftp, требуется SSHPASS)"
|
||
@echo " make deploy-dry-run - симуляция деплоя (требуется SSHPASS)"
|
||
@echo " make clean - удалить папку public"
|
||
@echo " make rebuild - полная пересборка сайта"
|
||
@echo " make help - показать это сообщение"
|
||
@echo ""
|
||
@echo "Деплой: export SSHPASS='<пароль SFTP>'; make deploy"
|
||
@echo "Пароль хранится в DEPLOY_INSTRUCTIONS.md (winscp_script.txt для Windows)."
|