Add configurable pipeline priority
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