Merge pull request #55101 from lopsided98/hydra-update

hydra: 2018-08-07 -> 2019-02-01
This commit is contained in:
lewo 2019-02-07 17:59:46 +01:00 committed by GitHub
commit 15e43d59cf
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 86 additions and 67 deletions

View File

@ -1,77 +1,91 @@
import ../make-test.nix ({ pkgs, ...} : { system ? builtins.currentSystem
, config ? { }
, pkgs ? import ../../.. { inherit system config; }
}:
let let
trivialJob = pkgs.writeTextDir "trivial.nix" ''
{ trivial = builtins.derivation {
name = "trivial";
system = "x86_64-linux";
builder = "/bin/sh";
args = ["-c" "echo success > $out; exit 0"];
};
}
'';
createTrivialProject = pkgs.stdenv.mkDerivation { trivialJob = pkgs.writeTextDir "trivial.nix" ''
name = "create-trivial-project"; { trivial = builtins.derivation {
unpackPhase = ":"; name = "trivial";
buildInputs = [ pkgs.makeWrapper ]; system = "x86_64-linux";
installPhase = "install -m755 -D ${./create-trivial-project.sh} $out/bin/create-trivial-project.sh"; builder = "/bin/sh";
postFixup = '' args = ["-c" "echo success > $out; exit 0"];
wrapProgram "$out/bin/create-trivial-project.sh" --prefix PATH ":" ${pkgs.stdenv.lib.makeBinPath [ pkgs.curl ]} --set EXPR_PATH ${trivialJob} };
''; }
}; '';
in { createTrivialProject = pkgs.stdenv.mkDerivation {
name = "hydra-init-localdb"; name = "create-trivial-project";
meta = with pkgs.stdenv.lib.maintainers; { unpackPhase = ":";
maintainers = [ pstn lewo ma27 ]; buildInputs = [ pkgs.makeWrapper ];
installPhase = "install -m755 -D ${./create-trivial-project.sh} $out/bin/create-trivial-project.sh";
postFixup = ''
wrapProgram "$out/bin/create-trivial-project.sh" --prefix PATH ":" ${pkgs.stdenv.lib.makeBinPath [ pkgs.curl ]} --set EXPR_PATH ${trivialJob}
'';
}; };
machine = callTest = f: f { inherit system pkgs; };
{ pkgs, ... }:
{ hydraPkgs = {
virtualisation.memorySize = 1024; inherit (pkgs) nixStable nixUnstable;
time.timeZone = "UTC"; };
environment.systemPackages = [ createTrivialProject pkgs.jq ]; tests = pkgs.lib.flip pkgs.lib.mapAttrs hydraPkgs (name: nix:
services.hydra = { callTest (import ../make-test.nix ({ pkgs, lib, ... }:
enable = true; {
name = "hydra-with-${name}";
meta = with pkgs.stdenv.lib.maintainers; {
maintainers = [ pstn lewo ma27 ];
};
#Hydra needs those settings to start up, so we add something not harmfull. machine = { pkgs, ... }:
hydraURL = "example.com"; {
notificationSender = "example@example.com"; virtualisation.memorySize = 1024;
}; time.timeZone = "UTC";
nix = {
buildMachines = [{
hostName = "localhost";
systems = [ "x86_64-linux" ];
}];
binaryCaches = []; environment.systemPackages = [ createTrivialProject pkgs.jq ];
}; services.hydra = {
}; enable = true;
testScript = #Hydra needs those settings to start up, so we add something not harmfull.
'' hydraURL = "example.com";
# let the system boot up notificationSender = "example@example.com";
$machine->waitForUnit("multi-user.target");
# test whether the database is running
$machine->succeed("systemctl status postgresql.service");
# test whether the actual hydra daemons are running
$machine->succeed("systemctl status hydra-queue-runner.service");
$machine->succeed("systemctl status hydra-init.service");
$machine->succeed("systemctl status hydra-evaluator.service");
$machine->succeed("systemctl status hydra-send-stats.service");
$machine->succeed("hydra-create-user admin --role admin --password admin"); package = pkgs.hydra.override { inherit nix; };
};
nix = {
buildMachines = [{
hostName = "localhost";
systems = [ "x86_64-linux" ];
}];
# create a project with a trivial job binaryCaches = [];
$machine->waitForOpenPort(3000); };
};
# make sure the build as been successfully built testScript = ''
$machine->succeed("create-trivial-project.sh"); # let the system boot up
$machine->waitForUnit("multi-user.target");
# test whether the database is running
$machine->succeed("systemctl status postgresql.service");
# test whether the actual hydra daemons are running
$machine->succeed("systemctl status hydra-queue-runner.service");
$machine->succeed("systemctl status hydra-init.service");
$machine->succeed("systemctl status hydra-evaluator.service");
$machine->succeed("systemctl status hydra-send-stats.service");
$machine->waitUntilSucceeds('curl -L -s http://localhost:3000/build/1 -H "Accept: application/json" | jq .buildstatus | xargs test 0 -eq'); $machine->succeed("hydra-create-user admin --role admin --password admin");
'';
}) # create a project with a trivial job
$machine->waitForOpenPort(3000);
# make sure the build as been successfully built
$machine->succeed("create-trivial-project.sh");
$machine->waitUntilSucceeds('curl -L -s http://localhost:3000/build/1 -H "Accept: application/json" | jq .buildstatus | xargs test 0 -eq');
'';
})));
in
tests

View File

@ -1,13 +1,17 @@
{ stdenv, nix, perlPackages, buildEnv, releaseTools, fetchFromGitHub { stdenv, nix, perlPackages, buildEnv, releaseTools, fetchFromGitHub
, makeWrapper, autoconf, automake, libtool, unzip, pkgconfig, sqlite, libpqxx , makeWrapper, autoconf, automake, libtool, unzip, pkgconfig, sqlite, libpqxx
, gitAndTools, mercurial, darcs, subversion, bazaar, openssl, bzip2, libxslt , gitAndTools, mercurial, darcs, subversion, bazaar, openssl, bzip2, libxslt
, guile, perl, postgresql, nukeReferences, git, boehmgc , guile, perl, postgresql, nukeReferences, git, boehmgc, nlohmann_json
, docbook_xsl, openssh, gnused, coreutils, findutils, gzip, lzma, gnutar , docbook_xsl, openssh, gnused, coreutils, findutils, gzip, lzma, gnutar
, rpm, dpkg, cdrkit, pixz, lib, fetchpatch, boost, autoreconfHook , rpm, dpkg, cdrkit, pixz, lib, fetchpatch, boost, autoreconfHook
}: }:
with stdenv; with stdenv;
if lib.versions.major nix.version == "1"
then throw "This Hydra version doesn't support Nix 1.x"
else
let let
isGreaterNix20 = with lib.versions; isGreaterNix20 = with lib.versions;
let let
@ -34,8 +38,8 @@ let
CatalystViewDownload CatalystViewDownload
CatalystViewJSON CatalystViewJSON
CatalystViewTT CatalystViewTT
CatalystXRoleApplicator
CatalystXScriptServerStarman CatalystXScriptServerStarman
CatalystXRoleApplicator
CryptRandPasswd CryptRandPasswd
DBDPg DBDPg
DBDSQLite DBDSQLite
@ -71,15 +75,15 @@ let
}; };
in releaseTools.nixBuild rec { in releaseTools.nixBuild rec {
name = "hydra-${version}"; name = "hydra-${version}";
version = "2018-08-07"; version = "2019-02-01";
inherit stdenv; inherit stdenv;
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "NixOS"; owner = "NixOS";
repo = "hydra"; repo = "hydra";
rev = "4dca8fe14d3f782bdf927f37efce722acefffff3"; rev = "8b5948f4cf12424c04df67a6eb136c9846fb2cfd";
sha256 = "1yas4psmvfp7lhcp81ia2sy93b78j9hiw9a6n3q2m1a616hwpm25"; sha256 = "0ldk3li394vykl9c4v9bs8pir05pmad24s0rx9bzqgz569zfj2iv";
}; };
buildInputs = buildInputs =
@ -88,6 +92,7 @@ in releaseTools.nixBuild rec {
guile # optional, for Guile + Guix support guile # optional, for Guile + Guix support
perlDeps perl nix perlDeps perl nix
postgresql # for running the tests postgresql # for running the tests
nlohmann_json
] ++ lib.optionals isGreaterNix20 [ boost ]; ] ++ lib.optionals isGreaterNix20 [ boost ];
hydraPath = lib.makeBinPath ( hydraPath = lib.makeBinPath (