ci: make pipeline interruptible on new commit

We're a team of researchers primarily from the University of Vienna, and we're studying techniques to reduce the resource consumption of CI/CD pipelines to improve their efficiency (and compute costs).

We have analyzed all 500 pipelines in this repository between November 2025 and May 2026 and noted considerable overhead due to pipelines running concurrently on the same reference (same branch or tag). To avoid such resource "waste", GitLab CI/CD offers the interruptible on new commit functionality. With this functionality, when a pipeline is running, and a new pipeline is triggered for the same reference, the previous pipeline is interrupted (canceled), since it's related to old changes. In practice, jobs actively running are interrupted, while jobs not yet started are skipped for the old pipeline.

Since it's preferable not to interrupt all jobs (deployments, etc.), we have analyzed, to the best of our abilities, which jobs make changes outside the CI environment and configured them to not be interrupted in any scenario (interruptible: false).

Some repositories still allow certain types of deployments (for example, Docker pushes, pages) to be interrupted, so you could also extend it to more jobs than what we did.

Considering the jobs we currently believe to be interruptible, from our analysis, we can see that:

  • 37 pipelines overlap (7.4% of all pipelines run). For example: [a] with [b].
  • 180 jobs could have been interrupted/skipped (5.03% of all jobs run)
  • 16.11 hours of compute time could have been spared (6.3% of all compute time)

If you wish to check how we run our analysis, we can share the script and dataset with you.

Of course, this comes at the cost of "lost feedback" from the interrupted jobs. Therefore, if you think certain jobs always provide necessary feedback, you could configure these not to be interrupted. In addition, if you prefer, you could globally disable this functionality on specific conditions (for example, on tags).

On a last note: to use this functionality, you should also go in the repository under "Settings > CI/CD > General pipelines > Auto-cancel redundant pipelines" and tick the checkbox, if this is not active yet.

More relevant documentation: [1], [2].

Let us know if you'd like us to improve on the current changes! 😄

Merge request reports

Loading
Loading