Merge pull request #55101 from lopsided98/hydra-update
hydra: 2018-08-07 -> 2019-02-01
This commit is contained in:
commit
15e43d59cf
@ -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
|
||||||
|
@ -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 (
|
||||||
|
Loading…
x
Reference in New Issue
Block a user