"Loose" filtering of agents

I’ve seen it’s possible to route jobs to specific agents using labels. However, that is too strict for me, I’ll explain why.

I have 3 runners:

  • linux/x86_64
  • linux/arm64 (native)
  • linux/arm64 (emulated, uses qemu-user-static)

In general, I want to select runners by platform (and the documented platform pipeline section looks good to me for this part), and arm builds can be picked up by either arm runner.

However, I’d like to run some builds only on native runners. The documentation clearly says that if labels are defined for a pipeline, they will be picked up by a runner only if all the labels defined by a runner match the ones defined in the pipeline.
Therefore I expected that if I don’t define any labels in the pipeline, any runner would pick it up, so I added qemu:yes/no labels to all my runners.

However, pipelines with no labels defined aren’t being picked up by any runner.

How can I get this behavior?

I bet your issue is with yaml, not drone. “yes” and “no” are booleans in yaml, so if you are using them as strings you need to be extra careful about quoting.

You can see it here: https://yaml-online-parser.appspot.com/ just paste in

  - tags:
    - yes
    - no

and get

    "tags": [