You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
152 lines
6.6 KiB
152 lines
6.6 KiB
% 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;
|
|
%# }
|
|
|
|
%= 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->{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' };
|
|
|
|
<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} %>
|
|
% }
|
|
% }
|
|
|