Merge remote-tracking branch 'origin/master' into flake

[?]
Sep 24, 2019, 5:03 PM
P3M6UFMPTIF7TPCFZHRDFX4MTXB6NZWT3ZFUEIC5VMNM55E7EIKAC

Dependencies

  • [2] QUMWPGCU Add flake configuration to the web interface
  • [3] R5V57UKM flake.nix improvements
  • [4] ITJWNQEZ Update Hydra schema, otherwise hydra-notify will not work.
  • [5] KO4DSFQE Add Term::Size::Any
  • [6] FHF6IZJQ * Basic release management: releases are now dynamically computed as
  • [7] CMU3YKOU * Store the release name.
  • [8] V4RNHJNR * Add a link to each project's homepage. Suggested by karltk.
  • [9] NVMDS7GE Add README.md
  • [10] UBPWXGKF Move build logic for the core hydra package into its own default.nix.
  • [11] 37R34XJO * Negative caching: don't perform a build if a dependency already
  • [12] JTHWA6AM Rename aggregate members to constituents
  • [13] TLZ2SPBR
  • [14] X27GNHDV * Basic job info in the database.
  • [15] PMNWRTGJ Add multiple output support
  • [16] TPNHTE5V Remove obsolete Builds columns and provide accurate "Running builds"
  • [17] CCPSI3TP Add flake.nix
  • [18] SFMN6AFQ * Include a license.
  • [19] VJHIHMEH * Store the meta.longDescription and meta.license attributes in the
  • [20] LZVO64YG Merge in the first bits of the API work
  • [21] G2T4WAHI Store the inputs of each evaluation in the database
  • [22] GNIEG2GC * Disambiguate jobs by jobset name. I.e. jobs with the same name in
  • [23] JM3DPYOM generated schema with new dbix class schema loader, grrrrrr
  • [24] 53IMJNBB Add isChannel column and meta attribute.
  • [25] LCKWLQW3 * In Sqlite "release" is now a keyword, so use "release_" instead.
  • [26] YTIDBFGU Drop unused "disabled" columns
  • [27] MOX7XJ2E Merge the BuildSchedulingInfo table into the Builds table
  • [28] BHZXGT2H * Channels: provide an index page that lists all the packages in the
  • [29] 4S5JF5JP Use latest DBIx::Class::Schema::Loader
  • [30] H7CNGK4O * Log evaluation errors etc. in the DB.
  • [31] EQ3F427Z also add CatalystXRoleApplicator
  • [32] CLXEECMF * Start putting build results in a database.
  • [33] GFT3FABQ Update lock file
  • [34] 3ZCEPLNO
  • [35] IE6AMEHD fix hydra build on nixpkgs master
  • [36] L2E6EVE2 * Merged the Build and Job tables.
  • [37] CLJQCY2X * Store info about all the build actions and allow them to be
  • [38] 6K5PBUUN Use buildEnv to combine Hydra's Perl dependencies
  • [39] X7IAG7JT Simplify running nix-shell
  • [40] 6CZHII3Q Use <...> syntax
  • [41] 4Y2EDQEG Add some flake checks
  • [42] YTZOC7C5 * Editing of jobset inputs.
  • [43] 6BLUKEQ2 * Caching of "path" inputs, and fake a revision number for those.
  • [44] TQKGQ5R3
  • [45] J5LTAHYV Update flake.nix
  • [46] G2ZB6464 first test, not yet in buildprocess
  • [47] ICYJNJWH Revert "Move build logic for the core hydra package into its own default.nix."
  • [48] Y6AHH4TH Remove the logfile and logSize columns from the database
  • [49] YAPITGB3 * Boolean inputs.
  • [50] R5D7DZPE
  • [51] ECBA3GQO * Make the schema class names match the case of the SQL table names.
  • [52] D3MDJONY
  • [53] ZVTSOVHN * Support Subversion checkouts.
  • [54] DWQCLOPQ Tweaks for nix-shell
  • [55] BD3GRK4B * Get rid of "positive failures" and separate log phases.
  • [56] FTPCV25M Store aggregate members in the database
  • [57] WE5Q2NVI Allow build to be bumped to the front of the queue via the web interface
  • [58] B72GLND4
  • [59] SAFVRDTK * Put Hydra's dependencies so that they can easily be installed in a
  • [60] ZI535LI6 * hydra: 'new' UI for project/jobset/job/build
  • [61] JGWFBGDI Update flake.nix
  • [62] 3E6IP3R3 * Add the name of the jobset to ReleaseSetJobs, otherwise we can't
  • [63] SHBLLAVH * More global substitution.
  • [64] EYNG4EL4 * Regenerate the bindings from a clean sqlite database.
  • [65] S5PV6IIM * Represent jobs explicitly in the DB.
  • [66] FV2M6MOT hydra: use autoconf/-make
  • [67] KMQAEXZ2 Build using the nix flake
  • [68] T4LLYESZ * Nix expression for building Hydra.
  • [69] D3DIBMOK * For products that are directories (like manuals), allow a default
  • [70] IK53RV4V
  • [71] T5BIOVJE Add support for tracking custom metrics
  • [72] KOTB7BKV
  • [73] J5UVLXOK * Start of a basic Catalyst web interface.
  • [74] TWVSALRL * Allow the maximum number of concurrent builds per platform to be
  • [75] C7CXMZ66 hydra: do not perform git clone every time. in stead work on local clone and pull
  • [76] 6A6CZ7SC draft manual
  • [77] 2IGIDHNA Replace shell.nix with a flake devShell attribute
  • [78] M32RT6PS Update flake.{nix,lock}
  • [79] YQWH4POV * Simplify.
  • [80] S66BOMVU * Added authentication.
  • [81] UHMUHQMU hydra: fix tarball build, add pre suffix to tarballs
  • [82] ZL4LHHZF Remove empty files
  • [83] GBCPEGYC Add a .gitignore
  • [84] 26PYNDXV Remove the errorMsg column from the Builds table
  • [85] JN7Y4DC2 Add hydra status dd timeboard expression
  • [86] RU7AQO7U * Role-based access control. Only admins can create projects. Only
  • [87] HPEG2RHV Merge the BuildResultInfo table into the Builds table
  • [88] SJLEZFC4 check getHydraPath in stead of Envvar HYDRA_DBI directly
  • [89] AHTEIK7G * Added a maintainers field to the Builds table.
  • [90] SAPEZKXH move file and add a basic README
  • [91] HAJZXVXR Use nixFlakes in devShell
  • [92] 4CELXP7P Remove the longDescription field
  • [93] P33UMMOO Use nixUnstable

Change contents

  • file deletion: flake.nix (----------)
    [6.2][6.581:614](),[6.614][6.229:229]()
    {
    description = "A Nix-based continuous build system";
    epoch = 201909;
    outputs = { self, nixpkgs, nix }:
    let
    version = "${builtins.readFile ./version}.${builtins.substring 0 8 self.lastModified}.${self.shortRev}";
    # FIXME: use nix overlay?
    nix' = nix.hydraJobs.build.x86_64-linux // {
    perl-bindings = nix.hydraJobs.perlBindings.x86_64-linux;
    };
    pkgs = import nixpkgs {
    system = "x86_64-linux";
    overlays = [ self.overlay ];
    };
    # NixOS configuration used for VM tests.
    hydraServer =
    { config, pkgs, ... }:
    { imports = [ self.nixosModules.hydra ];
    virtualisation.memorySize = 1024;
    virtualisation.writableStore = true;
    services.hydra-dev.enable = true;
    services.hydra-dev.hydraURL = "http://hydra.example.org";
    services.hydra-dev.notificationSender = "admin@hydra.example.org";
    services.postgresql.enable = true;
    services.postgresql.package = pkgs.postgresql95;
    environment.systemPackages = [ pkgs.perlPackages.LWP pkgs.perlPackages.JSON ];
    # The following is to work around the following error from hydra-server:
    # [error] Caught exception in engine "Cannot determine local time zone"
    time.timeZone = "UTC";
    nix = {
    # The following is to work around: https://github.com/NixOS/hydra/pull/432
    buildMachines = [
    { hostName = "localhost";
    system = "x86_64-linux";
    }
    ];
    # Without this nix tries to fetch packages from the default
    # cache.nixos.org which is not reachable from this sandboxed NixOS test.
    binaryCaches = [];
    };
    };
    in rec {
    # A Nixpkgs overlay that provides a 'hydra' package.
    overlay = final: prev: {
    hydra = with final; let
    perlDeps = buildEnv {
    name = "hydra-perl-deps";
    paths = with perlPackages;
    [ ModulePluggable
    CatalystActionREST
    CatalystAuthenticationStoreDBIxClass
    CatalystDevel
    CatalystDispatchTypeRegex
    CatalystPluginAccessLog
    CatalystPluginAuthorizationRoles
    CatalystPluginCaptcha
    CatalystPluginSessionStateCookie
    CatalystPluginSessionStoreFastMmap
    CatalystPluginStackTrace
    CatalystPluginUnicodeEncoding
    CatalystTraitForRequestProxyBase
    CatalystViewDownload
    CatalystViewJSON
    CatalystViewTT
    CatalystXScriptServerStarman
    CatalystXRoleApplicator
    CryptRandPasswd
    DBDPg
    DBDSQLite
    DataDump
    DateTime
    DigestSHA1
    EmailMIME
    EmailSender
    FileSlurp
    IOCompress
    IPCRun
    JSON
    JSONAny
    JSONXS
    LWP
    LWPProtocolHttps
    NetAmazonS3
    NetStatsd
    PadWalker
    Readonly
    SQLSplitStatement
    SetScalar
    Starman
    SysHostnameLong
    TestMore
    TextDiff
    TextTable
    XMLSimple
    nix'
    nix'.perl-bindings
    git
    boehmgc
    ];
    };
    in stdenv.mkDerivation {
    name = "hydra-${version}";
    src = self;
    buildInputs =
    [ makeWrapper autoconf automake libtool unzip nukeReferences pkgconfig sqlite libpqxx
    gitAndTools.topGit mercurial darcs subversion bazaar openssl bzip2 libxslt
    guile # optional, for Guile + Guix support
    perlDeps perl nix'
    postgresql95 # for running the tests
    boost
    nlohmann_json
    ];
    hydraPath = lib.makeBinPath (
    [ sqlite subversion openssh nix' coreutils findutils pixz
    gzip bzip2 lzma gnutar unzip git gitAndTools.topGit mercurial darcs gnused bazaar
    ] ++ lib.optionals stdenv.isLinux [ rpm dpkg cdrkit ] );
    configureFlags = [ "--with-docbook-xsl=${docbook_xsl}/xml/xsl/docbook" ];
    shellHook = ''
    PATH=$(pwd)/src/hydra-evaluator:$(pwd)/src/script:$(pwd)/src/hydra-eval-jobs:$(pwd)/src/hydra-queue-runner:$PATH
    PERL5LIB=$(pwd)/src/lib:$PERL5LIB
    '';
    preConfigure = "autoreconf -vfi";
    NIX_LDFLAGS = [ "-lpthread" ];
    enableParallelBuilding = true;
    preCheck = ''
    patchShebangs .
    export LOGNAME=''${LOGNAME:-foo}
    '';
    postInstall = ''
    mkdir -p $out/nix-support
    for i in $out/bin/*; do
    read -n 4 chars < $i
    if [[ $chars =~ ELF ]]; then continue; fi
    wrapProgram $i \
    --prefix PERL5LIB ':' $out/libexec/hydra/lib:$PERL5LIB \
    --prefix PATH ':' $out/bin:$hydraPath \
    --set HYDRA_RELEASE ${version} \
    --set HYDRA_HOME $out/libexec/hydra \
    --set NIX_RELEASE ${nix'.name or "unknown"}
    done
    '';
    dontStrip = true;
    meta.description = "Build of Hydra on ${system}";
    passthru.perlDeps = perlDeps;
    };
    };
    hydraJobs = {
    build.x86_64-linux = packages.hydra;
    manual =
    pkgs.runCommand "hydra-manual-${version}" {}
    ''
    mkdir -p $out/share
    cp -prvd ${pkgs.hydra}/share/doc $out/share/
    mkdir $out/nix-support
    echo "doc manual $out/share/doc/hydra" >> $out/nix-support/hydra-build-products
    '';
    tests.install.x86_64-linux =
    with import (nixpkgs + "/nixos/lib/testing.nix") { system = "x86_64-linux"; };
    simpleTest {
    machine = hydraServer;
    testScript =
    ''
    $machine->waitForJob("hydra-init");
    $machine->waitForJob("hydra-server");
    $machine->waitForJob("hydra-evaluator");
    $machine->waitForJob("hydra-queue-runner");
    $machine->waitForOpenPort("3000");
    $machine->succeed("curl --fail http://localhost:3000/");
    '';
    };
    tests.api.x86_64-linux =
    with import (nixpkgs + "/nixos/lib/testing.nix") { system = "x86_64-linux"; };
    simpleTest {
    machine = hydraServer;
    testScript =
    let dbi = "dbi:Pg:dbname=hydra;user=root;"; in
    ''
    $machine->waitForJob("hydra-init");
    # Create an admin account and some other state.
    $machine->succeed
    ( "su - hydra -c \"hydra-create-user root --email-address 'alice\@example.org' --password foobar --role admin\""
    , "mkdir /run/jobset /tmp/nix"
    , "chmod 755 /run/jobset /tmp/nix"
    , "cp ${./tests/api-test.nix} /run/jobset/default.nix"
    , "chmod 644 /run/jobset/default.nix"
    , "chown -R hydra /run/jobset /tmp/nix"
    );
    $machine->succeed("systemctl stop hydra-evaluator hydra-queue-runner");
    $machine->waitForJob("hydra-server");
    $machine->waitForOpenPort("3000");
    # Run the API tests.
    $machine->mustSucceed("su - hydra -c 'perl -I ${pkgs.hydra.perlDeps}/lib/perl5/site_perl ${./tests/api-test.pl}' >&2");
    '';
    };
    tests.notifications.x86_64-linux =
    with import (nixpkgs + "/nixos/lib/testing.nix") { system = "x86_64-linux"; };
    simpleTest {
    machine = { pkgs, ... }: {
    imports = [ hydraServer ];
    services.hydra-dev.extraConfig = ''
    <influxdb>
    url = http://127.0.0.1:8086
    db = hydra
    </influxdb>
    '';
    services.influxdb.enable = true;
    };
    testScript = ''
    $machine->waitForJob("hydra-init");
    # Create an admin account and some other state.
    $machine->succeed
    ( "su - hydra -c \"hydra-create-user root --email-address 'alice\@example.org' --password foobar --role admin\""
    , "mkdir /run/jobset"
    , "chmod 755 /run/jobset"
    , "cp ${./tests/api-test.nix} /run/jobset/default.nix"
    , "chmod 644 /run/jobset/default.nix"
    , "chown -R hydra /run/jobset"
    );
    # Wait until InfluxDB can receive web requests
    $machine->waitForJob("influxdb");
    $machine->waitForOpenPort("8086");
    # Create an InfluxDB database where hydra will write to
    $machine->succeed(
    "curl -XPOST 'http://127.0.0.1:8086/query' \\
    --data-urlencode 'q=CREATE DATABASE hydra'");
    # Wait until hydra-server can receive HTTP requests
    $machine->waitForJob("hydra-server");
    $machine->waitForOpenPort("3000");
    # Setup the project and jobset
    $machine->mustSucceed(
    "su - hydra -c 'perl -I ${pkgs.hydra.perlDeps}/lib/perl5/site_perl ${./tests/setup-notifications-jobset.pl}' >&2");
    # Wait until hydra has build the job and
    # the InfluxDBNotification plugin uploaded its notification to InfluxDB
    $machine->waitUntilSucceeds(
    "curl -s -H 'Accept: application/csv' \\
    -G 'http://127.0.0.1:8086/query?db=hydra' \\
    --data-urlencode 'q=SELECT * FROM hydra_build_status' | grep success");
    '';
    };
    };
    checks.build = hydraJobs.build.x86_64-linux;
    checks.install = hydraJobs.tests.install.x86_64-linux;
    packages.hydra = pkgs.hydra;
    defaultPackage = pkgs.hydra;
    nixosModules.hydra = {
    imports = [ ./hydra-module.nix ];
    nixpkgs.overlays = [ self.overlay ];
    };
    };
    }
  • file un-deletion:
    [6.1891][6.1:1]()
  • resolve name conflict: release.nix (----------)release.nix (----------)
    [6.2][6.1856:1891](),[6.2][6.1856:1891]()
  • replacement in flake.nix at line 1
    [6.1958][5.0:24](),[6.1958][5.0:24]()
    TermSizeAny
    [6.1]
    {
    description = "A Nix-based continuous build system";
    epoch = 201909;
    outputs = { self, nixpkgs, nix }:
    let
    version = "${builtins.readFile ./version}.${builtins.substring 0 8 self.lastModified}.${self.shortRev}";
    # FIXME: use nix overlay?
    nix' = nix.hydraJobs.build.x86_64-linux // {
    perl-bindings = nix.hydraJobs.perlBindings.x86_64-linux;
    };
    pkgs = import nixpkgs {
    system = "x86_64-linux";
    overlays = [ self.overlay ];
    };
    # NixOS configuration used for VM tests.
    hydraServer =
    { config, pkgs, ... }:
    { imports = [ self.nixosModules.hydra ];
    virtualisation.memorySize = 1024;
    virtualisation.writableStore = true;
    services.hydra-dev.enable = true;
    services.hydra-dev.hydraURL = "http://hydra.example.org";
    services.hydra-dev.notificationSender = "admin@hydra.example.org";
    services.postgresql.enable = true;
    services.postgresql.package = pkgs.postgresql95;
    environment.systemPackages = [ pkgs.perlPackages.LWP pkgs.perlPackages.JSON ];
    # The following is to work around the following error from hydra-server:
    # [error] Caught exception in engine "Cannot determine local time zone"
    time.timeZone = "UTC";
    nix = {
    # The following is to work around: https://github.com/NixOS/hydra/pull/432
    buildMachines = [
    { hostName = "localhost";
    system = "x86_64-linux";
    }
    ];
    # Without this nix tries to fetch packages from the default
    # cache.nixos.org which is not reachable from this sandboxed NixOS test.
    binaryCaches = [];
    };
    };
    in rec {
    # A Nixpkgs overlay that provides a 'hydra' package.
    overlay = final: prev: {
    hydra = with final; let
    perlDeps = buildEnv {
    name = "hydra-perl-deps";
    paths = with perlPackages;
    [ ModulePluggable
    CatalystActionREST
    CatalystAuthenticationStoreDBIxClass
    CatalystDevel
    CatalystDispatchTypeRegex
    CatalystPluginAccessLog
    CatalystPluginAuthorizationRoles
    CatalystPluginCaptcha
    CatalystPluginSessionStateCookie
    CatalystPluginSessionStoreFastMmap
    CatalystPluginStackTrace
    CatalystPluginUnicodeEncoding
    CatalystTraitForRequestProxyBase
    CatalystViewDownload
    CatalystViewJSON
    CatalystViewTT
    CatalystXScriptServerStarman
    CatalystXRoleApplicator
    CryptRandPasswd
    DBDPg
    DBDSQLite
    DataDump
    DateTime
    DigestSHA1
    EmailMIME
    EmailSender
    FileSlurp
    IOCompress
    IPCRun
    JSON
    JSONAny
    JSONXS
    LWP
    LWPProtocolHttps
    NetAmazonS3
    NetStatsd
    PadWalker
    Readonly
    SQLSplitStatement
    SetScalar
    Starman
    SysHostnameLong
    TermSizeAny
    TestMore
    TextDiff
    TextTable
    XMLSimple
    nix'
    nix'.perl-bindings
    git
    boehmgc
    ];
    };
    in stdenv.mkDerivation {
    name = "hydra-${version}";
    src = self;
    buildInputs =
    [ makeWrapper autoconf automake libtool unzip nukeReferences pkgconfig sqlite libpqxx
    gitAndTools.topGit mercurial darcs subversion bazaar openssl bzip2 libxslt
    guile # optional, for Guile + Guix support
    perlDeps perl nix'
    postgresql95 # for running the tests
    boost
    nlohmann_json
    ];
    hydraPath = lib.makeBinPath (
    [ sqlite subversion openssh nix' coreutils findutils pixz
    gzip bzip2 lzma gnutar unzip git gitAndTools.topGit mercurial darcs gnused bazaar
    ] ++ lib.optionals stdenv.isLinux [ rpm dpkg cdrkit ] );
    configureFlags = [ "--with-docbook-xsl=${docbook_xsl}/xml/xsl/docbook" ];
    shellHook = ''
    PATH=$(pwd)/src/hydra-evaluator:$(pwd)/src/script:$(pwd)/src/hydra-eval-jobs:$(pwd)/src/hydra-queue-runner:$PATH
    PERL5LIB=$(pwd)/src/lib:$PERL5LIB
    '';
    preConfigure = "autoreconf -vfi";
    NIX_LDFLAGS = [ "-lpthread" ];
    enableParallelBuilding = true;
    preCheck = ''
    patchShebangs .
    export LOGNAME=''${LOGNAME:-foo}
    '';
    postInstall = ''
    mkdir -p $out/nix-support
    for i in $out/bin/*; do
    read -n 4 chars < $i
    if [[ $chars =~ ELF ]]; then continue; fi
    wrapProgram $i \
    --prefix PERL5LIB ':' $out/libexec/hydra/lib:$PERL5LIB \
    --prefix PATH ':' $out/bin:$hydraPath \
    --set HYDRA_RELEASE ${version} \
    --set HYDRA_HOME $out/libexec/hydra \
    --set NIX_RELEASE ${nix'.name or "unknown"}
    done
    '';
    dontStrip = true;
    meta.description = "Build of Hydra on ${system}";
    passthru.perlDeps = perlDeps;
    };
    };
    hydraJobs = {
    build.x86_64-linux = packages.hydra;
    manual =
    pkgs.runCommand "hydra-manual-${version}" {}
    ''
    mkdir -p $out/share
    cp -prvd ${pkgs.hydra}/share/doc $out/share/
    mkdir $out/nix-support
    echo "doc manual $out/share/doc/hydra" >> $out/nix-support/hydra-build-products
    '';
    tests.install.x86_64-linux =
    with import (nixpkgs + "/nixos/lib/testing.nix") { system = "x86_64-linux"; };
    simpleTest {
    machine = hydraServer;
    testScript =
    ''
    $machine->waitForJob("hydra-init");
    $machine->waitForJob("hydra-server");
    $machine->waitForJob("hydra-evaluator");
    $machine->waitForJob("hydra-queue-runner");
    $machine->waitForOpenPort("3000");
    $machine->succeed("curl --fail http://localhost:3000/");
    '';
    };
    tests.api.x86_64-linux =
    with import (nixpkgs + "/nixos/lib/testing.nix") { system = "x86_64-linux"; };
    simpleTest {
    machine = hydraServer;
    testScript =
    let dbi = "dbi:Pg:dbname=hydra;user=root;"; in
    ''
    $machine->waitForJob("hydra-init");
    # Create an admin account and some other state.
    $machine->succeed
    ( "su - hydra -c \"hydra-create-user root --email-address 'alice\@example.org' --password foobar --role admin\""
    , "mkdir /run/jobset /tmp/nix"
    , "chmod 755 /run/jobset /tmp/nix"
    , "cp ${./tests/api-test.nix} /run/jobset/default.nix"
    , "chmod 644 /run/jobset/default.nix"
    , "chown -R hydra /run/jobset /tmp/nix"
    );
    $machine->succeed("systemctl stop hydra-evaluator hydra-queue-runner");
    $machine->waitForJob("hydra-server");
    $machine->waitForOpenPort("3000");
    # Run the API tests.
    $machine->mustSucceed("su - hydra -c 'perl -I ${pkgs.hydra.perlDeps}/lib/perl5/site_perl ${./tests/api-test.pl}' >&2");
    '';
    };
    tests.notifications.x86_64-linux =
    with import (nixpkgs + "/nixos/lib/testing.nix") { system = "x86_64-linux"; };
    simpleTest {
    machine = { pkgs, ... }: {
    imports = [ hydraServer ];
    services.hydra-dev.extraConfig = ''
    <influxdb>
    url = http://127.0.0.1:8086
    db = hydra
    </influxdb>
    '';
    services.influxdb.enable = true;
    };
    testScript = ''
    $machine->waitForJob("hydra-init");
    # Create an admin account and some other state.
    $machine->succeed
    ( "su - hydra -c \"hydra-create-user root --email-address 'alice\@example.org' --password foobar --role admin\""
    , "mkdir /run/jobset"
    , "chmod 755 /run/jobset"
    , "cp ${./tests/api-test.nix} /run/jobset/default.nix"
    , "chmod 644 /run/jobset/default.nix"
    , "chown -R hydra /run/jobset"
    );
    # Wait until InfluxDB can receive web requests
    $machine->waitForJob("influxdb");
    $machine->waitForOpenPort("8086");
    # Create an InfluxDB database where hydra will write to
    $machine->succeed(
    "curl -XPOST 'http://127.0.0.1:8086/query' \\
    --data-urlencode 'q=CREATE DATABASE hydra'");
    # Wait until hydra-server can receive HTTP requests
    $machine->waitForJob("hydra-server");
    $machine->waitForOpenPort("3000");
    # Setup the project and jobset
    $machine->mustSucceed(
    "su - hydra -c 'perl -I ${pkgs.hydra.perlDeps}/lib/perl5/site_perl ${./tests/setup-notifications-jobset.pl}' >&2");
    # Wait until hydra has build the job and
    # the InfluxDBNotification plugin uploaded its notification to InfluxDB
    $machine->waitUntilSucceeds(
    "curl -s -H 'Accept: application/csv' \\
    -G 'http://127.0.0.1:8086/query?db=hydra' \\
    --data-urlencode 'q=SELECT * FROM hydra_build_status' | grep success");
    '';
    };
    };
    checks.build = hydraJobs.build.x86_64-linux;
    checks.install = hydraJobs.tests.install.x86_64-linux;
    packages.hydra = pkgs.hydra;
    defaultPackage = pkgs.hydra;
    nixosModules.hydra = {
    imports = [ ./hydra-module.nix ];
    nixpkgs.overlays = [ self.overlay ];
    };
    };
    }
  • resolve order conflict in src/lib/Hydra/Schema/Builds.pm at line 198
    [2.1433]
    [4.0]
  • edit in src/lib/Hydra/Schema/Builds.pm at line 199
    [4.1][4.1:74](),[4.74][6.6142:6143](),[2.1433][6.6142:6143](),[6.6142][6.6142:6143]()
    =head2 notificationpendingsince
    data_type: 'integer'
    is_nullable: 1
  • edit in src/lib/Hydra/Schema/Builds.pm at line 262
    [6.6719][4.75:153]()
    "notificationpendingsince",
    { data_type => "integer", is_nullable => 1 },
  • resolve order conflict in src/lib/Hydra/Schema/Builds.pm at line 262
    [2.1512]
    [6.5911]
  • edit in src/lib/Hydra/Schema/Builds.pm at line 547
    [6.3378][2.1513:1655]()
    # Created by DBIx::Class::Schema::Loader v0.07049 @ 2019-05-10 22:30:12
    # DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:YK8Fc+37UAcL0u6ziOc5xQ