GitLab CI Insights - New CI/CD Analytics view for projects (Limited Availability)
Note
The new CI/CD Analytics view depends on Clickhouse for the database layer. If you do not configure Clickhouse for your self-managed GitLab instance, then the legacy CI/CD Analytics view will be displayed instead of the new option.
Overview
The improved GitLab CI view provides developers with metrics and data visualizations in the GitLab UI for critical CI/CD pipeline performance and success rates. As these metrics are available within the project repository, development teams have immediate access to the data they need to understand at a glance the health and efficiency of the software development process for a specific project.
The new view includes the following metrics, charts and filters
CI/CD pipeline metrics:
- Total pipeline runs
- Median duration
- Failure rate
- Success rate
CI/CD trend charts:
- 50th & 95th percentile pipeline duration over time (week, last 30,90,180 days)
- Pipeline status (successful, failed, other)
Report Filters:
- Pipeline source
- Branch
Problem to solve
The Project CI/CD analytics page contains a lot of data that is confusing for the user to understand and identify next steps with when evaluating the health of their pipeline. See more issues that were identified in gitlab-design#2439 (closed). Based on problem validation, we need to refactor the page to allow the user to ingest the data meaningfully and give them an easy way to identify pipeline health.
JTBD we are solving for: When I am managing continuous integration of code at scale, I want to understand the pipeline health, so I can successfully resolve and prevent issues from occurring.
Intended users
- Software developers
- Platform engineers
- DevOps engineers
User experience goal
The user should be able to quickly understand how healthy their pipeline is, specifically focusing on status and duration.
Proposal
Acceptance criteria
Criteria | Current UI | With this proposal | Component needed | Minimal required database engine |
---|---|---|---|---|
Update single stats on the page | ![]() |
![]() |
Single stat | Clickhouse |
Move individual filters on graphs to be universal filters on the page. Add a new filter for source . Add a new filter for branch . |
![]() |
![]() |
Combobox | Clickhouse |
Update page title. | CI/CD analytics |
Pipelines |
N/A just text. | N/A |
Update duration chart to be a line graph and to show p50 and p95. Use the color system for categorical data for colors on the graph. | ![]() |
![]() |
Line chart with legend interaction | Clickhouse |
Update status graph to include failures, successes, and other (cancelled + skipped) runs. Use custom colors for the graph, successful=dv-green-500 , failed=dv-magenta-600 , other=dv-blue-500 . |
![]() |
![]() |
Stacked column chart with legend interaction | Postgres |
Resources |
- Designs in design assets
- Figma file: https://www.figma.com/file/ZjFKeXSfmG2KrWPeb47Slt/Runner-Fleet-Metrics?type=design&node-id=1084%3A2221&mode=design&t=Rfi3JJaT86rlgbvI-1
Available Tier
- GitLab Free
Feature Development Stage
Limited availability
-
Are ready for production use at a reduced scale. -
Available on one or more GitLab platforms: GitLab.com -
Available on one or more GitLab platforms: GitLab Self-Managed (Certain metric charts depend on Clickhouse -
Available on one or more GitLab platforms: GitLab Dedicated (Certain metric charts depend on Clickhouse -
Are fully supported and documented. -
Have a complete user experience aligned with GitLab design standards.
Feature Usage Metrics
What does success look like, and how can we measure that?
Measuring adoption:
- we track visits to the page today, so we'd want to see an increase.
Measuring if the changes build a better experience:
- Through a feedback banner (tracked in a separate issue). This could also help us figure out which metrics are most important to add next.
Proposed API layout
{
project(fullPath: "rf2-top-level-group-1/rf2-group-1.1/rf2-group-1.1.1/rf2-project-1-1-1-1") {
pipelineAnalytics(finishedAfter: "2023-03-28", finishedBefore: "2024-03-28", source: PIPELINE, branch: DEFAULT) {
# Single stat
aggregate {
# label # Not needed here, would contain formatted date range
count
successCount: count(status: SUCCESS) # Success rate can be computed from successCount / count
failedCount: count(status: FAILED) # Failure rate can be computed from failedCount / count
durationStatistics {
p50
}
}
# Pipeline charts
timeSeries(period: MONTH) {
label # Timestamp of beginning of period
count
successCount: count(status: SUCCESS)
failedCount: count(status: FAILED)
durationStatistics {
p50
p95
}
}
}
}
}
Changes required in backend
-
GraphQL: Refactor `PipelineAnalytics` and `Pipe... (#479285 - closed)
- Add a
total
field of typePipelineAnalyticsPeriod
toPipelineAnalytics
- Add alpha time filters to
PipelineAnalytics
type - Change
PipelineAnalyticsPeriod
type to havelabel
and acount
field
- Add a
-
GraphQL: Add support to compute mean duration o... (#454310 - closed)
- Rename
CiJobsDurationStatistics
toCiDurationStatistics
for reuse - Add
durationStatistics
field toPipelineAnalyticsPeriod
type
- Rename
This page may contain information related to upcoming products, features and functionality. It is important to note that the information presented is for informational purposes only, so please do not rely on the information for purchasing or planning purposes. Just like with all projects, the items mentioned on the page are subject to change or delay, and the development, release, and timing of any products, features, or functionality remain at the sole discretion of GitLab Inc.
This page may contain information related to upcoming products, features and functionality. It is important to note that the information presented is for informational purposes only, so please do not rely on the information for purchasing or planning purposes. Just like with all projects, the items mentioned on the page are subject to change or delay, and the development, release, and timing of any products, features, or functionality remain at the sole discretion of GitLab Inc.
This page may contain information related to upcoming products, features and functionality. It is important to note that the information presented is for informational purposes only, so please do not rely on the information for purchasing or planning purposes. Just like with all projects, the items mentioned on the page are subject to change or delay, and the development, release, and timing of any products, features, or functionality remain at the sole discretion of GitLab Inc.