Skip to content
Exlogare
← Ко всем постам
Команда Exlogare monorepo CI/CD logs troubleshooting

Монорепозиторий: один pipeline, много пакетов — как читать CI-лог

Как разбирать CI-логи в monorepo: affected packages, workspace paths, matrix jobs, cache noise и почему важно понять не только что упало, но и какой пакет сломался.

В монорепозитории один pipeline может проверять десятки пакетов: frontend, backend, shared UI, SDK, infra modules. Когда он падает, фраза «CI красный» почти ничего не говорит. Нужно понять какой пакет, какой шаг и какой владелец.

Эта статья для команд, которые уже используют workspaces, Nx, Turborepo, pnpm, Bazel или просто большой репозиторий с несколькими сервисами.

Коротко: что усложняет monorepo

Affected packages — это набор пакетов, которых касается изменение. Workspace path — путь вроде packages/api или apps/web. Matrix job — один job, размноженный по версиям/пакетам/окружениям.

В monorepo лог часто шумит кэшем и параллельными задачами. Первичный вопрос: падение локализовано или ломает общий слой?

Что искать в логе

  • путь пакета: packages/billing, apps/web;
  • имя workspace/package;
  • task name: test, build, lint, typecheck;
  • matrix value: node version, OS, package name;
  • cache hit/miss;
  • общий файл: lockfile, tsconfig, Dockerfile, shared lib.

Типичные сценарии

1. Упал один leaf package. Обычно это изменение конкретной команды; RCA должен назвать путь и test case.

2. Упал shared package. Ошибка разъезжается по нескольким сервисам, но причина одна.

3. Кэш скрыл проблему. На одном runner всё зелёное, на другом dependency переустановилась и сборка упала.

4. Matrix умножила лог. Красная одна ячейка, но UI показывает общий failure.

Как не утонуть

Сначала найдите самый первый failed task, а не последний traceback. Затем сопоставьте путь с владельцем. Если лог смешанный, фильтруйте по workspace prefix или task id.

Где тут Exlogare

Для monorepo хороший RCA должен говорить не «pipeline failed», а «упал packages/api на typecheck после изменения shared type». Exlogare получает лог и возвращает короткое объяснение в MR/PR. Для подключения используйте generic ingest, GitLab CI или GitHub Actions.

Читайте также

Чеклист

  • Найдите workspace/package.
  • Найдите первый failed task.
  • Отделите shared layer от leaf package.
  • Проверьте cache hit/miss.
  • Смотрите конкретную matrix cell.
  • В RCA указывайте пакет и владельца, если это возможно.