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
Сегодняшний 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
45 lines
3.8 KiB
Text
45 lines
3.8 KiB
Text
# crontab ОСТАЮЩЕГОСЯ хоста (Beget, 46.173.16.127) — после переезда 30.08.
|
||
#
|
||
# Устанавливать НЕ РАНЬШЕ, чем стек уедет на Selectel:
|
||
# crontab /opt/gendesign/ops/crontab-beget.cron
|
||
# crontab -l # сверить
|
||
#
|
||
# ЗАЧЕМ ЭТОТ ФАЙЛ. Сегодняшний crontab Beget'а обслуживает ОБА контура сразу:
|
||
# и остающийся (Forgejo), и уезжающий (tradein/gendesign). После переезда пять
|
||
# записей начнут ходить в контейнеры, которых на этом хосте больше нет —
|
||
# `docker exec tradein-backend ...` будет падать каждую ночь. Само по себе это
|
||
# ещё полбеды; беда в том, что вместе с ними перестанут обновляться sentinel'ы
|
||
# бэкапов, сторож это честно заметит — и упрётся в то, что канал оповещения
|
||
# не настроен (#2203: TELEGRAM_* нет ни в одном env-файле). То есть бэкапы
|
||
# пропадут молча.
|
||
#
|
||
# Разделение на два файла — чтобы этот переход был явным действием, а не
|
||
# «забыли поправить crontab».
|
||
|
||
# ── Forgejo: остаётся здесь ─────────────────────────────────────────────────
|
||
# Конфиг лежит не в /etc/default (туда нет доступа без root), а в
|
||
# /opt/gendesign/secrets — путь передаётся переменной.
|
||
15 4 * * * FORGEJO_BACKUP_ENV_FILE=/opt/gendesign/secrets/forgejo-backup.env bash /opt/gendesign/ops/backup-forgejo.sh >> /opt/gendesign/logs/backup-forgejo.log 2>&1
|
||
|
||
# Сторож пропущенных прогонов для forgejo-бэкапа. Порог 26ч.
|
||
0 * * * * bash /opt/gendesign/ops/check-backup-staleness.sh /opt/gendesign/backups/forgejo/.last_success 26 "forgejo backup" >> /opt/gendesign/logs/backup-staleness.log 2>&1
|
||
|
||
# ── Уборка докера ───────────────────────────────────────────────────────────
|
||
# Остаётся здесь, потому что здесь остаются CI-раннеры (#2881) — именно их
|
||
# тома и растут. На Selectel нужна СВОЯ такая же запись (см. crontab-poincare).
|
||
0 4 * * 0 bash /opt/gendesign/ops/docker-prune.sh >> /tmp/gendesign-docker-prune.log 2>&1
|
||
|
||
# ── ЧТО ОТСЮДА УБРАНО И ПОЧЕМУ ──────────────────────────────────────────────
|
||
# Все записи ниже переехали в ops/crontab-poincare.cron, потому что обращаются
|
||
# к контейнерам и данным, которых на Beget после переезда не будет:
|
||
#
|
||
# 30 4 * * * backup-tradein-db.sh -> dump из tradein-postgres
|
||
# 30 3 * * * ops/backup.sh -> dump из gendesign-postgres
|
||
# 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
|
||
# 0 * * * * staleness: backups/.last_success (main-бэкап уехал)
|
||
# 0 * * * * staleness: backups/tradein/.last_success (tradein-бэкап уехал)
|
||
#
|
||
# ⚠️ Оставить их здесь = пять падающих задач в сутки И потерянные бэкапы
|
||
# обоих продуктовых кластеров.
|