Author: rob
Date: Wed Jul 14 07:31:14 2010
New Revision: 22595
URL: https://svn.nixos.org/websvn/nix/?rev=22595&sc=1

Log:
Hydra: In case of failure, also show changes between last succesful build and 
the first failed build after this

Modified:
   hydra/trunk/src/lib/Hydra/Controller/Build.pm
   hydra/trunk/src/lib/Hydra/Helper/CatalystUtils.pm
   hydra/trunk/src/root/build.tt

Modified: hydra/trunk/src/lib/Hydra/Controller/Build.pm
==============================================================================
--- hydra/trunk/src/lib/Hydra/Controller/Build.pm       Tue Jul 13 23:42:33 
2010        (r22594)
+++ hydra/trunk/src/lib/Hydra/Controller/Build.pm       Wed Jul 14 07:31:14 
2010        (r22595)
@@ -22,6 +22,7 @@
 
     $c->stash->{prevBuild} = getPreviousBuild($c, $c->stash->{build});
     $c->stash->{prevSuccessfulBuild} = getPreviousSuccessfulBuild($c, 
$c->stash->{build});
+    $c->stash->{firstBrokenBuild} = getNextBuild($c, 
$c->stash->{prevSuccessfulBuild});
 
     $c->stash->{mappers} = [$c->model('DB::UriRevMapper')->all];
 

Modified: hydra/trunk/src/lib/Hydra/Helper/CatalystUtils.pm
==============================================================================
--- hydra/trunk/src/lib/Hydra/Helper/CatalystUtils.pm   Tue Jul 13 23:42:33 
2010        (r22594)
+++ hydra/trunk/src/lib/Hydra/Helper/CatalystUtils.pm   Wed Jul 14 07:31:14 
2010        (r22595)
@@ -7,7 +7,7 @@
 
 our @ISA = qw(Exporter);
 our @EXPORT = qw(
-    getBuild getPreviousBuild getPreviousSuccessfulBuild getBuildStats 
joinWithResultInfo getChannelData
+    getBuild getPreviousBuild getNextBuild getPreviousSuccessfulBuild 
getBuildStats joinWithResultInfo getChannelData
     error notFound
     requireLogin requireProjectOwner requireAdmin requirePost isAdmin 
isProjectOwner
     trim
@@ -35,6 +35,20 @@
     return $prevBuild;
 }
 
+sub getNextBuild {
+    my ($c, $build) = @_;
+    (my $nextBuild) = $c->model('DB::Builds')->search(
+      { finished => 1
+      , system => $build->system
+      , project => $build->project->name
+      , jobset => $build->jobset->name
+      , job => $build->job->name
+      , 'me.id' =>  { '>' => $build->id } 
+      }, {rows => 1, order_by => "id ASC"});
+    
+    return $nextBuild;
+}
+
 sub getPreviousSuccessfulBuild {
     my ($c, $build) = @_;
     (my $prevBuild) = joinWithResultInfo($c, $c->model('DB::Builds'))->search(

Modified: hydra/trunk/src/root/build.tt
==============================================================================
--- hydra/trunk/src/root/build.tt       Tue Jul 13 23:42:33 2010        (r22594)
+++ hydra/trunk/src/root/build.tt       Wed Jul 14 07:31:14 2010        (r22595)
@@ -183,6 +183,16 @@
                                [% INCLUDE renderBuildSteps type="Failed" %]
                        [% END %]
 
+            [% IF prevSuccessfulBuild && firstBrokenBuild && 
firstBrokenBuild.id != build.id %]
+                <h2>Changes</h2>
+                <p>
+                   Build [% INCLUDE renderFullBuildLink build=firstBrokenBuild 
%] is the first build failure after the previous successful build of this job. 
The changes that might have caused the failure are:
+                </p>
+                [% INCLUDE renderInputDiff build2=prevSuccessfulBuild , 
build1=firstBrokenBuild %]
+                <br />
+                <p/>
+            [% END %]
+
             [% IF build.resultInfo.buildstatus != 0 && prevSuccessfulBuild %]
                 <h2>Changes</h2>
                 <p>
_______________________________________________
nix-commits mailing list
[email protected]
http://mail.cs.uu.nl/mailman/listinfo/nix-commits

Reply via email to