gendesign/.forgejo/workflows
bot-backend e576f8c256
All checks were successful
CI Trade-In / changes (pull_request) Successful in 9s
CI Trade-In / backend-tests (pull_request) Has been skipped
CI Trade-In / browser-tests (pull_request) Has been skipped
CI / changes (pull_request) Successful in 10s
CI Trade-In / frontend-checks (pull_request) Has been skipped
CI / frontend-tests (pull_request) Has been skipped
CI / openapi-codegen-check (pull_request) Successful in 2m1s
CI / backend-tests (pull_request) Successful in 17m15s
chore(ops): развести crontab по хостам под переезд
Сегодняшний crontab Beget'а обслуживает ОБА контура сразу — и остающийся
(Forgejo), и уезжающий (tradein/gendesign). После 30.08 это перестанет
быть верным, а сам crontab об этом не узнает.

Пять записей начнут ходить в контейнеры, которых на Beget больше нет:

  0  5 * * *  backfill_houses_dadata      docker exec tradein-backend
  30 5 * * *  geocode_deals_from_houses   docker exec tradein-backend
  45 5 * * *  geocode_deals_nominatim     docker exec tradein-backend
  30 4 * * *  backup-tradein-db.sh        dump из tradein-postgres
  30 3 * * *  ops/backup.sh               dump из gendesign-postgres

Падающие по ночам задачи — ещё полбеды. Хуже, что вместе с ними перестанут
обновляться sentinel'ы бэкапов; сторож честно это заметит и упрётся в то,
что канал оповещения не настроен (#2203: TELEGRAM_* нет ни в одном
env-файле). То есть бэкапы обоих продуктовых кластеров пропадут МОЛЧА.

Зеркальный и более опасный случай: если на Poincare crontab не установить
вовсе, там не будет НИ ОДНОГО бэкапа — и узнать об этом неоткуда, потому
что сторож пропущенных прогонов живёт в том же crontab'е. Отсутствие
бэкапов обнаружилось бы в момент, когда они понадобятся.

Поэтому два эталонных файла, а не инструкция в раннбуке: переход должен
быть явным действием (`crontab ops/crontab-<хост>.cron`), а не «забыли
поправить».

Разбор по хостам:
  Beget    — backup-forgejo.sh + его сторож + docker-prune (здесь остаются
             CI-раннеры, их тома и растут)
  Poincare — оба продуктовых бэкапа + два их сторожа + три задачи
             обогащения/геокодирования + СВОЙ docker-prune

docker-prune нужен на обоих: на Beget он чистит тома раннеров, на Poincare
образы продуктового стека. Это не «переехавшая» запись, а две разные.

Заодно логи переведены с /tmp на /opt/gendesign/logs: половина записей
писала в /tmp, который чистится при перезагрузке — именно поэтому историю
отказов бэкапов раньше не удавалось восстановить.

Времена оставлены прежние: чтобы при разборе後 переезда не гадать, что
изменилось — поведение или расписание.

`ops/*.cron` добавлен в paths deploy.yml: файлы не исполняются деплоем, но
должны физически лежать в /opt/gendesign, иначе в окне их нечем будет
установить (тот же класс, что #2887).

Проверено: 11 расписаний разобраны построчно — 5 полей + команда, ошибок 0;
deploy.yml остаётся валидным YAML.

Refs #3059, #3057, #2203
2026-08-24 04:46:18 +03:00
..
ci-tradein.yml fix(db/ci): чистый старт БД больше не падает на 077 и не может уехать на пустой схеме 2026-08-20 23:31:46 +03:00
ci.yml fix(ci): прод-деплои в одну группу concurrency — прун одного убивал pull другого (#2950) (#2952) 2026-08-20 07:47:48 +00:00
deploy-infra.yml chore(ci): синхронизировать /opt/gendesign на остающемся хосте (#3071) 2026-08-24 00:51:50 +00:00
deploy-obsidian.yml fix(devops): переносим deploy-obsidian.yml в .forgejo/workflows/ (#2416) (#2439) 2026-07-05 15:34:55 +00:00
deploy-tradein.yml Merge remote-tracking branch 'forgejo/main' into fix/2990-clean-start-initdb 2026-08-21 15:35:32 +03:00
deploy.yml chore(ops): развести crontab по хостам под переезд 2026-08-24 04:46:18 +03:00
perimeter-smoke.yml ci: смоук периметра МЕРЫ запускается сразу после деплоя (#2917) (#2922) 2026-08-19 08:13:49 +00:00
stale-claims.yml fix(stale-claims): avoid SIGPIPE 141 — pass file path не pipe 2026-05-28 01:05:56 +03:00