I’m having a setup where services need to run on (a lot of) different machines, and a single build pipeline which makes use of these services.
I’m currently having some logic that kills all service pipelines after the build pipeline either succeeded or failed, but that is not very reliable.
The easiest would be to mark the service pipelines as “service” (similar to service steps), which would then just be killed after “normal” pipelines succeed or fail. They’d have their exit code ignored.
Does that make any sense? Any suggestions on how to do this with vanilla drone?
Similar to kubernetes operators, drone supports custom resource definitions and custom resource execution. Therefore, anyone can create a pipeline type and runner to satisfy their unique use case.
Unfortunately, creating a new pipeline type and runner is not well-documented yet, since it is a relatively new feature, so you would have to largely spend some time learning the low level details of how runners work. We provide a starter project to create your own custom runner here:
The runner will use the kind and type parameter to pull down workloads. When you create a custom runner you would define your own type, for example:
When you create the runner, you are then responsible for defining the remaining yaml syntax, parsing the yaml, performing any defined tasks (e.g. executing steps, starting services, etc). So this is definitely possible using vanilla Drone as long as you have a (new) runner that is capable of recognizing the pipeline type and executing it.