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

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