Order and limits

How jobs are placed across your providers, what happens when one cannot start a job, and how to cap jobs at once and monthly spend.

With more than one provider, Runners shows them as a list. Drag to reorder. The list is the rule for where jobs go.

How a job is placed

A job goes to the first provider in the list that can run its machine and has room. It moves on to the next when:

  • the provider cannot run that machine (too large, no GPUs, no Windows);
  • the provider is at its limit of jobs at once, or over its monthly budget;
  • the provider cannot start the machine now: AWS has no spot machine for it, or starting it failed.

When every provider that could run it is full, the job waits and is tried again as room appears. When none can run it at all, it fails at once on GitHub with the reason.

AWS on-demand is its own row

AWS appears twice in the list: AWS is its spot machines, and AWS on-demand its on-demand ones. On-demand starts right under AWS, so a job that finds no spot machine gets an on-demand one.

You decide what happens instead:

  • Move it. Put Cloudflare between the two, and a job with no spot machine goes to Cloudflare first.
  • Cap it. Give on-demand its own monthly budget.
  • Turn it off. Then a job that only AWS can run waits for a spot machine.

Limits

Each provider’s settings have two limits:

LimitWhat it doesDefault
Jobs at onceWhen this many run there, the next job goes to the next provider or waits.20
Monthly budgetWhen this month’s estimated spend reaches it, jobs go to the next provider.none

Spend is estimated the way the dashboard shows it, and includes the time a runner waits for its job. A budget on AWS counts its spot machines; AWS on-demand has its own.

Keeping a job on one provider

A job that moves to another provider runs in that provider’s environment: a different image, and no access to a network of your own on AWS. If a workflow depends on one provider, name it in the label:

runs-on: superci-aws

That job runs on AWS only (spot, then on-demand), and waits or fails rather than going elsewhere.