* Added a page to quickly see all failed builds and failed evaluations

[?]
Apr 8, 2009, 10:08 PM
75XUS62YF7OK4S45RCZ5OOASXEBIEDNDBYEEMOCBDHVXV4GA3NLQC

Dependencies

  • [2] ODNCGFQ5 * Improved the navigation bar: don't include all projects (since that
  • [3] SJN2QPWH * Big speed-up of the job status page and the channel generation (such
  • [4] 3HZY24CX * Make jobsets viewable under
  • [5] GNIEG2GC * Disambiguate jobs by jobset name. I.e. jobs with the same name in
  • [6] DEMSSSB2 * Controller for jobs which inherits all actions in ListBuilds. So
  • [7] UWVMQIAC * Refactoring.
  • [*] FPK5LF53 * Put the project-related actions in a separate controller. Put the
  • [*] J5UVLXOK * Start of a basic Catalyst web interface.
  • [*] IK53RV4V
  • [*] D5QIOJGP * Move everything up one directory.

Change contents

  • edit in src/lib/Hydra/Base/Controller/ListBuilds.pm at line 15
    [3.63]
    [9.330]
    }
    # A convenient way to see all the errors - i.e. things demanding
    # attention - at a glance.
    sub errors : Chained('get_builds') PathPart Args(0) {
    my ($self, $c) = @_;
    $c->stash->{template} = 'errors.tt';
    $c->stash->{brokenJobsets} =
    [$c->stash->{allJobsets}->search({errormsg => {'!=' => ''}})]
    if defined $c->stash->{allJobsets};
    $c->stash->{brokenJobs} =
    [$c->stash->{allJobs}->search({errormsg => {'!=' => ''}})]
    if defined $c->stash->{allJobs};
    $c->stash->{brokenBuilds} =
    [joinWithResultInfo($c, $c->stash->{jobStatus})->search({buildstatus => {'!=' => 0}})];
  • replacement in src/lib/Hydra/Controller/Job.pm at line 13
    [4.119][4.57:176]()
    $c->stash->{job} = $c->model('DB::Jobs')->find({project => $projectName, jobset => $jobsetName, name => $jobName})
    [4.119]
    [4.176]
    $c->stash->{job_} = $c->model('DB::Jobs')->search({project => $projectName, jobset => $jobsetName, name => $jobName});
    $c->stash->{job} = $c->stash->{job_}->single
  • edit in src/lib/Hydra/Controller/Job.pm at line 38
    [3.578]
    [3.578]
    $c->stash->{allJobs} = $c->stash->{job_};
  • replacement in src/lib/Hydra/Controller/Jobset.pm at line 18
    [4.564][4.564:637]()
    $c->stash->{jobset} = $project->jobsets->find({name => $jobsetName})
    [4.564]
    [4.637]
    $c->stash->{jobset_} = $project->jobsets->search({name => $jobsetName});
    $c->stash->{jobset} = $c->stash->{jobset_}->single
  • edit in src/lib/Hydra/Controller/Jobset.pm at line 42
    [3.946]
    [3.946]
    $c->stash->{allJobsets} = $c->stash->{jobset_};
    $c->stash->{allJobs} = $c->stash->{jobset}->jobs;
  • edit in src/lib/Hydra/Controller/Project.pm at line 175
    [3.1267]
    [3.1267]
    $c->stash->{allJobsets} = $c->stash->{project}->jobsets;
    $c->stash->{allJobs} = $c->stash->{project}->jobs;
  • edit in src/lib/Hydra/Controller/Root.pm at line 245
    [3.1491]
    [3.1491]
    $c->stash->{allJobsets} = $c->model('DB::Jobsets');
    $c->stash->{allJobs} = $c->model('DB::Jobs');
  • edit in src/root/common.tt at line 34
    [4.4344]
    [4.4344]
    [% BLOCK renderFullJobsetName %]
    <tt>
    [% INCLUDE renderProjectName %]:[% INCLUDE renderJobsetName %]
    </tt>
    [% END %]
  • file addition: errors.tt (----------)
    [12.1486]
    [% WRAPPER layout.tt title="Errors" %]
    [% PROCESS common.tt %]
    <h1>Errors</h1>
    <p>This page provides a quick way to see how FUBARed your packages
    are. It shows job expressions that don’t evaluate properly and jobs
    that don’t build.</p>
    [% haveErrors = 0 %]
    [% IF brokenJobsets && brokenJobsets.size > 0; haveErrors = 1 %]
    <h2>Evaluation errors in jobsets</h2>
    <table class="buildList tablesorter">
    <thead>
    <tr>
    <th>Name</th>
    <th>Error</th>
    </tr>
    </thead>
    <tdata>
    [% FOREACH j IN brokenJobsets %]
    <tr>
    <td>[% INCLUDE renderFullJobsetName project=j.project.name jobset=j.name %]</td>
    <td>
    <pre class="multiLineMsg error">[% HTML.escape(j.errormsg) %]</pre>
    </td>
    </tr>
    [% END %]
    </tdata>
    </table>
    [% END %]
    [% IF brokenJobs && brokenJobs.size > 0; haveErrors = 1 %]
    <h2>Evaluation errors in jobs</h2>
    <table class="buildList tablesorter">
    <thead>
    <tr>
    <th>Name</th>
    <th>Error</th>
    </tr>
    </thead>
    <tdata>
    [% FOREACH j IN brokenJobs %]
    <tr>
    <td>[% INCLUDE renderFullJobName project=j.project.name jobset=j.jobset.name job=j.name %]</td>
    <td>
    <pre class="multiLineMsg error">[% HTML.escape(j.errormsg) %]</pre>
    </td>
    </tr>
    [% END %]
    </tdata>
    </table>
    [% END %]
    [% IF brokenBuilds && brokenBuilds.size > 0; haveErrors = 1 %]
    <h2>Broken builds</h2>
    [% INCLUDE renderBuildList builds=brokenBuilds %]
    [% END %]
    [% IF !haveErrors %]
    <p><strong>There are currently no problems.</strong></p>
    [% END %]
    [% END %]
  • edit in src/root/navbar.tt at line 40
    [2.16318]
    [2.16318]
    [% INCLUDE makeLink
    uri = c.uri_for(c.controller('Root').action_for('errors'))
    title = "Errors" %]
  • edit in src/root/navbar.tt at line 57
    [2.16853]
    [2.16853]
    [% INCLUDE makeLink
    uri = c.uri_for(c.controller('Project').action_for('errors'), [project.name])
    title = "Errors" %]
  • edit in src/root/navbar.tt at line 75
    [2.17425]
    [2.17425]
    [% INCLUDE makeLink
    uri = c.uri_for(c.controller('Jobset').action_for('errors'), [project.name, jobset.name])
    title = "Errors" %]
  • edit in src/root/navbar.tt at line 93
    [2.17998]
    [2.17998]
    [% INCLUDE makeLink
    uri = c.uri_for(c.controller('Job').action_for('errors'), [project.name, jobset.name, job.name])
    title = "Errors" %]