Skip to content

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 Screenshot 2024-03-27 at 10.24.37 AM.png Screenshot 2024-03-28 at 4.15.20 PM.png 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. Screenshot_2024-03-27_at_10.26.50_AM Screenshot_2024-06-28_at_3.03.52_PM 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. Screenshot_2024-03-27_at_10.29.25_AM Screenshot_2024-03-27_at_10.29.38_AM 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 . Screenshot_2024-03-27_at_10.30.16_AM Screenshot_2024-03-27_at_10.30.33_AM Stacked column chart with legend interaction Postgres
Resources 🔗

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

  1. GraphQL: Refactor `PipelineAnalytics` and `Pipe... (#479285 - closed)
    1. Add a total field of type PipelineAnalyticsPeriod to PipelineAnalytics
    2. Add alpha time filters to PipelineAnalytics type
    3. Change PipelineAnalyticsPeriod type to have label and a count field
  2. GraphQL: Add support to compute mean duration o... (#454310 - closed)
    1. Rename CiJobsDurationStatistics to CiDurationStatistics for reuse
    2. Add durationStatistics field to PipelineAnalyticsPeriod type

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.

Edited by Darren Eastman