gendesign/ops
bot-backend a0539cf865
All checks were successful
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 / changes (pull_request) Successful in 10s
CI / backend-tests (pull_request) Has been skipped
CI / frontend-tests (pull_request) Has been skipped
CI / openapi-codegen-check (pull_request) Has been skipped
fix(ops): страж повторной заливки перестал молча пропускаться
assert_not_cut_over защищает от --force-restore после cutover: такая заливка
дропает объекты и льёт заново из дампа, уничтожая всё, что приложения записали
после переключения, а сверка фазы 5 подтверждает это как успех — записей,
сделанных после cutover, в источнике никогда не было. Единственная защита —
не дать запуститься.

Страж состоит из двух проверок, и одна из них не работала. Путь считался как
${FORGEJO_DIR}/app.ini, но FORGEJO_DIR — это каталог со стеком: там
docker-compose.yml и раннеры. Конфиг живёт внутри тома данных. На боевом хосте
проверено: /home/gendesign/forgejo/data/forgejo монтируется в контейнер как
/data, то есть app.ini лежит в
/home/gendesign/forgejo/data/forgejo/gitea/conf/app.ini, а /home/gendesign/
forgejo/app.ini не существует вовсе.

Проверка написана как `[[ -r "$ini" ]] && grep ...`, поэтому несуществующий
файл читался как «признака cutover нет». Молча, без единого сообщения.

Теперь путь ищется по трём кандидатам и переопределяется через FORGEJO_APP_INI.
А если не нашёлся ни один — скрипт останавливается, а не продолжает. Ненайденный
конфиг это не «признака нет», это «проверить нечем»: именно здесь пропуск стоит
данных, записанных после переключения.

Заодно поправлены два места в раннбуке на выходе скрипта, которые печатали тот
же несуществующий путь как инструкцию человеку.

Проверено на боевом Beget: автоопределение находит
data/forgejo/gitea/conf/app.ini, строка HOST читается, признак cutover
корректно определяется как отсутствующий; старый путь подтверждённо не
существует.

Refs #3061, #3057
2026-08-25 09:18:09 +03:00
..
db-bootstrap feat(ops): лёгкий Postgres на Beget под forgejo и glitchtip (#3080) 2026-08-24 16:31:12 +00:00
glitchtip-auth-forwarder fix(tradein/observability): stop basic_auth 401 and RetryError GlitchTip noise 2026-08-15 18:08:04 +03:00
backup-couchdb.sh feat(ops): у волта Obsidian появился автоматический бэкап (#3090) 2026-08-25 05:44:16 +00:00
backup-forgejo.sh feat(ops): лёгкий Postgres на Beget под forgejo и glitchtip (#3080) 2026-08-24 16:31:12 +00:00
backup.sh fix(ops): бэкап без выгрузки в S3 падает, а не рапортует успех (#3086) 2026-08-24 17:50:18 +00: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 feat(ops): у волта Obsidian появился автоматический бэкап (#3090) 2026-08-25 05:44:16 +00:00
crontab-poincare.cron fix(ops): бэкап без выгрузки в S3 падает, а не рапортует успех (#3086) 2026-08-24 17:50:18 +00:00
docker-prune.sh chore(ops): снятие зависших job-контейнеров раннера + лимит journald + мёртвый Caddy-блок 2026-08-15 22:27:48 +03:00
gendesign-backup-couchdb.default.example feat(ops): у волта Obsidian появился автоматический бэкап (#3090) 2026-08-25 05:44:16 +00:00
gendesign-backup-forgejo.default.example feat(ops): лёгкий Postgres на Beget под forgejo и glitchtip (#3080) 2026-08-24 16:31:12 +00:00
gendesign-backup.default.example fix(ops): бэкап без выгрузки в S3 падает, а не рапортует успех (#3086) 2026-08-24 17:50:18 +00: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 fix(ops): бэкап без выгрузки в S3 падает, а не рапортует успех (#3086) 2026-08-24 17:50:18 +00:00
restore-drill.sh fix(ops): бэкап без выгрузки в S3 падает, а не рапортует успех (#3086) 2026-08-24 17:50:18 +00:00
restore.sh fix(ops): восстановление не падает в хвосте из-за незаведённых ролей (#3089) 2026-08-25 05:18:53 +00:00
selectel-audit.sh feat(ci): деплой проверяет, к тому ли хосту подключился (#3079) 2026-08-24 16:36:50 +00:00
selectel-bootstrap.sh fix(ops): закрепить рабочий адрес api.telegram.org на новом хосте 2026-08-23 23:32:35 +03:00
selectel-ci-access.sh feat(ci): деплой проверяет, к тому ли хосту подключился (#3079) 2026-08-24 16:36:50 +00:00
split-infra-postgres.sh fix(ops): страж повторной заливки перестал молча пропускаться 2026-08-25 09:18:09 +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