How to route a pipeline to a specific runner?

It is possible to route pipelines to execute on a specific group or runners as described here. The typical use case is you want to route pipelines to machines with gpus or additional memory or compute. However, we are sometimes asked How to route pipelines to a specific runner?

This is our recommendation based on how Drone was designed:

Drone is architected in such a way that runners are meant to be treated as pools of shared resources where a pipeline can run on any node in the pool. Drone is not architected to allow routing pipelines to individual nodes. Drone treats runners are cattle, not pets. If you are trying to route pipelines to individual, named runners you are treating your runners like pets, which would be considered an anti-pattern in the Drone world.

I hesitate to make generalizations, but this question is most frequently asked when someone wants to execute a deployment step. It is my understanding in the Jenkins world, it was common practice to install a Jenkins agent on your production machine to facilitate deployment to that machine. In the Drone world, the recommended approach is to architect remote deployment (ie using ssh, sftp plugins, etc), so that you can deploy from any machine in your Drone cluster.