What does a CI pipeline health dashboard show in Metabase?
A CI pipeline health dashboard shows whether builds pass, how long they take, and which tests waste the team's time. It's built from run history synced from tools such as Jenkins, CircleCI, Buildkite, and GitHub Actions.
What does a CI pipeline health dashboard look like?
Here's the layout this guide builds: pass rate and duration at the top, then the reliability and speed trends across the week, then the pipelines, jobs, and tests actually responsible for the failures. Read it when CI feels slow or flaky and you need to know which part to fix first.

Which cards belong on a CI pipeline health dashboard?
- Build success rate by week on the main branch (line)
- Failed builds by pipeline (bar)
- Median and p95 pipeline duration by week (line)
- Queue time vs. run time (stacked bar)
- Flaky tests ranked by failure rate (table)
- Builds per day (bar)
What data does the dashboard need?
pipeline_runsat run grain — pipeline, branch, result,queued_at/started_at/finished_at, and duration.- Optional
test_resultsat test grain, for the flaky-test ranking. - Synced from Jenkins, CircleCI, Buildkite, Azure DevOps Pipelines, GitHub Actions, or GitLab CI into a database or warehouse.
How do you build it?
- Sync run history into
pipeline_runs— Metabase reads databases, not CI tools directly, so land the data with an ETL connector or the provider's API. - Keep all three timestamps so queue time and run time stay separable — the two problems have different fixes.
- Filter headline cards to the main branch; feature-branch failures are the system working, not a health problem.
- Build the success-rate and duration trends first, then add the flaky-test table once
test_resultsis flowing.
Example card SQL
SELECT
DATE_TRUNC('week', started_at) AS week,
ROUND(
100.0 * COUNT(*) FILTER (WHERE result = 'success')
/ NULLIF(COUNT(*), 0), 1
) AS success_rate_pct,
ROUND(
(PERCENTILE_CONT(0.5) WITHIN GROUP (
ORDER BY EXTRACT(EPOCH FROM finished_at - started_at)
) / 60.0)::numeric, 1
) AS median_duration_min
FROM pipeline_runs
WHERE branch = 'main'
AND started_at >= CURRENT_DATE - INTERVAL '12 weeks'
GROUP BY 1
ORDER BY 1;Related
Metrics
Integrations
Dashboards
FAQ
What is a CI pipeline health dashboard?
What data sources feed a CI pipeline health dashboard?
pipeline_runs table with an ETL tool or the CI provider's API, then point Metabase at the result.Why split queue time from run time?
queued_at, started_at, and finished_at so you buy hardware only when hardware is the bottleneck.How do you find flaky tests with this dashboard?
test_results table and rank tests by failure rate on the main branch, where legitimate failures should be rare. A test failing 8% of runs while the code around it barely changes is flaky, and each retry it forces inflates duration and erodes trust in red builds. The flaky test rate tracks the aggregate; the ranked table names the individual offenders to quarantine or fix.