forked from lix-project/hydra
Add a ‘latest-finished’ action
It redirects to the latest successful build from a finished evaluation. This is mostly useful for the Nixpkgs/NixOS mirroring script, which need the latest finished evaluation in which some aggregate job (such as ‘tested’ in NixOS) succeeded.
This commit is contained in:
parent
84acccb3ea
commit
bef263c930
|
@ -119,4 +119,22 @@ sub latest_for : Chained('get_builds') PathPart('latest-for') {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
# Redirect to the latest successful build in a finished evaluation
|
||||||
|
# (i.e. an evaluation that has no unfinished builds).
|
||||||
|
sub latest_finished : Chained('get_builds') PathPart('latest-finished') {
|
||||||
|
my ($self, $c, @rest) = @_;
|
||||||
|
|
||||||
|
my $latest = $c->stash->{allBuilds}->find(
|
||||||
|
{ finished => 1, buildstatus => 0 },
|
||||||
|
{ order_by => ["id DESC"], rows => 1, join => ["jobsetevalmembers"]
|
||||||
|
, where => \
|
||||||
|
"not exists (select 1 from jobsetevalmembers m2 join builds b2 on jobsetevalmembers.eval = m2.eval and m2.build = b2.id and b2.finished = 0)"
|
||||||
|
});
|
||||||
|
|
||||||
|
notFound($c, "There is no successful build to redirect to.") unless defined $latest;
|
||||||
|
|
||||||
|
$c->res->redirect($c->uri_for($c->controller('Build')->action_for("build"), [$latest->id], @rest));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
1;
|
1;
|
||||||
|
|
|
@ -24,6 +24,7 @@
|
||||||
<div id="tabs-links" class="tab-pane">
|
<div id="tabs-links" class="tab-pane">
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="[% c.uri_for('/job' project.name jobset.name job.name 'latest') %]">Latest successful build</a></li>
|
<li><a href="[% c.uri_for('/job' project.name jobset.name job.name 'latest') %]">Latest successful build</a></li>
|
||||||
|
<li><a href="[% c.uri_for('/job' project.name jobset.name job.name 'latest-finished') %]">Latest successful build from a finished evaluation</a></li>
|
||||||
[% FOREACH system IN systems %]
|
[% FOREACH system IN systems %]
|
||||||
<li><a href="[% c.uri_for('/job' project.name jobset.name job.name 'latest-for' system.system) %]">Latest successful build for <tt>[% system.system %]</tt></a></li>
|
<li><a href="[% c.uri_for('/job' project.name jobset.name job.name 'latest-for' system.system) %]">Latest successful build for <tt>[% system.system %]</tt></a></li>
|
||||||
[% END %]
|
[% END %]
|
||||||
|
|
Loading…
Reference in a new issue