CI
Как подключить dma check в пайплайн — GitHub Actions, JSON, SARIF.
dma check — единственная проверка, которая должна блокировать слияние. Линтеры в CI полезны, но без CLI вы не увидите циклы и предикаты входящих рёбер.
Минимальный шаг
npx @derived-modular/cli check .Код выхода 1 — есть архитектурные нарушения. Код выхода 2 — проблема окружения (нет src/, битый tsconfig).
Добавьте команду в пайплайн после install и до deploy.
GitHub Actions
name: Architecture
on:
pull_request:
push:
branches: [main]
jobs:
dma:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 22
- run: npm ci
- run: npx @derived-modular/cli check . --format jsonДля bun:
- uses: oven-sh/setup-bun@v2
- run: bun install --frozen-lockfile
- run: bun x @derived-modular/cli check .JSON для скриптов и агентов
npx @derived-modular/cli check . --format json > dma-report.jsonОтчёт стабильный (version: 1) — удобно парсить в custom CI, ботах, AI-агентах.
SARIF для GitHub Code Scanning
npx @derived-modular/cli check . --format sarif > dma.sarifЗагрузите артефакт в Code Scanning — нарушения появятся во вкладке Security рядом с другими анализаторами.
Что запускать вместе
| Шаг | Команда | Блокирует слияние? |
|---|---|---|
| Архитектура (обязательно) | npx @derived-modular/cli check . | Да |
| Линт (опционально) | eslint . / biome check | По желанию команды |
| Эволюция (опционально) | npx @derived-modular/cli doctor . | Нет (код выхода 0) |
doctor в CI имеет смысл только как информационная задача — сигналы роста, не блокировка.
Монорепо
С корня workspace (без src/) можно найти и проверить все DMA apps одним вызовом:
npx @derived-modular/cli check .
npx @derived-modular/cli check --roots apps/web,apps/adminИли per package / turbo filter. Подробнее — Монорепо.
Примеры в репозитории DMA
Все examples проходят dma check. В CI самого монорепо DMA:
- name: DMA-check examples
run: bun run dma-check:examplesТипичные ошибки
| Проблема | Решение |
|---|---|
exit 2, нет src/ / нет корней | Путь к app, или корень монорепо с discoverable apps / --roots |
| Алиасы не резолвятся | Проверьте tsconfig.json paths в корне приложения |
| CI зелёный, локально падает | Версии CLI, разный cwd, незакоммиченные файлы |