# Определяем операционную систему 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 / docs/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 / docs/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 / docs/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 "Пароль хранится в docs/DEPLOY_INSTRUCTIONS.md (winscp_script.txt для Windows)."