chore(deploy): make deploy — единственный способ деплоя (SFTP paramiko вместо rsync)
- 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/
This commit is contained in:
@@ -7,35 +7,48 @@ ifeq ($(OS),Windows_NT)
|
||||
DRYRUN_CMD = echo "Windows: проверка SFTP-соединения..."
|
||||
else
|
||||
PLATFORM = Unix
|
||||
# На Unix-подобных системах используем rsync для SFTP
|
||||
HOST = kpa39l.myjino.ru
|
||||
PORT = 2222
|
||||
USERNAME = kpa39l_dedinit
|
||||
REMOTE_PATH = /dedinit.ru
|
||||
# На 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
|
||||
.PHONY: build deploy deploy-dry-run clean rebuild help venv
|
||||
|
||||
build:
|
||||
hugo --minify
|
||||
@echo "Сайт успешно собран в папку public/"
|
||||
|
||||
deploy: build
|
||||
# ЕДИНСТВЕННЫЙ способ деплоя — через make deploy.
|
||||
# Никогда не заменять на rsync/ssh-exec напрямую: на Jino аккаунт SFTP-only.
|
||||
deploy: build venv
|
||||
ifeq ($(PLATFORM),Windows)
|
||||
$(DEPLOY_CMD)
|
||||
else
|
||||
rsync -avz --delete -e 'ssh -p $(PORT)' public/ $(USERNAME)@$(HOST):$(REMOTE_PATH)/
|
||||
@test -n "$$SSHPASS" || (echo "ОШИБКА: переменная SSHPASS (пароль SFTP) не задана. См. README.md / DEPLOY_INSTRUCTIONS.md"; exit 1)
|
||||
$(DEPLOY_CMD)
|
||||
endif
|
||||
|
||||
deploy-dry-run: build
|
||||
deploy-dry-run: build venv
|
||||
ifeq ($(PLATFORM),Windows)
|
||||
@echo "Выполняем проверку соединения с сервером..."
|
||||
$(DRYRUN_CMD)
|
||||
else
|
||||
rsync -avn --delete -e 'ssh -p $(PORT)' public/ $(USERNAME)@$(HOST):$(REMOTE_PATH)/
|
||||
@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\
|
||||
del /q /s public\/
|
||||
else
|
||||
rm -rf public/
|
||||
endif
|
||||
@@ -46,8 +59,11 @@ rebuild: clean deploy
|
||||
help:
|
||||
@echo "Доступные команды:"
|
||||
@echo " make build - собрать сайт"
|
||||
@echo " make deploy - собрать и задеплоить сайт"
|
||||
@echo " make deploy-dry-run - симуляция деплоя"
|
||||
@echo " make deploy - собрать и задеплоить сайт (SFTP через lftp, требуется SSHPASS)"
|
||||
@echo " make deploy-dry-run - симуляция деплоя (требуется SSHPASS)"
|
||||
@echo " make clean - удалить папку public"
|
||||
@echo " make rebuild - полная пересборка сайта"
|
||||
@echo " make help - показать это сообщение"
|
||||
@echo " make help - показать это сообщение"
|
||||
@echo ""
|
||||
@echo "Деплой: export SSHPASS='<пароль SFTP>'; make deploy"
|
||||
@echo "Пароль хранится в DEPLOY_INSTRUCTIONS.md (winscp_script.txt для Windows)."
|
||||
Reference in New Issue
Block a user