Hey,
like some others we also had a monorepo that we wanted to build with drone. We have create a drone plugin that walks up a directory tree and combines all drone ci files to a single multi-machine build.
To create the individual .drone.yml files we use Drone’s jsonnet plugin and a Makefile:
TARGETS = $(shell find -name .drone.json)
LINKS = $(TARGETS:.json=.jsonnet)
DRONE = $(TARGETS:.json=.yml)
all: links drone
clean:
rm $(LINKS) $(DRONE) || true
links: $(LINKS)
$(LINKS):
ln -s $(dir $(abspath $(lastword $(MAKEFILE_LIST))))/.drone.jsonnet $@
drone: $(DRONE)
$(DRONE):
drone jsonnet --source=$(@:.yml=.jsonnet) --target=$@
In each directory we want a .drone.yml
we place a .drone.json
with some configuration options. The .drone.jsonnet
will be run against each of the json files.