ops: schedd 0.7.0 (cancelUrl-канал), dry-run мок-publish оба зелёные, ТЗ worker-cancel-url

- schedd.Dockerfile: daemon 0.6.0 → 0.7.0 (cancel-канал: cancelUrl в accepted-envelope)
- tasks.json: publish+githubDistro с dryRun:true у обеих тасок (мок-publish dry, ноль мутаций)
- compose: DRY_RUN=1 безопасный дефолт; ozon state персистентен (bind-mount, noop работает)
- тесты: мок-publish dry — yandex 13/13, ozon 10/10, GitHub/Gitea/verdaccio чисто
- баг cancel воспроизведён (воркер продолжает после cancel) → ТЗ worker-cancel-url обеим командам
This commit is contained in:
2026-08-20 23:49:51 +03:00
parent a5ee6c88a7
commit 5d57f49e80
6 changed files with 138447 additions and 10 deletions

View File

@@ -57,6 +57,10 @@ services:
UNISENDER_FROM: noreply@snolla.com
NPM_TOKEN: ${NPM_TOKEN:-}
GITHUB_TOKEN: ${GITHUB_TOKEN:-}
# мок-publish: verdaccio (npm) + Gitea (репо/релизы)
PUBLISH_REGISTRY: ${PUBLISH_REGISTRY:-}
PUBLISH_REMOTE_BASE: ${PUBLISH_REMOTE_BASE:-}
PUBLISH_GH_API_BASE: ${PUBLISH_GH_API_BASE:-}
volumes:
- ./data-ym:/app/data
ports:
@@ -76,8 +80,11 @@ services:
# внутренний крон не нужен — расписанием рулит sched (ozon 2:00).
# 31 февраля не наступает никогда: страховая от двойного запуска.
CRON_SCHEDULE: "0 0 29 2 *"
# персистентность state/output на хосте (фикс state-output-in-image-layer):
# /app/data — единая точка, bind-mount ./data-ozon ниже.
STATE_FILE: /app/data/state.json
LOCK_FILE: /app/data/pipeline.lock
OUTPUT_DIR: /app/data/output/typescript
# безопасный дефолт: DRY_RUN=1. Реальный мок-publish — только явным data.dryRun=false в таске.
DRY_RUN: "1"
BROWSER_CDP_URL: http://browser:9222
NTFY_URL: http://ntfy
@@ -89,10 +96,12 @@ services:
NOTIFY_EMAIL_TO: ${NOTIFY_EMAIL_TO:-}
GH_TOKEN: ${GITHUB_TOKEN:-}
NPM_TOKEN: ${NPM_TOKEN:-}
# мок-publish: verdaccio (npm) + Gitea (репо/релизы) — без выхода в npmjs/github.com
PUBLISH_REGISTRY: ${PUBLISH_REGISTRY:-}
PUBLISH_REMOTE_BASE: ${PUBLISH_REMOTE_BASE:-}
PUBLISH_GH_API_BASE: ${PUBLISH_GH_API_BASE:-}
volumes:
- ./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: