Skip to content
Exlogare
← Back to all posts
by Exlogare Team monorepo CI/CD logs troubleshooting

Monorepo CI: one pipeline, many packages — how to read the log

How to triage CI logs in a monorepo: affected packages, workspace paths, matrix jobs, cache noise, and why you need the package name, not only a red pipeline.

In a monorepo, one pipeline may validate dozens of packages: frontend, backend, shared UI, SDK, and infrastructure modules. When it fails, “CI is red” tells you almost nothing. You need to know which package, which step, and which owner.

This guide is for teams using workspaces, Nx, Turborepo, pnpm, Bazel, or simply a large repository with multiple services.

Monorepo primer

Affected packages are the packages touched by a change. A workspace path is a path like packages/api or apps/web. A matrix job is one job expanded across versions, packages, or environments.

Monorepo logs are often noisy with cache and parallel tasks. The first question is: is the failure local to one package, or did it break a shared layer?

What to search for

  • package path: packages/billing, apps/web;
  • workspace/package name;
  • task name: test, build, lint, typecheck;
  • matrix value: Node version, OS, package name;
  • cache hit/miss;
  • shared file: lockfile, tsconfig, Dockerfile, shared lib.

Common scenarios

1. One leaf package failed. Usually owned by a specific team; RCA should name the path and test case.

2. A shared package failed. The error appears in many services, but the cause is one shared layer.

3. Cache hid the problem. One runner is green, another reinstalls dependencies and fails.

4. Matrix multiplied the noise. Only one cell is red, but the UI shows a broad failure.

How not to drown

Find the first failed task, not the last stack trace. Then map the path to an owner. If the log is mixed, filter by workspace prefix or task ID.

Where Exlogare fits

For monorepos, a useful RCA should say not “pipeline failed,” but “packages/api failed on typecheck after a shared type changed.” Exlogare receives the log and posts a concise explanation in the MR/PR. Use generic ingest, GitLab CI, or GitHub Actions.

Related reading

Checklist

  • Find the workspace/package.
  • Find the first failed task.
  • Separate shared layer from leaf package.
  • Check cache hit/miss.
  • Inspect the exact matrix cell.
  • Include package and owner in the RCA when possible.