[Nix-dev] Hydra Building PRs

Graham Christensen graham at grahamc.com
Sat Jan 28 14:20:48 CET 2017


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

Hello everyone,

A couple weeks ago I created https://prs.nix.gsc.io/, a Hydra server
which builds every PR. Every PR will exist at
https://prs.nix.gsc.io/jobset/nixos/pr-PRNUMBER.

It features:
 - a web-hook, which means:
 - the moment a PR is created, the jobset is created on this hydra
 - every time a PR is updated, the jobset is triggered
 - every time there is a commit to master, the master jobset is
   triggered

Non-feature:
 - I haven't published the public key to the binary cache, because that
   would be very expensive for me to pay for. I am personally paying for
   the binary cache storage. Please don't use the binary cache results.

The entire system is open source, publicly available at
https://github.com/grahamc/hydra-prs/.

HOW
- --------

The build infrastructure is _very_ generously donated by Packet.net, who
lease dedicated bare metal servers by the hour. Right now we have about
250 cores across 30 servers.

This is still a trial run, though, so the number of systems we get can
and will change.

In exchange for this hardware, I've been working to add NixOS support to
their platform. I'm also wanting to make NixOps have built-in support
for deploying to their hardware.

FUTURE (SOON)
- --------

Packet.net is also one of the only hosting companies I know of which
rents Cavium ThunderX ARMv8s, and they're very interested in our
supporting this architecture. Soon, with the help of Dezgeg,
prs.nix.gsc.io will also building PRs against ARMv8.

After that works, I've spoken with Rob, and it sounds like
hydra.nixos.org will gain the ability to run ARMv8 builds, too.

FUTURE (LONGER TERM)
- --------

Ideally, I think everyone would like this to become part of
hydra.nixos.org, Eelco included.

The current state of the system has a couple of patches to Hydra, plus a
PHP webserver calling CLI utilities to create and trigger jobsets.
Having this integrated with hydra properly would be way more ideal.

Interpreting the results is a bit of a open question. Sometimes a PR
will cause unrelated packages to start passing or failing, which is very
mysterious. This seems less bad than Travis (which fails with any PR
bigger than a light breeze...) but will still be confusing for people
who aren't deeply familiar with Hydra.

Other interesting things we may want to implement is setting build
statuses on GitHub.com, or a bot that posts comments.

I would be very, very happy if people contributed and improved the
system.

- --

Thank you,
Graham Christensen
-----BEGIN PGP SIGNATURE-----

iQIcBAEBCAAGBQJYjJqwAAoJEAYSHTZv6UNcZSoP/2pXbxcuetM212X8Rld2BFb1
3iNOWN/Kr1PzBSxRyWR/naOt6vA2gs1qv8GpXWCn4QTqlyxTk3QtWY7o9tQ1rJ/K
rdMct5U8brjrUvOZMNDFhLyrYJSDEhV2YC2GhU4co7xPcGpzQnGi+6YiMLKEi6HV
wzx34Qoy5MnUp+ZAw8yjf6uTWmS1nsMtisn+tE59pzqeikbhfZ9SLaTtkyCpzTDN
ZtoAMifjsuTSlxsabmvY1sew3FEEVWhYqczaKU2IklUgAgeVuXVA5/rWQSWVaMc2
hZOEZTOnvZiGks3hsfNlrI49tb+3Y4kUV2efGmLZULJ/wr00oohabnquXg3rc8NF
LS//PPpPfQECxr8HOlk93kvW8Lwy8jl51UjdOA01GfdwBmsamTrqpD5qBlJD+Pd2
KpXhIwtb8ftdpJi/nFq5TNm4XSUMbcztEA6xXN7of2JGaVqLOY/sJ0xuRDbGhuAC
yd8EdfQvUG6bbm5NGmg0gAstCPi8KqdD0nGBIveSnEomintMP2tbIR6wJ1ah1Sug
0mYT+76d/JucxFYQPi5GNGzOfLqyqQwDHB8EGbtJRpW5brR+b5hvSLPZJy5EeDV9
asn3m7Cjrz3mClnExxIRAEOggmzPmUfFqaUS0mwXOonaEbHLWAtU1+32VRirgKJu
rAHzDlp/avOCPVDM797z
=CRhX
-----END PGP SIGNATURE-----


More information about the nix-dev mailing list