* More release -> view.
[?]
Oct 20, 2009, 12:26 PM
2BUX775ILK47LEDXNPSVUAKVLEKG54ODCXRG3474DHY5PHJJBNBQCDependencies
- [2]
P5X4P6VK* Renaming "release sets" to "views" (not finished yet). Having - [3]
5IK6NYKF - [4]
H7CNGK4O* Log evaluation errors etc. in the DB. - [5]
OIUIYIV2* Give releases a timestamp. - [6]
ODNCGFQ5* Improved the navigation bar: don't include all projects (since that - [7]
IE3SRMWZ* Show global and per-project statistics. - [8]
G6HJY2V4 - [9]
D5QIOJGP* Move everything up one directory. - [10]
QU5I5GCL - [11]
H3DLVNCJ* Support redirecting to some job of a release. For instance, this - [12]
JFZNAYJX* Showing releases. - [13]
FHF6IZJQ* Basic release management: releases are now dynamically computed as - [14]
75XUS62Y* Added a page to quickly see all failed builds and failed evaluations - [15]
H5REHM3M - [16]
JLDUSNUO* Unify rendering of finished and scheduled builds. - [17]
UWVMQIAC* Refactoring. - [*]
FPK5LF53* Put the project-related actions in a separate controller. Put the - [*]
IK53RV4V
Change contents
- edit in src/lib/Hydra/Controller/Project.pm at line 180
}sub create_view_submit : Chained('project') PathPart('create-view/submit') Args(0) {my ($self, $c) = @_;requireProjectOwner($c, $c->stash->{project});my $viewName = $c->request->params->{name};my $view;txn_do($c->model('DB')->schema, sub {# Note: $viewName is validated in updateView, which will abort# the transaction if the name isn't valid.$view = $c->stash->{project}->views->create({name => $viewName});Hydra::Controller::View::updateView($c, $view);});$c->res->redirect($c->uri_for($c->controller('View')->action_for('view_view'),[$c->stash->{project}->name, $view->name])); - edit in src/lib/Hydra/Controller/Project.pm at line 201
- edit in src/lib/Hydra/Controller/Project.pm at line 203
sub create_view : Chained('project') PathPart('create-view') Args(0) {my ($self, $c) = @_; - edit in src/lib/Hydra/Controller/Project.pm at line 206
requireProjectOwner($c, $c->stash->{project});$c->stash->{template} = 'edit-view.tt';$c->stash->{create} = 1;} - replacement in src/lib/Hydra/Controller/View.pm at line 33
sub updateReleaseSet {my ($c, $releaseSet) = @_;sub updateView {my ($c, $view) = @_; - replacement in src/lib/Hydra/Controller/View.pm at line 36
my $releaseSetName = trim $c->request->params->{name};error($c, "Invalid release set name: $releaseSetName")unless $releaseSetName =~ /^[[:alpha:]][\w\-]*$/;my $viewName = trim $c->request->params->{name};error($c, "Invalid view name: $viewName")unless $viewName =~ /^[[:alpha:]][\w\-]*$/; - replacement in src/lib/Hydra/Controller/View.pm at line 40
$releaseSet->update({ name => $releaseSetName$view->update({ name => $viewName - replacement in src/lib/Hydra/Controller/View.pm at line 44
$releaseSet->releasesetjobs->delete_all;$view->viewjobs->delete_all; - replacement in src/lib/Hydra/Controller/View.pm at line 59
unless $releaseSet->project->jobsets->find({name => $jobsetName});unless $view->project->jobsets->find({name => $jobsetName}); - replacement in src/lib/Hydra/Controller/View.pm at line 65
$releaseSet->releasesetjobs->create($view->viewjobs->create( - replacement in src/lib/Hydra/Controller/View.pm at line 75
if $releaseSet->releasesetjobs->search({isprimary => 1})->count != 1;if $view->viewjobs->search({isprimary => 1})->count != 1; - replacement in src/lib/Hydra/Controller/View.pm at line 101
$c->stash->{baseUri} = $c->uri_for($self->action_for("view"), $c->stash->{project}->name, $c->stash->{view}->name);$c->stash->{baseUri} = $c->uri_for($self->action_for("view_view"), $c->req->captures); - edit in src/lib/Hydra/Controller/View.pm at line 113
}sub submit : Chained('view') PathPart('submit') Args(0) {my ($self, $c) = @_;requireProjectOwner($c, $c->stash->{project});txn_do($c->model('DB')->schema, sub {updateView($c, $c->stash->{view});});$c->res->redirect($c->uri_for($self->action_for("view_view"), $c->req->captures)); - edit in src/lib/Hydra/Controller/View.pm at line 126
sub delete : Chained('view') PathPart('delete') Args(0) {my ($self, $c) = @_;requireProjectOwner($c, $c->stash->{project});txn_do($c->model('DB')->schema, sub {$c->stash->{view}->delete;});$c->res->redirect($c->uri_for($c->controller('Project')->action_for('view'), [$c->stash->{project}->name]));} - replacement in src/lib/Hydra/Controller/View.pm at line 144
return $c->res->redirect($c->uri_for("/view", $c->stash->{project}->name, $c->stash->{view}->name, $latest->id, @args));$c->res->redirect($c->uri_for($self->action_for("view_view"), $c->req->captures, $latest->id, @args)); - replacement in src/lib/Hydra/Controller/View.pm at line 151
$c->stash->{template} = 'release.tt';$c->stash->{template} = 'view-result.tt'; - replacement in src/lib/Hydra/Controller/View.pm at line 161
$c->stash->{release} = getRelease($primaryBuild, $c->stash->{jobs});$c->stash->{result} = getRelease($primaryBuild, $c->stash->{jobs}); - replacement in src/lib/Hydra/Controller/View.pm at line 163
# Provide a redirect to the specified job of this release. !!!# This isn't uniquely defined if there are multiple jobs with the# same name (e.g. builds for different platforms). However, this# mechanism is primarily to allow linking to resources of which# there is only one build, such as the manual of the latest# release.# Provide a redirect to the specified job of this view result.# !!! This isn't uniquely defined if there are multiple jobs with# the same name (e.g. builds for different platforms). However,# this mechanism is primarily to allow linking to resources of# which there is only one build, such as the manual of the latest# view result. - replacement in src/lib/Hydra/Controller/View.pm at line 171
(my $build, my @others) = grep { $_->{job}->job eq $jobName } @{$c->stash->{release}->{jobs}};notFound($c, "Release doesn't have a job named `$jobName'")(my $build, my @others) = grep { $_->{job}->job eq $jobName } @{$c->stash->{result}->{jobs}};notFound($c, "View doesn't have a job named `$jobName'") - replacement in src/root/common.tt at line 162
[% BLOCK renderReleaseJobName -%][% BLOCK renderViewJobName -%] - replacement in src/root/edit-view.tt at line 24
<form action="[% IF create %][% c.uri_for('/create-view' project.name 'submit') %][% ELSE %][% c.uri_for('/view' project.name view.name 'submit') %][% END %]" method="post"><form action="[% IF create %][% c.uri_for('/project' project.name 'create-view/submit') %][% ELSE %][% c.uri_for('/view' project.name view.name 'submit') %][% END %]" method="post"> - file move: release.tt → view-result.tt
- replacement in src/root/view-result.tt at line 1
[% releaseName = (release.releasename || "(No name)") -%][% WRAPPER layout.tt title="Release $releaseName" %][% releaseName = (result.releasename || "(No name)") -%][% WRAPPER layout.tt title="View $releaseName" %] - replacement in src/root/view-result.tt at line 7
<h1>Release <tt>[% releaseName %]</tt></h1><h1>View <tt>[% view.project.name %]:[% view.name %]</tt> result [% result.id %][% IF result.releasename %] (<tt>[% result.releasename %]</tt>)[% END %]</h1> - replacement in src/root/view-result.tt at line 9
<p><em>Released on [% INCLUDE renderDateTime timestamp = release.timestamp %].</em></p><p><em>Finished building on [% INCLUDE renderDateTime timestamp = result.timestamp %].</em></p> - replacement in src/root/view-result.tt at line 11
[% IF release.status == 1 %]<p class="error">This is a failed release. One of its jobs has failed. See below for details.</p>[% ELSIF release.status == 2 %]<p class="error">This is an incomplete release. One of its jobs has not been built (yet). See below for details.</p>[% IF result.status == 1 %]<p class="error">Note: One or more of the jobs in the view did not build correctly. See below for details.</p>[% ELSIF result.status == 2 %]<p class="error">Note: One or more of the jobs in the view have not been built (yet). See below for details.</p> - replacement in src/root/view-result.tt at line 17
[% FOREACH j IN release.jobs %][% FOREACH j IN result.jobs %] - replacement in src/root/view-result.tt at line 21
[% INCLUDE renderReleaseJobName job=j.job %][% INCLUDE renderViewJobName job=j.job %] - replacement in src/root/view-result.tt at line 29
[% INCLUDE renderProductList build=j.build latestRoot=['/release' project.name releaseSet.name 'latest' j.job.job] %][% INCLUDE renderProductList build=j.build latestRoot=['/view' project.name view.name 'latest' j.job.job] %] - replacement in src/root/view.tt at line 22
<th class="releaseSetJobName">[% INCLUDE renderReleaseJobName job=j %]</th><th class="releaseSetJobName">[% INCLUDE renderViewJobName job=j %]</th>