ci: workflow деплоя dedinit.ru через SFTP при пуше в main (Gitea Actions)

This commit is contained in:
2026-09-19 18:51:08 +00:00
parent f714b9180b
commit 39f29cc897
5 changed files with 259 additions and 0 deletions
@@ -0,0 +1,39 @@
# Proposal: Автодеплой dedinit.ru через Gitea Actions при пуше в master
## Проблема
Сейчас деплой dedinit.ru на Jino (SFTP) выполняется вручную: `make build && export SSHPASS=... && make deploy`.
Это требует присутствия человека, не даёт истории деплоев и не срабатывает при пуше со стороны
пользователя (он коммитит сам, но деплой забывает).
## Что предлагается
1. Подключить Gitea Actions: на каждый push в ветку `master` репозитория
`estorozhenko/dedinit.ru` (bigbox, gitea.nixg.ru) запускать workflow:
- checkout репозитория
- сборка Hugo: `make build` (hugo --minify)
- загрузка `public/` на Jino SFTP через существующий `tools/deploy_sftp.py`
2. Для этого:
- **снять mirror-статус** у `estorozhenko/dedinit.ru` в Gitea (на зеркале Actions не работают — штатное ограничение Gitea)
- синхронизацию gitverse → gitea перенести в крон-скрипт `git fetch + git push` (вместо mirror-интервала 8ч)
- деплой-секрет SFTP (пароль Jino) завести в Gitea Actions secrets
- раннер уже стоит и работает (bigbox-runner, v3.3.1, label `docker27-bash`)
## Затронутые сервисы и файлы
- `estorozhenko/dedinit.ru` (gitea.nixg.ru) — снятие mirror, включение Actions
- `/opt/dedinit.ru/.gitea/workflows/deploy.yml` — новый workflow
- `/opt/dedinit.ru/Makefile`, `tools/deploy_sftp.py` — без изменений (переиспользуются)
- `~/.ssh/config` / ssh-ключи — не нужны (деплой через пароль, как сейчас)
- Крон на bigbox: синхронизация gitverse→gitea (замена mirror-интервала)
## План отката
- Вернуть mirror-статус репозитория в Gitea (API `PATCH /repos/{owner}/{repo}` → `mirror:true`)
- Удалить `.gitea/workflows/deploy.yml` из репозитория (или отключить в настройках Actions)
- Удалить secrets SFTP из Gitea (пароль не скомпрометирован — он и так лежит в docs/)
## Прочие решения
- Ветка по умолчанию в репо — `main`, но задание «при пуше в master» — оформим триггер на `main`
(репо уже на main; в Gitea триггер по branch-шаблону). Уточним у пользователя, если нужен именно `master`.