Add configurable pipeline priority

Everyone can contribute. Help move this issue forward while earning points, leveling up and collecting rewards.

Problem to solve

When I have a high priority pipeline that needs run/deployed (hotfix, priority feature, etc.) the process to get it to the front of the line is very manual (cancel all the existing pipelines) or undesirable (use ci_skip until I really want a build to run). I want an easier way to get a pipeline to "skip the line" and get run right now so priority/break fix changes can deploy next.

Description

I am using gitlab ci and I often have the following workflow for critical bugfixes

  • Create an Issue for a bug
  • Create a new branch from master for the bug and fix the issue
  • Publish the branch to my gitlab instance --> triggers a build
  • Create a merge request for the issue branch into master
  • Accept merge request immediatly --> triggers a build
  • Cherry Pick MR into production version with Cherry-pick this merge request in a new merge request --> triggers a build
  • Accept merge request immediatly --> triggers a build
  • Create a new Tag from production branch --> triggers a build

My build is configured to automatically deploy tags to our company website after sucessfull build / test.
I have only one runner, which is configured to run one build at a time. If I am using the above workflow, it can take a long time until my project is deployed.

I know I could use [ci_skip] or, as I am doing now, cancel the running builds to speed up the process, but I would like to keep the build passed / failed record for the builds.

Suggestion

It would be great if I just could browse to the Pipelines page, find the pipeline for the tag and configure priority for the pipeline (via a link or drop down: Priority Low/Normal/High)

The build server should

  • run builds for high priority pipelines first
  • run builds for normal priority pipelines, if there is no pending build for a high priority pipeline
  • run build for low priority pipelines, if there is no pending build for a normal priority pipeline

A bonus would be to automatically add tags to the build steps priority_low / priority_normal / priority_high
This would allow to configure runners for only picking up high priority builds.

Use Cases

  • I have a high priority pipeline I want to run
  • I always want pipelines to run to completion before a pipeline starts behind it
Edited by 🤖 GitLab Bot 🤖