diff --git a/scripts/deploy.sh b/scripts/deploy.sh index 2a6b55b..7fbc1b5 100755 --- a/scripts/deploy.sh +++ b/scripts/deploy.sh @@ -43,6 +43,7 @@ fi REBUILD="" FRONTEND_CHANGED=0 +PARSERS_CHANGED=0 if [ "$FULL" = 1 ]; then REBUILD="$ALL_BACKEND" FRONTEND_CHANGED=1 @@ -51,6 +52,12 @@ else echo "$CHANGED" | grep -qE "^services/$svc/" && REBUILD="$REBUILD $svc" done echo "$CHANGED" | grep -qE '^services/frontend/' && FRONTEND_CHANGED=1 + # Парсеры не вшиты в образ, а смонтированы в worker-indexer (см. compose), + # поэтому пересобирать нечего. Но процесс воркера держит модуль парсера в + # памяти с прошлого прогона: без перезапуска правка молча не применяется — + # заливка продолжает ходить по старому коду, и это не видно ниоткуда, кроме + # тела запросов в логах. Ловилось на CORE 16.09.2026. + echo "$CHANGED" | grep -qE '^scripts/parsers/' && PARSERS_CHANGED=1 fi REBUILD="$(echo "$REBUILD" | xargs || true)" @@ -111,6 +118,13 @@ echo "==> [4/6] Применение секретов к неизменивши # shellcheck disable=SC2086 $COMPOSE up -d $ALL_BACKEND +# Правка парсера доезжает монтированием, но модуль уже загружен в память +# воркера — перезапускаем, если образ и так не пересобирался выше. +if [ "$PARSERS_CHANGED" = 1 ] && ! echo " $REBUILD " | grep -q " worker-indexer "; then + echo "==> [4.5/6] Парсеры менялись — перезапуск worker-indexer" + $COMPOSE restart worker-indexer +fi + echo "==> [5/6] Миграции БД (с ретраем)" for i in $(seq 1 10); do $COMPOSE exec -T api alembic upgrade head && break