diary at Telent Netowrks

Hydra gen molecule#

Mon, 30 Jul 2018 23:48:15 +0000

Two things this week

1. I got hydra running on my build machine, so I can start doing regression tests now that things work well enough that I ought to worry about breaking them. (Note cavalier insertion of "ought to" in the preceding sentence)

Provided you are running Nixos, this is easier than you'd think from looking at the Hydra manual, because there is a Nixos module for it. First, add this or something like it to your configuration.nix and rebuild

  services.hydra = {
    enable = true;
    hydraURL = "http://${hostname}:3000/";
    notificationSender = "dan@telent.net";
    buildMachinesFiles = [];
  };

Second, reboot, or logout and login, or ensure in some other way that your shell has sourced the HYDRA_* variables which the previous step added to /etc/profile. Otherwise step 3 will fail to do what it should do and the error messages will be entirely unhelpful

[dan@loaclhost:~]$ grep HYDRA /etc/profile 
export HYDRA_CONFIG="/var/lib/hydra/hydra.conf"
export HYDRA_DATA="/var/lib/hydra"
export HYDRA_DBI="dbi:Pg:dbname=hydra;user=hydra;"

Third, refer to the instructions in the Hydra manual starting where it says to run hydra-init then hydra-create-user. The previous steps were already done by the module. Also, there are systemd services to run the server, the evaluator and the queue runner, so ignore anything that says you should start them by hand.

Note the empty array for buildMachinesFiles - this was important on my machine and probably is important on yours too. If you don't have it, when eventually you get all your projects and jobsets apparently working properly and evaluating without error, you will find that the jobs sit in the queue and never get run, because something something bad defaults no queue runner machines something something.

Things I read wherein I found the solutions to my problems:

My Hydra instance is private and destined to remain so, at least for now.

2. Some refactoring of the kernel derivation into three parts: unpacking the tree and applying LEDE/OpenWRT patches; building vmlinux; and applying the DTB and making a uImage. I think this is an improvement: it will certainly make a few things (like running qemu, or changing the command line) more convenient, but I'm not sure I have it exactly right yet.

My current TODO list: as you will see, everything that has happened recently has been procrastination on the top goal.