|
|
|
|
@ -1,152 +1,12 @@ |
|
|
|
|
% layout 'standard', title => 'Dashboard', sb_active => 'admin'; |
|
|
|
|
|
|
|
|
|
%# if ( $c->minion->jobs({ states => [ 'inactive', 'active' ], notes => [ '_bid_' . $blog->id ] } )->total >= 1 ) { |
|
|
|
|
%# $c->stash->{http_refresh} = 5; |
|
|
|
|
%# } |
|
|
|
|
% if ( $c->minion->jobs({ states => [ 'inactive', 'active' ], notes => [ '_bid_0' ] } )->total >= 1 ) { |
|
|
|
|
% $c->stash->{http_refresh} = 5; |
|
|
|
|
% } |
|
|
|
|
|
|
|
|
|
%= include 'admin/_nav', page => 'jobs' |
|
|
|
|
|
|
|
|
|
%= include '_base/status_window'; |
|
|
|
|
|
|
|
|
|
% if ( $c->stash->{success} ) { |
|
|
|
|
<div style="margin-top: 2em" class="alert alert-success" role="alert"> |
|
|
|
|
<%= $c->stash->{success_message} %> |
|
|
|
|
</div> |
|
|
|
|
% } |
|
|
|
|
|
|
|
|
|
% if ( $c->stash->{errors} ) { |
|
|
|
|
<div style="margin-top: 2em" class="alert alert-danger" role="alert"> |
|
|
|
|
There were errors with your request that could not be resolved: |
|
|
|
|
<ul> |
|
|
|
|
% for my $error ( @{$c->stash->{errors}} ) { |
|
|
|
|
<li><%= $error %></li> |
|
|
|
|
% } |
|
|
|
|
</ul> |
|
|
|
|
</div> |
|
|
|
|
% } |
|
|
|
|
|
|
|
|
|
%# Job Panel % |
|
|
|
|
% my $index = 0; |
|
|
|
|
% foreach my $build ( $c->db->admin_jobs->all ) { |
|
|
|
|
% $index++; |
|
|
|
|
% if ( my $build_job = $c->minion->job( $build->minion_job_id ) ) { |
|
|
|
|
% my $job = $build_job->info; |
|
|
|
|
|
|
|
|
|
% if ( $job->{state} eq 'finished' ) { |
|
|
|
|
<div class="card mt-4"> |
|
|
|
|
<div class="card-header alert-success"> |
|
|
|
|
%= include '_svg/checkmark' |
|
|
|
|
Build job <%= $build->{id} %>/<%= $job->{task} %> completed successfully. (Queued: <%= $build->{date} %>) |
|
|
|
|
<button class="btn" data-bs-toggle="collapse" data-bs-target="#job_window_<%= $job->{id} %>"> |
|
|
|
|
%= include '_svg/chevron' |
|
|
|
|
</button> |
|
|
|
|
</div> |
|
|
|
|
<div id="job_window_<%= $job->{id} %>" class="card-body <%= $index == 1 ? '' : 'collapse' %>"> |
|
|
|
|
|
|
|
|
|
%= include 'dashboard/_milestone', milestone => { is_complete => $job->{notes}->{is_deploy_complete}, text => 'Deploy to Webserver' }; |
|
|
|
|
|
|
|
|
|
%= include 'dashboard/_milestone', milestone => { is_complete => $job->{notes}->{is_build_complete}, text => 'Build Website' }; |
|
|
|
|
|
|
|
|
|
%= include 'dashboard/_milestone', milestone => { is_complete => $job->{notes}->{is_clone_complete}, text => 'Clone Repo & Check Settings' }; |
|
|
|
|
|
|
|
|
|
<hr /> |
|
|
|
|
|
|
|
|
|
<button class="btn btn-sm btn-primary" data-bs-toggle="collapse" data-bs-target="#job_log_window_<%= $job->{id} %>">View Logs</button> |
|
|
|
|
|
|
|
|
|
<div id="job_log_window_<%= $job->{id} %>" class="card-body collapse"> |
|
|
|
|
<hr /> |
|
|
|
|
<pre> |
|
|
|
|
% for my $line ( @{$job->{notes}{logs}} ) { |
|
|
|
|
<%= "$line\n" =%> |
|
|
|
|
% } |
|
|
|
|
</pre> |
|
|
|
|
</div> |
|
|
|
|
</div> |
|
|
|
|
</div> |
|
|
|
|
% } elsif ( $job->{state} eq 'inactive' ) { |
|
|
|
|
<div class="card mb-4 alert-warning"> |
|
|
|
|
<div class="card-header"> |
|
|
|
|
<div class="spinner-grow spinner-grow-sm" role="status"> |
|
|
|
|
<span class="visually-hidden">Waiting...</span> |
|
|
|
|
</div> |
|
|
|
|
Build <%= $build->{id} %> pending build. (Queued: <%= $build->{date} %>) |
|
|
|
|
</div> |
|
|
|
|
</div> |
|
|
|
|
|
|
|
|
|
% } elsif ( $job->{state} eq 'failed' ) { |
|
|
|
|
<div class="card mt-4"> |
|
|
|
|
<div class="card-header alert-warning"> |
|
|
|
|
%= include '_svg/failed' |
|
|
|
|
Build <%= $build->{id} %> failed. (Queued: <%= $build->{date} %>) |
|
|
|
|
<button class="btn" data-bs-toggle="collapse" data-bs-target="#job_window_<%= $job->{id} %>"> |
|
|
|
|
%= include '_svg/chevron' |
|
|
|
|
</button> |
|
|
|
|
</div> |
|
|
|
|
<div id="job_window_<%= $job->{id} %>" class="card-body <%= $index == 1 ? '' : 'collapse' %>"> |
|
|
|
|
|
|
|
|
|
%= include 'dashboard/_website/milestone', milestone => { is_complete => $job->{notes}->{is_deploy_complete}, text => 'Deploy to Webserver' }; |
|
|
|
|
|
|
|
|
|
%= include 'dashboard/_website/milestone', milestone => { is_complete => $job->{notes}->{is_build_complete}, text => 'Build Website' }; |
|
|
|
|
|
|
|
|
|
%= include 'dashboard/_website/milestone', milestone => { is_complete => $job->{notes}->{is_clone_complete}, text => 'Clone Repo & Check Settings' }; |
|
|
|
|
%= include '_base/jobs', jobs => [ $c->db->admin_jobs( { }, { order_by => { -desc => 'created_at' } } )->all ] |
|
|
|
|
|
|
|
|
|
<hr /> |
|
|
|
|
|
|
|
|
|
% if ( ! ref $job->{result} ) { |
|
|
|
|
<p class="text-danger"><strong>System Error: <%= $job->{result} %></strong></p> |
|
|
|
|
% } else { |
|
|
|
|
<p class="text-danger"><strong>Error: <%= $job->{result}{error} %></strong></p> |
|
|
|
|
% } |
|
|
|
|
|
|
|
|
|
<button class="btn" data-bs-toggle="collapse" data-bs-target="#job_log_window_<%= $job->{id} %>">View Logs</button> |
|
|
|
|
|
|
|
|
|
<div id="job_log_window_<%= $job->{id} %>" class="card-body collapse"> |
|
|
|
|
<hr /> |
|
|
|
|
<pre> |
|
|
|
|
% for my $line ( @{$job->{notes}{logs}} ) { |
|
|
|
|
<%= "$line\n" =%> |
|
|
|
|
% } |
|
|
|
|
</pre> |
|
|
|
|
</div> |
|
|
|
|
</div> |
|
|
|
|
</div> |
|
|
|
|
|
|
|
|
|
% } elsif ( $job->{state} eq 'active' ) { |
|
|
|
|
<div class="card mt-4"> |
|
|
|
|
<div class="card-header alert-warning"> |
|
|
|
|
<div class="spinner-grow spinner-grow-sm" role="status"> |
|
|
|
|
<span class="visually-hidden">Building...</span> |
|
|
|
|
</div> |
|
|
|
|
|
|
|
|
|
Building job <%= $build->{id} %>/<%= $job->{task} %>... (Queued: <%= $build->{date} %>) |
|
|
|
|
|
|
|
|
|
</div> |
|
|
|
|
<div id="job_window_<%= $job->{id} %>" class="card-body"> |
|
|
|
|
|
|
|
|
|
%= include 'dashboard/_milestone', milestone => { is_complete => $job->{notes}->{is_deploy_complete}, text => 'Deploy to Webserver' }; |
|
|
|
|
|
|
|
|
|
%= include 'dashboard/_milestone', milestone => { is_complete => $job->{notes}->{is_build_complete}, text => 'Build Website' }; |
|
|
|
|
|
|
|
|
|
%= include 'dashboard/_milestone', milestone => { is_complete => $job->{notes}->{is_clone_complete}, text => 'Clone Repo & Check Settings' }; |
|
|
|
|
|
|
|
|
|
<hr /> |
|
|
|
|
|
|
|
|
|
<div id="job_log_window_<%= $job->{id} %>" class="card-body"> |
|
|
|
|
<hr /> |
|
|
|
|
<pre> |
|
|
|
|
% for my $line ( @{$job->{notes}{logs}} ) { |
|
|
|
|
<%= "$line\n" =%> |
|
|
|
|
% } |
|
|
|
|
</pre> |
|
|
|
|
</div> |
|
|
|
|
</div> |
|
|
|
|
</div> |
|
|
|
|
|
|
|
|
|
% } else { |
|
|
|
|
Job in unknown state: <%= $build->{job_id} %> |
|
|
|
|
%= $job->{state} |
|
|
|
|
% } |
|
|
|
|
% } else { |
|
|
|
|
Job not found: <%= $build->{job_id} %> |
|
|
|
|
% } |
|
|
|
|
% } |
|
|
|
|
|