Прогон на push в dev/main дублировал проверку, уже сделанную на PR, и жёг
по ~47 мин на нагруженном раннере. Оставляем только pull_request (main, dev):
ветки в эти ветки попадают через PR, который и валидируется; релиз main
триггерит отдельный release.yml.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Конфиг ноды через docker cp, нода в сети job-контейнера по IP, Redis по имени сервиса. Полный конвейер зелёный (integration 1 passed против живой ноды + SHiP + Redis).
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Раннер — docker-in-docker (docker.sock хоста в job-контейнере), поэтому
пути bind-mount (-v) резолвятся на ФС хоста: ни mktemp, ни workspace демону
не видны → монтировался пустой каталог, nodeos падал с 'genesis file does
not exist'. Конфиг теперь кладём в контейнер через docker cp (tar по API,
от путей хоста не зависит), config-dir=/mnt/cfg (docker cp не создаёт
родителей, а /mnt/dev/config в образе нет). Проверено локально: chain API
get_info + SHiP 101 Switching Protocols.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
- tsup.config.ts: добавлен 3-й entry для src/workers/deserialize.worker.ts (CJS) → dist/deserialize.worker.cjs
- tsup: main index и CLI переведены на ESM-only (TLA в ioredis/piscina импортах несовместим с CJS)
- package.json exports/main/bin: указывают на .js (ESM) вместо .cjs
- WorkerPool.resolveWorkerPath(): ищет worker в dist/ относительно src/ при запуске из источников (нужно для integration тестов)
- ci.yml: добавлен step build @coopenomics/parser перед integration test — worker .cjs должен существовать
- добавлен node-config/config.ini (SHiP на 8080) + genesis.json
- services: blockchain заменён на docker run с монтированием config-dir и командой /usr/local/bin/nodeos
- добавлен вывод docker logs blockchain при failure для диагностики
- test/integration/parser.integration.test.ts: beforeAll поднимает блокчейн (preactivate → eosio.boot → features → eosio.token), стартует Parser + ParserClient, тест пушит transfer и ждёт событие
- test/integration/helpers/chain.ts: ChainHelper для деплоя контрактов и push action через @wharfkit/antelope + /v1/chain/abi_json_to_bin
- test/integration/contracts/: скомпилированные eosio.boot.wasm и eosio.token.wasm из boot/contracts/build
- ci.yml: добавлен service dicoop/blockchain:v5.1.0-dev (порты 8888+8080), health-check, CHAIN_URL/SHIP_URL env vars
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- удалён @eosrio/node-abieos из ship-reader/package.json: нативный модуль исключался на CI из-за несовместимости платформы, не попадал в lockfile и ломал --frozen-lockfile
- AbieosDeserializer теперь пробует @coopenomics/abieos, затем @eosrio/node-abieos (оба опциональны, устанавливаются вручную)
- @types/node исправлен с ^3.4.0 на ^20.3.0 (корректная версия)
- pnpm/action-setup обновлён с v3 на v4 во всех jobs (Node 20 deprecation)
- pnpm-lock.yaml регенерирован без abieos specifier
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>