Background
Having 4 permanent runners is cool and all, but we need to think about:
What happens if we need more runners at some point in the future - are we going to register these all individually? What about when PATs expire, we would need to go through each runner and reconfigure them, as noted in https://github.com/ACCESS-NRI/build-ci/issues/5#issuecomment-1760743342
What happens if we need more runners during a job? For example, a highly-parallelized job.
What happens if we don't need all the runners at any one time? There isn't much point in keeping them all listening.
Background Having 4 permanent runners is cool and all, but we need to think about:
The Solution Utilize runners that are ephemeral (the runner is created and destroyed as needed) and autoscaling (the amount of runners at any one time conform to the workload). We can achieve this using Kubernetes and a GitHub-created runner controller called the Actions Runner Controller. See here: https://docs.github.com/en/actions/hosting-your-own-runners/managing-self-hosted-runners/autoscaling-with-self-hosted-runners
Considerations
Tagging @jo-basevi as she has had some Kubernetes experience
References ACCESS-NRI/build-ci#5