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",