Add flake configuration to the web interface

[?]
May 10, 2019, 9:39 PM
QUMWPGCUBMAPWLUPRSISK7PNU5LIHKHKCAZYE4XXQCJ5E4L74VSQC

Dependencies

  • [2] OK4P3AMK Remove the ability to add multiple jobset input alternatives
  • [3] XLJT5EO6 Check for a valid number of shares
  • [4] 26PYNDXV Remove the errorMsg column from the Builds table
  • [5] W4G5MZZS hydra-evaluator improvements
  • [6] TLZ2SPBR
  • [7] BXHG3HYL When renaming a jobset, add a redirect from the old name
  • [8] TQKGQ5R3
  • [9] D3DIBMOK * For products that are directories (like manuals), allow a default
  • [10] RQI3GRC6 Enable setting checkresponsible in the edit jobset form
  • [11] VJFLX7B6 Fix rendering of jobset inputs
  • [12] 3ZCEPLNO
  • [13] PMNWRTGJ Add multiple output support
  • [14] FTPCV25M Store aggregate members in the database
  • [15] G2T4WAHI Store the inputs of each evaluation in the database
  • [16] TPNHTE5V Remove obsolete Builds columns and provide accurate "Running builds"
  • [17] KYSBJAYN Allow dashes in jobset input names
  • [18] KQAQ4FIF Update Schema classes
  • [19] ZVTSOVHN * Support Subversion checkouts.
  • [20] FHF6IZJQ * Basic release management: releases are now dynamically computed as
  • [21] R5D7DZPE
  • [22] V4RNHJNR * Add a link to each project's homepage. Suggested by karltk.
  • [23] QMW24O5S Add support for Guile & Guix.
  • [24] X27GNHDV * Basic job info in the database.
  • [25] PCKLFRT5 Support push notification of repository changes
  • [26] 6BLUKEQ2 * Caching of "path" inputs, and fake a revision number for those.
  • [27] OX6NYJDV Split viewing and editing a jobset
  • [28] QLOLZHRX Allow a per-jobset check interval
  • [29] LUYDIGYM Make input value wider
  • [30] 4CELXP7P Remove the longDescription field
  • [31] BHZXGT2H * Channels: provide an index page that lists all the packages in the
  • [32] 37R34XJO * Negative caching: don't perform a build if a dependency already
  • [33] SJLEZFC4 check getHydraPath in stead of Envvar HYDRA_DBI directly
  • [34] AHTEIK7G * Added a maintainers field to the Builds table.
  • [35] SS4TZXNU Distinguish between permanent evaluation errors and transient input errors
  • [36] ZCTQCN3E Use inputTypes from plugins to determine valid input types
  • [37] DH3KNBAV Merge remote-tracking branch 'upstream/who-broke-builds' into upstream-master
  • [38] RU7AQO7U * Role-based access control. Only admins can create projects. Only
  • [39] YTIDBFGU Drop unused "disabled" columns
  • [40] JTHWA6AM Rename aggregate members to constituents
  • [41] ODNCGFQ5 * Improved the navigation bar: don't include all projects (since that
  • [42] WE5Q2NVI Allow build to be bumped to the front of the queue via the web interface
  • [43] 53IMJNBB Add isChannel column and meta attribute.
  • [44] GNIEG2GC * Disambiguate jobs by jobset name. I.e. jobs with the same name in
  • [45] K3HODXGH Check all inputs for blame but only email selected inputs
  • [46] S66BOMVU * Added authentication.
  • [47] BSOLESYK * hydra: project members can do stuff that the owner can do
  • [48] AMI4DGBK Don't trigger evaluation of disabled jobsets
  • [49] YTZOC7C5 * Editing of jobset inputs.
  • [50] HQGXL4MX Add validation for project and jobset names
  • [51] VZX6HJ3I Fix jobset input handling in the API
  • [52] L2E6EVE2 * Merged the Build and Job tables.
  • [53] LCKWLQW3 * In Sqlite "release" is now a keyword, so use "release_" instead.
  • [54] IK53RV4V
  • [55] 3E6IP3R3 * Add the name of the jobset to ReleaseSetJobs, otherwise we can't
  • [56] KN3VYE5P * Cleaned up the foreign key constraints.
  • [57] LZVO64YG Merge in the first bits of the API work
  • [58] GEADFVZ5 hydra-queue-runner: Improved scheduling
  • [59] TQVKZQUG Use the REST API in the web interface for editing jobsets
  • [60] KSBB33RE Add a dashboard
  • [61] CLJQCY2X * Store info about all the build actions and allow them to be
  • [62] PCD3ZH6Z Partially revert 1c20cfdf2403feb78cef515faf15c04d5c9f17bd
  • [63] OOQ2D3KC * Refactoring: move fetchInput out of hydra_scheduler into a separate
  • [64] ZFEN2MAO Simplify jobset cloning
  • [65] BD3GRK4B * Get rid of "positive failures" and separate log phases.
  • [66] KOTB7BKV
  • [67] EYNG4EL4 * Regenerate the bindings from a clean sqlite database.
  • [68] Y6AHH4TH Remove the logfile and logSize columns from the database
  • [69] VJHIHMEH * Store the meta.longDescription and meta.license attributes in the
  • [70] CQTN62OH Die tabs die
  • [71] H7CNGK4O * Log evaluation errors etc. in the DB.
  • [72] CCIORPJ5 When manually scheduling an eval, force re-instantiation of store derivations
  • [73] JM3DPYOM generated schema with new dbix class schema loader, grrrrrr
  • [74] W5OAZWPD Drop the errorMsg column in the Jobs table
  • [75] SHBLLAVH * More global substitution.
  • [76] SB2V735V Keep track of the database schema version
  • [77] B72GLND4
  • [78] S5PV6IIM * Represent jobs explicitly in the DB.
  • [79] 4S5JF5JP Use latest DBIx::Class::Schema::Loader
  • [80] CMU3YKOU * Store the release name.
  • [81] TWVSALRL * Allow the maximum number of concurrent builds per platform to be
  • [82] UMFB2767 Hydra/64: Leaving number of builds empty gives DBIx error
  • [83] T5BIOVJE Add support for tracking custom metrics
  • [84] ECBA3GQO * Make the schema class names match the case of the SQL table names.
  • [85] YAPITGB3 * Boolean inputs.
  • [86] ZI535LI6 * hydra: 'new' UI for project/jobset/job/build
  • [*] 3HZY24CX * Make jobsets viewable under
  • [*] J5UVLXOK * Start of a basic Catalyst web interface.
  • [*] HPEG2RHV Merge the BuildResultInfo table into the Builds table
  • [*] FGQPXZIX hydra: make nr of build to keep configurable per jobset
  • [*] 3PNG7NIB Remove trailing whitespace
  • [*] N22GPKYT * Put info about logs / build products in the DB.
  • [*] LLAJKVGI Fix syntax error
  • [*] D5QIOJGP * Move everything up one directory.

Change contents

  • edit in src/lib/Hydra/Controller/Jobset.pm at line 225
    [6.503]
    [6.1667]
    my $type = int($c->stash->{params}->{"type"}) // 0;
  • replacement in src/lib/Hydra/Controller/Jobset.pm at line 228
    [6.1668][6.360:475](),[6.475][6.11622:11697]()
    # When the expression is in a .scm file, assume it's a Guile + Guix
    # build expression.
    my $exprType =
    $c->stash->{params}->{"nixexprpath"} =~ /.scm$/ ? "guile" : "nix";
    [6.1668]
    [6.543]
    my ($nixExprPath, $nixExprInput);
    my $flake;
  • replacement in src/lib/Hydra/Controller/Jobset.pm at line 231
    [6.544][6.2155:2220](),[6.1668][6.2155:2220]()
    my ($nixExprPath, $nixExprInput) = nixExprPathFromParams $c;
    [6.544]
    [6.0]
    if ($type == 0) {
    ($nixExprPath, $nixExprInput) = nixExprPathFromParams $c;
    } elsif ($type == 1) {
    $flake = trim($c->stash->{params}->{"flakeref"});
    error($c, "Invalid flake URI ‘$flake’.") if $flake !~ /^[a-zA-Z]/;
    } else {
    error($c, "Invalid jobset type.");
    }
  • edit in src/lib/Hydra/Controller/Jobset.pm at line 261
    [3.192]
    [6.2272]
    , type => $type
    , flake => $flake
  • replacement in src/lib/Hydra/Controller/Jobset.pm at line 272
    [6.2580][6.0:166](),[6.166][2.0:41](),[2.41][6.209:288](),[6.209][6.209:288]()
    foreach my $name (keys %{$c->stash->{params}->{inputs}}) {
    my $inputData = $c->stash->{params}->{inputs}->{$name};
    my $type = $inputData->{type};
    my $value = $inputData->{value};
    my $emailresponsible = defined $inputData->{emailresponsible} ? 1 : 0;
    [6.2580]
    [6.2750]
    if ($type == 0) {
    foreach my $name (keys %{$c->stash->{params}->{inputs}}) {
    my $inputData = $c->stash->{params}->{inputs}->{$name};
    my $type = $inputData->{type};
    my $value = $inputData->{value};
    my $emailresponsible = defined $inputData->{emailresponsible} ? 1 : 0;
  • replacement in src/lib/Hydra/Controller/Jobset.pm at line 279
    [6.2751][6.498:692]()
    error($c, "Invalid input name ‘$name’.") unless $name =~ /^[[:alpha:]][\w-]*$/;
    error($c, "Invalid input type ‘$type’.") unless defined $c->stash->{inputTypes}->{$type};
    [6.2751]
    [6.0]
    error($c, "Invalid input name ‘$name’.") unless $name =~ /^[[:alpha:]][\w-]*$/;
    error($c, "Invalid input type ‘$type’.") unless defined $c->stash->{inputTypes}->{$type};
  • replacement in src/lib/Hydra/Controller/Jobset.pm at line 282
    [6.1][2.42:203](),[6.110][6.208:224](),[2.203][6.208:224](),[6.343][6.208:224](),[6.208][6.208:224]()
    my $input = $jobset->jobsetinputs->create(
    { name => $name,
    type => $type,
    emailresponsible => $emailresponsible
    });
    [6.1]
    [6.186]
    my $input = $jobset->jobsetinputs->create(
    { name => $name,
    type => $type,
    emailresponsible => $emailresponsible
    });
  • replacement in src/lib/Hydra/Controller/Jobset.pm at line 288
    [6.187][2.204:336]()
    $value = checkInputValue($c, $name, $type, $value);
    $input->jobsetinputalts->create({altnr => 0, value => $value});
    [6.187]
    [6.4365]
    $value = checkInputValue($c, $name, $type, $value);
    $input->jobsetinputalts->create({altnr => 0, value => $value});
    }
  • edit in src/lib/Hydra/Schema/Builds.pm at line 193
    [90.6142]
    [90.6142]
    =head2 notificationpendingsince
    data_type: 'integer'
    is_nullable: 1
  • edit in src/lib/Hydra/Schema/Builds.pm at line 260
    [90.6719]
    [89.5911]
    "notificationpendingsince",
    { data_type => "integer", is_nullable => 1 },
  • replacement in src/lib/Hydra/Schema/Builds.pm at line 547
    [6.3378][4.0:142]()
    # Created by DBIx::Class::Schema::Loader v0.07043 @ 2016-02-12 17:20:42
    # DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:/8aVtXu/+o0jmKHnSzwt+g
    [6.3378]
    [6.4481]
    # Created by DBIx::Class::Schema::Loader v0.07049 @ 2019-05-10 22:30:12
    # DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:YK8Fc+37UAcL0u6ziOc5xQ
  • replacement in src/lib/Hydra/Schema/Jobsets.pm at line 59
    [6.18314][6.18314:18331]()
    is_nullable: 0
    [6.18314]
    [6.18345]
    is_nullable: 1
  • replacement in src/lib/Hydra/Schema/Jobsets.pm at line 64
    [6.20607][6.18407:18424](),[6.18407][6.18407:18424]()
    is_nullable: 0
    [6.20607]
    [6.18438]
    is_nullable: 1
  • edit in src/lib/Hydra/Schema/Jobsets.pm at line 142
    [91.288]
    [6.18998]
    =head2 type
    data_type: 'integer'
    default_value: 0
    is_nullable: 0
    =head2 flake
    data_type: 'text'
    is_nullable: 1
  • replacement in src/lib/Hydra/Schema/Jobsets.pm at line 163
    [6.2387][6.20974:21040]()
    { data_type => "text", is_foreign_key => 1, is_nullable => 0 },
    [6.2387]
    [6.2447]
    { data_type => "text", is_foreign_key => 1, is_nullable => 1 },
  • replacement in src/lib/Hydra/Schema/Jobsets.pm at line 165
    [6.2464][6.21041:21086]()
    { data_type => "text", is_nullable => 0 },
    [6.2464]
    [6.1457]
    { data_type => "text", is_nullable => 1 },
  • edit in src/lib/Hydra/Schema/Jobsets.pm at line 194
    [5.4341]
    [6.2524]
    "type",
    { data_type => "integer", default_value => 0, is_nullable => 0 },
    "flake",
    { data_type => "text", is_nullable => 1 },
  • replacement in src/lib/Hydra/Schema/Jobsets.pm at line 300
    [6.22170][6.5783:5861]()
    { is_deferrable => 0, on_delete => "NO ACTION", on_update => "NO ACTION" },
    [6.22170]
    [6.22176]
    {
    is_deferrable => 0,
    join_type => "LEFT",
    on_delete => "NO ACTION",
    on_update => "NO ACTION",
    },
  • replacement in src/lib/Hydra/Schema/Jobsets.pm at line 375
    [6.22628][5.4342:4484]()
    # Created by DBIx::Class::Schema::Loader v0.07045 @ 2017-03-09 13:03:05
    # DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:ivYvsUyhEeaeI4EmRQ0/QQ
    [6.22628]
    [6.217]
    # Created by DBIx::Class::Schema::Loader v0.07049 @ 2019-05-11 00:03:52
    # DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:UVG1D59bXaQ1TUEF237tXQ
  • replacement in src/root/edit-jobset.tt at line 45
    [6.174][6.1722:1776](),[6.1722][6.1722:1776]()
    <table class="table table-striped table-condensed">
    [6.174]
    [6.1776]
    <table class="table table-striped table-condensed show-on-legacy">
  • edit in src/root/edit-jobset.tt at line 99
    [6.3279]
    [6.3279]
    <label class="control-label">Type</label>
    <div class="controls">
    <div class="btn-group" data-toggle="buttons-radio">
    <input type="hidden" id="type" name="type" value="[% jobset.type %]" />
    <button type="button" class="btn" value="1" id="type-flake">Flake</button>
    <button type="button" class="btn" value="0" id="type-legacy">Legacy</button>
    </div>
    </div>
    </div>
    <div class="control-group show-on-flake">
    <label class="control-label">Flake URI</label>
    <div class="controls">
    <input type="text" class="span3" name="flakeref" [% HTML.attributes(value => jobset.flake) %]/>
    </div>
    </div>
    <div class="control-group show-on-legacy">
  • edit in src/root/edit-jobset.tt at line 188
    [6.5428]
    [6.2087]
    function update() {
    if ($("#type").val() == 0) {
    $(".show-on-legacy").show();
    $(".show-on-flake").hide();
    } else {
    $(".show-on-legacy").hide();
    $(".show-on-flake").show();
    }
    }
    $("#type-flake").click(function() { update(); });
    $("#type-legacy").click(function() { update(); });
    update();
  • edit in src/root/jobset.tt at line 137
    [6.9002]
    [6.9002]
    </tr>
    [% IF jobset.type == 1 %]
    <tr>
    <th>Flake URI:</th>
    <td>
    <tt>[% HTML.escape(jobset.flake) %]</tt>
    </td>
  • edit in src/root/jobset.tt at line 145
    [6.9014]
    [6.9014]
    [% END %]
    [% IF jobset.type == 0 %]
  • edit in src/root/jobset.tt at line 154
    [6.902]
    [6.902]
    [% END %]
  • edit in src/root/jobset.tt at line 179
    [92.30254]
    [6.602]
    [% IF jobset.type == 0 %]
  • edit in src/root/jobset.tt at line 181
    [6.639]
    [6.10061]
    [% END %]
  • replacement in src/sql/hydra.sql at line 57
    [6.5039][6.11667:11845]()
    nixExprInput text not null, -- name of the jobsetInput containing the Nix or Guix expression
    nixExprPath text not null, -- relative path of the Nix or Guix expression
    [6.5039]
    [6.5201]
    nixExprInput text, -- name of the jobsetInput containing the Nix or Guix expression
    nixExprPath text, -- relative path of the Nix or Guix expression
  • edit in src/sql/hydra.sql at line 73
    [5.4843]
    [94.0]
    type integer not null default 0, -- 0 == legacy, 1 == flake
    flake text,
  • edit in src/sql/hydra.sql at line 76
    [94.34]
    [6.5479]
    check ((type = 0) = (nixExprInput is not null and nixExprPath is not null)),
    check ((type = 1) = (flake is not null)),
  • file addition: upgrade-57.sql (----------)
    [95.3004]
    alter table Jobsets alter column nixExprInput drop not null;
    alter table Jobsets alter column nixExprPath drop not null;
    alter table Jobsets add column type integer default 0;
    alter table Jobsets add column flake text;
    alter table Jobsets add check ((type = 0) = (nixExprInput is not null and nixExprPath is not null));
    alter table Jobsets add check ((type = 1) = (flake is not null));