Job prioritization
By default, jobs are dispatched (taken from the queue and assigned to an agent) on a first-in-first-out basis. However, job priority and pipeline upload time can affect that order.
Prioritizing specific jobs
Job priority
is 0 by default, you can prioritize or deprioritize jobs by assigning them a higher or lower integer value. For example:
Job priority is considered before jobs are dispatched to agent queues, so jobs with higher priority are assigned before jobs with lower priority, regardless of which has been longest in the queue. Priority only applies to command jobs, including plugin commands.
Job dispatch precedence
Jobs are dispatched in the following order:
- Job priority in descending order, highest number to lowest (
priority
) - Date and time scheduled in ascending order, oldest to most recent (
scheduled_at
). Note that jobs inheritscheduled_at
from pipeline upload jobs, meaning jobs that are uploaded by a pipeline in an older build will be dispatched before builds created after that, and the value ofscheduled_at
cannot be modified. - Upload order in pipeline, first to last.
- Internal id in ascending order, used as a tie breaker if all other value are the same, meaning older jobs will be dispatched first.
Example
Here's an example of prioritizing jobs running on a default branch before pull request jobs: