* Allow scheduled builds to be cancelled. They're not removed from
[?]
Mar 6, 2009, 12:49 PM
ZILILXXKP4Z64UGIXIPTQ3KXPV76LFGSXVFLMLCO2HJBCQ5GP6AQCDependencies
- [2]
FEMR2C5W - [3]
A52HEFHQ* Allow builds to be restarted (if they failed with a transient error, - [4]
IMY5UQE3 - [5]
2JQ7WEFM - [6]
BHZXGT2H* Channels: provide an index page that lists all the packages in the - [7]
WHAFVCEI - [8]
KOTB7BKV - [9]
WYN733ST* Store build duration, handle cached builds. - [10]
BD3GRK4B* Get rid of "positive failures" and separate log phases. - [11]
LBNVQXUB* Build the /build stuff in a separate controller. - [12]
XHVZXX6N - [13]
L2E6EVE2* Merged the Build and Job tables. - [14]
H7CNGK4O* Log evaluation errors etc. in the DB. - [15]
67P45PY4 - [16]
J5UVLXOK* Start of a basic Catalyst web interface. - [17]
CMU3YKOU* Store the release name. - [18]
OD5FSS5A* Quick hack to allow viewing of dependency graphs (via nix-store -q - [19]
FPK5LF53* Put the project-related actions in a separate controller. Put the - [20]
SMM4HQTP* Put actions related to builds under /build (e.g. /log/<buildid> - [*]
N22GPKYT* Put info about logs / build products in the DB.
Change contents
- replacement in src/lib/Hydra/Controller/Build.pm at line 33
$c->stash->{flashMsg} = $c->flash->{afterRestart};$c->stash->{flashMsg} = $c->flash->{buildMsg}; - replacement in src/lib/Hydra/Controller/Build.pm at line 159
sub restart : Chained('build') PathPart('restart') Args(0) {sub restart : Chained('build') PathPart Args(0) { - edit in src/lib/Hydra/Controller/Build.pm at line 165
error($c, "This build cannot be restarted.")unless $build->finished && $build->resultInfo->buildstatus == 3; - edit in src/lib/Hydra/Controller/Build.pm at line 167
error($c, "This build cannot be restarted.")unless $build->finished &&($build->resultInfo->buildstatus == 3 ||$build->resultInfo->buildstatus == 4); - replacement in src/lib/Hydra/Controller/Build.pm at line 186
$c->flash->{afterRestart} = "Build has been restarted.";$c->flash->{buildMsg} = "Build has been restarted.";$c->res->redirect($c->uri_for($self->action_for("view_build"), $c->req->captures));}sub cancel : Chained('build') PathPart Args(0) {my ($self, $c) = @_;my $build = $c->stash->{build};requireProjectOwner($c, $build->project);$c->model('DB')->schema->txn_do(sub {error($c, "This build cannot be cancelled.")if $build->finished || $build->schedulingInfo->busy;# !!! Actually, it would be nice to be able to cancel busy# builds as well, but we would have to send a signal or# something to the build process.$build->finished(1);$build->timestamp(time());$build->update;$c->model('DB::BuildResultInfo')->create({ id => $build->id, iscachedbuild => 0, buildstatus => 4 # = cancelled});$build->schedulingInfo->delete;});$c->flash->{buildMsg} = "Build has been cancelled."; - edit in src/root/build.tt at line 43
[% ELSIF build.resultInfo.buildstatus == 4 %]<img src="/static/images/failure.gif" alt="Failed" /><span class="error">Cancelled by user</span> - edit in src/root/build.tt at line 50
[% END %][% IF build.resultInfo.buildstatus == 3 || build.resultInfo.buildstatus == 4 %] - replacement in src/root/build.tt at line 53
<button id="delete-project" type="submit">Restart</button><button id="restart" type="submit">Restart</button> - edit in src/root/build.tt at line 61
[% IF c.user_exists %]<form action="[% c.uri_for('/build' build.id 'cancel') %]" method="post" class="inline"><button id="cancel" type="submit">Cancel</button></form>[% END %] - edit in src/root/build.tt at line 128[2.275]→[2.275:283](∅→∅),[2.283]→[4.6113:6139](∅→∅),[4.1478]→[4.6113:6139](∅→∅),[4.6139]→[4.1478:1485](∅→∅),[4.1478]→[4.1478:1485](∅→∅),[4.1485]→[4.0:28](∅→∅),[4.28]→[4.4807:4965](∅→∅),[4.3826]→[4.97:141](∅→∅),[4.4965]→[4.97:141](∅→∅),[4.6297]→[4.97:141](∅→∅),[4.97]→[4.97:141](∅→∅),[4.141]→[4.4966:5122](∅→∅),[4.3960]→[4.209:224](∅→∅),[4.5122]→[4.209:224](∅→∅),[4.6453]→[4.209:224](∅→∅),[4.209]→[4.209:224](∅→∅),[4.224]→[4.1485:1527](∅→∅),[4.1485]→[4.1485:1527](∅→∅),[4.1527]→[4.6454:6500](∅→∅),[4.6500]→[4.1562:1611](∅→∅),[4.1562]→[4.1562:1611](∅→∅),[4.1611]→[4.6501:6570](∅→∅),[4.423]→[4.423:449](∅→∅)
</tr>[% IF build.finished %]<tr><th>Build started:</th><td>[% IF build.resultInfo.starttime %][% PROCESS renderDateTime timestamp = build.resultInfo.starttime %][% ELSE %]<em>(cached build)</em>[% END %]</td></tr><tr><th>Build finished:</th><td>[% IF build.resultInfo.stoptime %][% PROCESS renderDateTime timestamp = build.resultInfo.stoptime %][% ELSE %]<em>(cached build)</em>[% END %]</td></tr><tr><th>Duration (seconds):</th><td>[% IF build.resultInfo.iscachedbuild %]<em>(cached build)</em>[% ELSE %][% build.resultInfo.stoptime - build.resultInfo.starttime %][% END %]</td> - replacement in src/root/build.tt at line 129
[% IF build.resultInfo.logfile %][% IF build.finished && build.resultInfo.buildstatus != 4 %]<tr><th>Build started:</th><td>[% IF build.resultInfo.starttime %][% PROCESS renderDateTime timestamp = build.resultInfo.starttime %][% ELSE %]<em>(cached build)</em>[% END %]</td></tr><tr><th>Build finished:</th><td>[% IF build.resultInfo.stoptime %][% PROCESS renderDateTime timestamp = build.resultInfo.stoptime %][% ELSE %]<em>(cached build)</em>[% END %]</td></tr> - replacement in src/root/build.tt at line 139
<th>Logfile:</th><th>Duration (seconds):</th> - replacement in src/root/build.tt at line 141
<a href="[% c.uri_for('/build' build.id 'log') %]"><strong>Available</strong></a>[% IF build.resultInfo.iscachedbuild %]<em>(cached build)</em>[% ELSE %][% build.resultInfo.stoptime - build.resultInfo.starttime %][% END %] - edit in src/root/build.tt at line 148
[% IF build.resultInfo.logfile %]<tr><th>Logfile:</th><td><a href="[% c.uri_for('/build' build.id 'log') %]"><strong>Available</strong></a></td></tr>[% END %] - replacement in src/root/build.tt at line 157[4.2646]→[4.6629:6721](∅→∅),[4.6629]→[4.6629:6721](∅→∅),[4.449]→[4.7964:7972](∅→∅),[4.6721]→[4.7964:7972](∅→∅),[4.7964]→[4.7964:7972](∅→∅),[4.7972]→[4.971:1037](∅→∅),[4.1037]→[4.2306:2363](∅→∅),[4.2363]→[4.1085:1093](∅→∅),[4.1085]→[4.1085:1093](∅→∅)
[% ELSE %]<tr><th>Priority:</th><td>[% build.schedulingInfo.priority %]</td></tr>[% IF build.schedulingInfo.busy %]<tr><th>Logfile:</th><td><tt>[% build.schedulingInfo.logfile %]</tt></td></tr>[% IF !build.finished %]<tr><th>Priority:</th><td>[% build.schedulingInfo.priority %]</td></tr>[% IF build.schedulingInfo.busy %]<tr><th>Logfile:</th><td><tt>[% build.schedulingInfo.logfile %]</tt></td></tr>[% END %] - edit in src/root/build.tt at line 169
[% END %] - edit in src/sql/hydra.sql at line 64
-- 4 = build cancelled (removed from queue; never built)