Guidance for Monorepos

In this guide we describe how to configure Faros for monorepos to get metrics collected and computed correctly.

Faros only collects metadata on repositories which are Included.

As described in the section on Managing Apps, Repos and Boards, navigate to Organization / Repositories. Select the repositories that you would like to include, and either select Include all, or assign the repositories to teams by dragging them to the appropriate team. Repositories that are included but not assigned to a specific team will simply be categorized as Unassigned. A monorepo could be left as Unassigned, or arbitrarily assigned to one of the relevant contributing teams in the organization.

In the default dashboards, attribution of metrics related to source control data, deployments, or lead-time is based on who contributed the change and which team they belong to. Therefore a metric like PR cycle time, for instance, will automatically be attributed to the appropriate teams based on the PR authors and the teams to which they belong. This is true even if the PRs are from a monorepo that multiple teams contribute to.

Within the context of a particular scrum team, a further breakdown of deployment and lead time metrics by applications can be found in the Team DORA Summary dashboard:


By default, all changes get attributed to all the applications that get deployed from the mono-repo. For more fine-grained attribution, there needs to be a consistent approach to identify which PRs map to which applications, e.g., based on PR labels, or PR folder structure. If such a consistent approach exists, then a custom flow can be created and incorporated in a custom chart/dashboard to precisely break down metrics by application.

Instrumenting a Monorepo

Instrumenting a monorepo with Faros CI/CD events is very similar to instrumenting any other application. Any time the code from your monorepo is built you should send a CI event to Faros denoting the code version being built. When an application from the monorepo is deployed, you should send a CD event specific to that application. If more than one application is deployed within the CD process of your monorepo, you should send multiple CD events, one for each deployed application.