From 3060263b9dc32f5bf4ede3a775415ddc20013fcc Mon Sep 17 00:00:00 2001 From: vitya Date: Thu, 20 Aug 2026 22:50:56 +0300 Subject: [PATCH] =?UTF-8?q?ops:=20=D1=81=D1=82=D0=B5=D0=BD=D0=B4=20?= =?UTF-8?q?=E2=80=94=20schedd=200.5.0=20(run-deadline),=20timeoutMs=20-1,?= =?UTF-8?q?=20ozon=20bind-mount=20state=20=D0=BD=D0=B0=20=D1=85=D0=BE?= =?UTF-8?q?=D1=81=D1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - schedd.Dockerfile: daemon 0.4.2 → 0.5.0 (фикс envelope-дыра/statusUrl/poll-retry/run-deadline) - tasks.json: timeoutMs -1 на обе пайплайн-таски (никогда не авто-терминировать) - docker-compose: ozon /app/data + /app/state.json bind-mount на хост (как ym) - data-ozon/state.json: baked-снапшот state из образа --- host-stacks/.gitignore | 2 ++ host-stacks/local/sched-pipelines/data-ozon/state.json | 6 ++++++ host-stacks/local/sched-pipelines/docker-compose.yml | 5 +++-- host-stacks/local/sched-pipelines/schedd.Dockerfile | 5 +++-- host-stacks/local/sched-pipelines/tasks.json | 2 ++ 5 files changed, 16 insertions(+), 4 deletions(-) create mode 100644 host-stacks/.gitignore create mode 100644 host-stacks/local/sched-pipelines/data-ozon/state.json diff --git a/host-stacks/.gitignore b/host-stacks/.gitignore new file mode 100644 index 0000000..0b9aa3e --- /dev/null +++ b/host-stacks/.gitignore @@ -0,0 +1,2 @@ +data-ozon-openapi/ +data-mail/ diff --git a/host-stacks/local/sched-pipelines/data-ozon/state.json b/host-stacks/local/sched-pipelines/data-ozon/state.json new file mode 100644 index 0000000..73da79e --- /dev/null +++ b/host-stacks/local/sched-pipelines/data-ozon/state.json @@ -0,0 +1,6 @@ +{ + "lastSpecSha256": "8756930c9921a569473dee082586af4e390f45497d4a1dd3ba4b7b622e232822", + "recipeVersion": "1.3.0", + "lastSpecSnapshot": "2026-08-20", + "lastRunAt": "2026-08-20T10:19:48.760Z" +} diff --git a/host-stacks/local/sched-pipelines/docker-compose.yml b/host-stacks/local/sched-pipelines/docker-compose.yml index 08833eb..bea3302 100644 --- a/host-stacks/local/sched-pipelines/docker-compose.yml +++ b/host-stacks/local/sched-pipelines/docker-compose.yml @@ -90,7 +90,9 @@ services: GH_TOKEN: ${GITHUB_TOKEN:-} NPM_TOKEN: ${NPM_TOKEN:-} volumes: - - ozon-data:/app/data + - ./data-ozon:/app/data + # state.json на хост — иначе живёт в слое образа (run.js хардкодит ROOT) и теряется при пересоздании + - ./data-ozon/state.json:/app/state.json # снапшот спеки из репо (fetch антиботом не ходим — dry-run от ручного снапшота) - ./data-ozon-openapi:/app/openapi ports: @@ -160,7 +162,6 @@ services: volumes: sched-data: - ozon-data: networks: sched-local: diff --git a/host-stacks/local/sched-pipelines/schedd.Dockerfile b/host-stacks/local/sched-pipelines/schedd.Dockerfile index bcae1aa..2e383b3 100644 --- a/host-stacks/local/sched-pipelines/schedd.Dockerfile +++ b/host-stacks/local/sched-pipelines/schedd.Dockerfile @@ -1,5 +1,6 @@ # schedd — опубликованный daemon из приватного реестра (verdaccio), как на проде. -# @sched/daemon@0.4.2 (latest) + deps (core 0.44.0, admin-api 0.2.0, mcp 0.4.1). +# @sched/daemon@0.5.0 (latest) + deps (core 0.45.0) — фикс 2026-08-20: envelope-дыра, +# относительный statusUrl, poll-ретраи 2×500мс, run-deadline контракт (task-level timeoutMs). # node >= 24 (engines у daemon; node:sqlite). FROM node:24-alpine RUN apk add --no-cache git @@ -7,7 +8,7 @@ WORKDIR /app ENV NODE_ENV=production ARG VERDACCIO_TOKEN RUN npm config set //verdaccio.kzntsv.site/:_authToken=${VERDACCIO_TOKEN} \ - && npm install -g @sched/daemon@0.4.2 --registry=https://verdaccio.kzntsv.site --no-audit --no-fund + && npm install -g @sched/daemon@0.5.0 --registry=https://verdaccio.kzntsv.site --no-audit --no-fund EXPOSE 8080 VOLUME ["/data"] ENTRYPOINT ["schedd"] diff --git a/host-stacks/local/sched-pipelines/tasks.json b/host-stacks/local/sched-pipelines/tasks.json index 716e0b8..b4daff3 100644 --- a/host-stacks/local/sched-pipelines/tasks.json +++ b/host-stacks/local/sched-pipelines/tasks.json @@ -3,6 +3,7 @@ { "name": "ozon-seller-pipeline", "runner": "http", + "timeoutMs": -1, "schedules": [{ "cron": "0 2 * * *" }], "config": { "url": "http://ozon-seller-builder:8080/run?async=1", @@ -17,6 +18,7 @@ { "name": "yandex-market-pipeline", "runner": "http", + "timeoutMs": -1, "schedules": [{ "cron": "30 2 * * *" }], "config": { "handler": "pipeline",