(address . guix-patches@gnu.org)
Hello,
Here's a patch adding remote build support to Cuirass, as presented
during Guix Days[1]. The concept is the following:
* Cuirass talks to a "remote server" instead of the "guix-daemon" to
build derivations when the "--build-remote" option is passed.
* The "remote server" is advertised using Avahi. It queues the received
build requests. It also starts a "publish" server.
* The "remote workers" discover the "remote server" using Avahi, connect
to it and request some builds. The "remote server" publish server is
added to the workers "guix-daemon" substitute urls list.
* On build completion, the "remote server" downloads the build outputs
as nar and narinfo files from the worker "publish" server and store them
in a cache directory. It can also add them to the store if the
"--add-to-store" option is passed.
* Cuirass is notified by the "remote server" when a build starts, fails
or completes and can update its database accordingly.
* The communication between Cuirass, the "remote server" and the "remote
workers" is done by sending SEXP over ZMQ.
This is still a bit rough on the edges, but I have tested it on berlin
spawning ~30 workers and building ~10K derivations, it seems to work
fine.
The corresponding patch and an architecture overview diagram are attached.
Thanks,
Mathieu
[1]: