Merge pull request 'chore(tradein/deploy): scraper deploy-decouple phase 0+1 — no recreate on infra-only deploys + 120s graceful stop' (#2065) from chore/tradein-scraper-deploy-decouple-p01 into main
All checks were successful
Deploy Trade-In / changes (push) Successful in 14s
Deploy Trade-In / build-browser (push) Successful in 36s
Deploy Trade-In / test (push) Successful in 1m39s
Deploy Trade-In / build-backend (push) Successful in 30s
Deploy Trade-In / build-frontend (push) Successful in 4m50s
Deploy Trade-In / deploy (push) Successful in 3m10s

Reviewed-on: #2065
This commit is contained in:
lekss361 2026-06-28 16:35:38 +00:00
commit 77b4f7e64c
2 changed files with 12 additions and 1 deletions

View file

@ -276,7 +276,13 @@ jobs:
env: env:
IMAGE_TAG: latest IMAGE_TAG: latest
GHCR_PAT: ${{ secrets.GHCR_PAT }} GHCR_PAT: ${{ secrets.GHCR_PAT }}
SCRAPER_CHANGED: ${{ needs.changes.outputs.scraper == 'true' || needs.changes.outputs.infra == 'true' || github.event_name == 'workflow_dispatch' }} # Phase 0: generic infra edits (compose / workflow / deploy/**) must NOT
# recreate the scraper and SIGKILL a running multi-hour job. Only genuine
# scraper-code paths (the `scraper` paths-filter already covers
# app/services/scrapers/**, scrape_pipeline.py, scheduler.py,
# scheduler_main.py, app/tasks/**) — or a manual workflow_dispatch —
# should trigger a scraper recreate. (infra term intentionally dropped.)
SCRAPER_CHANGED: ${{ needs.changes.outputs.scraper == 'true' || github.event_name == 'workflow_dispatch' }}
GITHUB_SHA: ${{ github.sha }} GITHUB_SHA: ${{ github.sha }}
with: with:
host: ${{ secrets.DEPLOY_HOST }} host: ${{ secrets.DEPLOY_HOST }}

View file

@ -129,6 +129,11 @@ services:
browser: browser:
condition: service_started condition: service_started
restart: unless-stopped restart: unless-stopped
# Phase 1: give the in-flight scrape unit (browser card ~15-27s) time to finish
# + checkpoint on SIGTERM before Docker SIGKILLs. Default grace is only 10s, which
# SIGKILLs a running card mid-flight. (Cooperative-drain handler lands in a later phase.)
stop_grace_period: 120s
stop_signal: SIGTERM
networks: networks:
- tradein-net - tradein-net