Have any of you ever set up a CI runner that effectively delegated to another machine awakened on-demand via Wake-On-LAN?

I think I've got a good pattern to follow using GitLab's libvirt VM instructions. Use a prepare step that would normally start a VM, wait for IP & SSH to instead send the WoL packet… and await IP & SSH.

Machine boots using some kind of ephemeral filesystem deleted on shutdown. The run step just runs whatever via ssh.

Job cleanup schedules shutdown for 10 min later.

Prep step checks connectivity and disrupts shutdown if it's online. This saves repeated reboots during active dev sessions or a series of jobs.

Run the gitlab-runner on a container on my Home Assistant server that's just a Raspberry Pi already always on.

This would enable decommissioning a 2014 Mac Mini I use primarily as a gitlab runner, and it's idle probably 23h 30m daily on average. 6W idle says Apple, but I observe around 10W.

I've got an older gaming rig ca. 2019 with an hexa-core AMD 2600X, 16 GB RAM, an PCIe gen 3 NVME SSD that's been sitting off for a year or so.

I'll bet it can build this Rust app in ~2–3 minutes instead of the ~8–10 it takes the 2014 Mac Mini with its dual-core i5, 8 GB RAM, and SATA SSD.