Files
dedinit.ru/openspec/changes/auto-deploy-dedinit-actions/proposal.md
T

2.8 KiB
Raw Blame History

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.