gendesign/ops
bot-backend 03a600db65
All checks were successful
CI / changes (pull_request) Successful in 9s
CI / backend-tests (pull_request) Has been skipped
CI / frontend-tests (pull_request) Has been skipped
CI Trade-In / changes (pull_request) Successful in 8s
CI Trade-In / backend-tests (pull_request) Has been skipped
CI Trade-In / browser-tests (pull_request) Has been skipped
CI Trade-In / frontend-checks (pull_request) Has been skipped
CI / openapi-codegen-check (pull_request) Has been skipped
feat(ops): бэкапить конфигурацию Forgejo, а не только его содержимое
backup-forgejo.sh забирал БД и голые репозитории — то есть СОДЕРЖИМОЕ
Forgejo, но не то, ЧЕМ оно поднимается.

Компоуз-файлы Forgejo и раннеров живут в /home/gendesign/forgejo/, ВНЕ
репозитория: `git rev-parse` там отвечает "not a git repository". Их не
трогает ни один деплой (включая #3071 — тот синхронизирует /opt/gendesign)
и не покрывал ни один бэкап.

Практический смысл: при потере хоста БД и репозитории восстановятся, а
конфигурация — нет. Пришлось бы вручную воссоздавать docker-compose.yml и
заново регистрировать три раннера. Для переезда это особенно неприятно:
Forgejo ОСТАЁТСЯ на Beget, то есть он и есть та машина, с которой всё
будет подниматься, если что-то пойдёт не так.

Косвенное подтверждение, что каталог правится руками и без истории:
рядом лежат runner-compose.yml.bak, .bak.1779049805, .bak.before-runner3 —
три самодельных снимка вместо version control.

Что НЕ включено намеренно: секрет-файл режима 600 и runner*/data/ с
регистрационными токенами. Они остаются ручным off-box пунктом владельца —
тем же, что рантайм-секреты в приёмке #2203. Раннеры при восстановлении
перерегистрируются из UI за пару минут; компоуз-файл руками не
восстановишь.

Проверки те же две, что у repo-бандла (не «объём», а «собрался и
читается»), плюс мягкая деградация: не собрался — WARN и продолжаем без
него, бэкап БД и репозиториев не теряем из-за 5 КБ конфига.

Проверено на настоящем каталоге прода (read-only, боевой бэкап не
тронут):
  - tar код 0, ровно 2 файла: docker-compose.yml, runner-compose.yml
  - 1070 байт, архив читается
  - секрет-файла внутри нет, каталога data/ внутри нет
  - раскрытие ${config_out:+...} в цикле выгрузки: пусто -> 2 файла,
    задано -> 3
  - bash -n чист

Refs #2203, #3057
2026-08-24 06:47:27 +03:00
..
db-bootstrap feat(auth): отдельная БД auth — фундамент единого входа «Меры» и «Птицы» 2026-07-31 21:47:33 +03:00
glitchtip-auth-forwarder fix(tradein/observability): stop basic_auth 401 and RetryError GlitchTip noise 2026-08-15 18:08:04 +03:00
backup-forgejo.sh feat(ops): бэкапить конфигурацию Forgejo, а не только его содержимое 2026-08-24 06:47:27 +03:00
backup.sh feat(ops): missed-run detection for backups + Forgejo code/DB backup to S3 2026-08-21 15:37:19 +03:00
check-backup-staleness.sh fix(ops): restore +x on new ops/*.sh (exec bit lost in prior commit, Windows core.filemode=false) 2026-08-21 15:38:31 +03:00
crontab-beget.cron chore(ops): развести crontab по хостам под переезд (#3072) 2026-08-24 02:04:40 +00:00
crontab-poincare.cron chore(ops): развести crontab по хостам под переезд (#3072) 2026-08-24 02:04:40 +00:00
docker-prune.sh chore(ops): снятие зависших job-контейнеров раннера + лимит journald + мёртвый Caddy-блок 2026-08-15 22:27:48 +03:00
gendesign-backup-forgejo.default.example feat(ops): missed-run detection for backups + Forgejo code/DB backup to S3 2026-08-21 15:37:19 +03:00
gendesign-backup.default.example feat(ops): missed-run detection for backups + Forgejo code/DB backup to S3 2026-08-21 15:37:19 +03:00
gendesign-uptime.default.example ci(infra): coverage-gate (#68) + OpenAPI codegen-assert (#69) + uptime monitoring (#75) 2026-06-13 23:28:06 +05:00
journald-gendesign.conf.example chore(ops): снятие зависших job-контейнеров раннера + лимит journald + мёртвый Caddy-блок 2026-08-15 22:27:48 +03:00
lib-backup.sh feat(ops): запасной канал алертов на случай недоступного Telegram (#3070) 2026-08-23 23:55:40 +00:00
restore-drill.sh fix(ops): дрилл восстановления ждал БД по сокету и умирал на старте настоящего сервера 2026-08-21 15:42:36 +03:00
restore.sh chore(ops): выставить +x на docker-prune.sh и restore.sh 2026-08-15 17:17:58 +03:00
selectel-audit.sh chore(ops): скрипты аудита и первичной настройки выделенного сервера Selectel 2026-08-22 12:49:09 +03:00
selectel-bootstrap.sh fix(ops): закрепить рабочий адрес api.telegram.org на новом хосте 2026-08-23 23:32:35 +03:00
uptime-healthcheck.sh ci(infra): coverage-gate (#68) + OpenAPI codegen-assert (#69) + uptime monitoring (#75) 2026-06-13 23:28:06 +05:00