<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/mesa-ci-and-the-power-of-pre-merge-testing-jw2xfm4l1" -->

---
title: Mesa CI and the power of pre-merge testing | daily.dev
description: Mesa, the open source 3D graphics library supporting OpenGL, Vulkan, and many GPU vendors, relies on a robust pre-merge CI system to sustain its rapid...
canonical: https://daily.dev/posts/mesa-ci-and-the-power-of-pre-merge-testing-jw2xfm4l1
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: Mesa CI and the power of pre-merge testing | daily.dev
og:description: Mesa, the open source 3D graphics library supporting OpenGL, Vulkan, and many GPU vendors, relies on a robust pre-merge CI system to sustain its rapid...
og:url: https://daily.dev/posts/mesa-ci-and-the-power-of-pre-merge-testing-jw2xfm4l1
og:image: https://api.daily.dev/og/posts/jW2Xfm4L1.png
og:image:alt: Mesa CI and the power of pre-merge testing
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Mesa CI and the power of pre-merge testing

**[Collabora Blog](https://daily.dev/sources/collabora)** · 8 min read · 0 upvotes · 0 comments

## Summary

Mesa, the open source 3D graphics library supporting OpenGL, Vulkan, and many GPU vendors, relies on a robust pre-merge CI system to sustain its rapid development pace. Developers must join the CI-OK group to access pipeline resources, and pipelines on forks are dormant by default to conserve infrastructure. The ci_run_n_monitor tool lets developers target specific test jobs without manually clicking through dependencies. When a merge request is opened, the pipeline narrows from ~250 jobs to ~85 relevant ones. To keep runtimes manageable, Mesa runs fractional test subsets and parallelizes jobs across CI farm machines globally, achieving an average pre-merge pipeline runtime of 34 minutes. This system enables many developers to contribute in parallel without bottlenecking on manual maintainer reviews.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://www.collabora.com/news-and-blog/blog/2024/10/08/mesa-ci-and-the-power-of-pre-merge-testing>

## Questions this post answers

### How long does a Mesa CI pre-merge pipeline typically take to run?

Mesa pre-merge pipelines average 34 minutes with a margin of plus or minus 15 minutes. The runtime varies by scope: changes affecting all of Mesa or the CI structure take longer, while small driver changes finish faster. To achieve this, Mesa runs fractional test subsets (e.g., one in six OpenGL ES 2.0 tests) and parallelizes jobs across CI farm machines globally.

_Contributors tracking Mesa CI performance and pipeline efficiency share findings on daily.dev._

### How does Mesa CI decide which jobs to run in a pre-merge pipeline versus a developer fork pipeline?

A developer's fork pipeline includes roughly 250 jobs from the entire Mesa project indiscriminately, while a pre-merge pipeline against the main repository narrows to only the relevant jobs — about 85 for an Intel driver change. This scoping is handled automatically when a merge request is opened, ensuring only essential jobs must pass before merging.

_Developers contributing to large open source projects with complex CI setups discuss patterns like these on daily.dev._

### What is the ci_run_n_monitor tool in Mesa and how do I use it?

ci_run_n_monitor is a command-line tool in the Mesa repository at bin/ci/ci_run_n_monitor.py that automatically starts a target test job and all its prerequisite jobs, without requiring manual clicks through the GitLab UI. For example, running it with --pipeline-url and --target iris-glk-deqp starts only the jobs needed for that specific test, producing a minimal pipeline focused on the developer's area of interest.

_Mesa contributors and open source CI engineers share tooling tips like this on daily.dev._

## Similar posts on daily.dev

- [Mesa 25.3 Unleashed: Revolutionizing Open-Source Graphics for Linux Power Users](https://daily.dev/posts/mesa-25-3-unleashed-revolutionizing-open-source-graphics-for-linux-power-users-9noeiyani) · Khronos · 0 upvotes · 0 comments
- [We halved our continuous integration pipeline](https://daily.dev/posts/we-halved-our-continuous-integration-pipeline-w7assusoy) · LeadDev · 0 upvotes · 1 comments
- [Intel's Jay Graphics Shader Compiler Now Passing Vulkan CTS With Xe2/Xe3 Hardware](https://daily.dev/posts/intel-s-jay-graphics-shader-compiler-now-passing-vulkan-cts-with-xe2-xe3-hardware-lspqxaxin) · Phoronix · 0 upvotes · 0 comments
- [Mesa 26.2.2 Enables Intel Nova Lake Graphics By Default](https://daily.dev/posts/mesa-26-2-2-enables-intel-nova-lake-graphics-by-default-em2rlwqbd) · Phoronix · 0 upvotes · 0 comments

---

Tags: [#cicd](https://daily.dev/tags/cicd), [#gitlab](https://daily.dev/tags/gitlab), [#mesa](https://daily.dev/tags/mesa)

[View this post on daily.dev](https://daily.dev/posts/mesa-ci-and-the-power-of-pre-merge-testing-jw2xfm4l1)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"Mesa CI and the power of pre-merge testing","url":"https://daily.dev/posts/mesa-ci-and-the-power-of-pre-merge-testing-jw2xfm4l1","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/mesa-ci-and-the-power-of-pre-merge-testing-jw2xfm4l1"},"datePublished":"2026-08-11T08:54:56.881Z","dateModified":"2026-08-11T09:05:34.922Z","description":"Mesa, the open source 3D graphics library supporting OpenGL, Vulkan, and many GPU vendors, relies on a robust pre-merge CI system to sustain its rapid...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/eeebe5becc8bc1fcff1d97faf305742d?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/eeebe5becc8bc1fcff1d97faf305742d?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"Collabora Blog","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"Collabora Blog","logo":"https://media.daily.dev/image/upload/s--ZGZ0FjqS--/f_auto,q_auto/v1786438306/logos/collabora?_a=BAMAMicg0","url":"https://daily.dev/sources/collabora"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/mesa-ci-and-the-power-of-pre-merge-testing-jw2xfm4l1","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":0},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"cicd,gitlab,mesa","timeRequired":"PT8M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Collabora Blog","item":"https://daily.dev/sources/collabora"},{"@type":"ListItem","position":3,"name":"Mesa CI and the power of pre-merge testing"}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/mesa-ci-and-the-power-of-pre-merge-testing-jw2xfm4l1#faq","mainEntity":[{"@type":"Question","name":"How long does a Mesa CI pre-merge pipeline typically take to run?","acceptedAnswer":{"@type":"Answer","text":"Mesa pre-merge pipelines average 34 minutes with a margin of plus or minus 15 minutes. The runtime varies by scope: changes affecting all of Mesa or the CI structure take longer, while small driver changes finish faster. To achieve this, Mesa runs fractional test subsets (e.g., one in six OpenGL ES 2.0 tests) and parallelizes jobs across CI farm machines globally. Contributors tracking Mesa CI performance and pipeline efficiency share findings on daily.dev."}},{"@type":"Question","name":"How does Mesa CI decide which jobs to run in a pre-merge pipeline versus a developer fork pipeline?","acceptedAnswer":{"@type":"Answer","text":"A developer's fork pipeline includes roughly 250 jobs from the entire Mesa project indiscriminately, while a pre-merge pipeline against the main repository narrows to only the relevant jobs — about 85 for an Intel driver change. This scoping is handled automatically when a merge request is opened, ensuring only essential jobs must pass before merging. Developers contributing to large open source projects with complex CI setups discuss patterns like these on daily.dev."}},{"@type":"Question","name":"What is the ci_run_n_monitor tool in Mesa and how do I use it?","acceptedAnswer":{"@type":"Answer","text":"ci_run_n_monitor is a command-line tool in the Mesa repository at bin/ci/ci_run_n_monitor.py that automatically starts a target test job and all its prerequisite jobs, without requiring manual clicks through the GitLab UI. For example, running it with --pipeline-url and --target iris-glk-deqp starts only the jobs needed for that specific test, producing a minimal pipeline focused on the developer's area of interest. Mesa contributors and open source CI engineers share tooling tips like this on daily.dev."}}]}
```

