New job interface.

master
Manager Bot 3 years ago
parent 8cc2a70d40
commit 0f56b57ba5
  1. 5
      Web/lib/MJB/Web.pm
  2. 4
      Web/lib/MJB/Web/Controller/Blog.pm
  3. 4
      Web/lib/MJB/Web/Controller/Dashboard.pm
  4. 2
      Web/lib/MJB/Web/Task/SyncBlog.pm
  5. 2
      Web/lib/MJB/Web/Task/SyncBlogMedia.pm
  6. 3
      Web/templates/_base/jobs/_milestones/create_ssl_cert.html.ep
  7. 3
      Web/templates/_base/jobs/_milestones/initialize_blog.html.ep
  8. 5
      Web/templates/_base/jobs/_milestones/sync_blog.html.ep
  9. 3
      Web/templates/_base/jobs/_milestones/sync_blog_media.html.ep
  10. 1
      Web/templates/_base/jobs/_milestones/sync_ssl_certs.html.ep
  11. 3
      Web/templates/_base/jobs/_milestones/wildcard_ssl.html.ep
  12. 11
      Web/templates/dashboard/_blog_nav.html.ep
  13. 7
      Web/templates/dashboard/blog_jobs.html.ep

@ -52,7 +52,7 @@ sub startup ($self) {
notes => { '_bid_' . $blog->id => 1 },
priority => $blog->build_priority,
});
$blog->create_related( 'builds', { job_id => $build_job_id } );
$blog->create_related( 'jobs', { minion_job_id => $build_job_id } );
});
$self->helper( sync_blog_media => sub ( $c, $blog ) {
@ -60,7 +60,7 @@ sub startup ($self) {
notes => { '_bid_' . $blog->id => 1 },
priority => $blog->build_priority,
});
$blog->create_related( 'builds', { job_id => $build_job_id } );
$blog->create_related( 'jobs', { minion_job_id => $build_job_id } );
});
# Minion plugin & tasks
@ -185,6 +185,7 @@ sub startup ($self) {
$blog->get ( '/config' )->to('Dashboard#blog_config' )->name('show_dashboard_blog_config' );
$blog->post( '/config' )->to('Dashboard#do_blog_config' )->name('do_dashboard_blog_config' );
$blog->get ( '/builds' )->to('Dashboard#blog_builds' )->name('show_dashboard_blog_builds' );
$blog->get ( '/jobs' )->to('Dashboard#blog_jobs' )->name('show_dashboard_blog_jobs' );
$blog->get ( '/media' )->to('Dashboard#blog_media' )->name('show_dashboard_blog_media' );
$blog->post( '/media' )->to('Dashboard#do_blog_media' )->name('do_dashboard_blog_media' );
$blog->post( '/media/*file' )->to('Dashboard#do_blog_media_remove' )->name('do_dashboard_blog_media_remove' );

@ -132,7 +132,7 @@ sub _initialize_blog ( $c, $domain, $from, $ssl_domain ) {
priority => $blog->build_priority,
queue => 'certbot',
});
$blog->create_related( 'builds', { job_id => $ssl_job_id } );
$blog->create_related( 'jobs', { minion_job_id => $ssl_job_id } );
}
$c->redirect_to( $c->url_for( 'show_blog_settings', { id => $blog->id } ) );
@ -171,7 +171,7 @@ sub do_settings ( $c ) {
notes => { '_bid_' . $blog->id => 1 },
priority => $blog->build_priority,
});
$blog->create_related( 'builds', { job_id => $build_job_id } );
$blog->create_related( 'jobs', { minion_job_id => $build_job_id } );
$c->flash( confirmation => "Welcome to the dashboard for your new blog!" );
$c->redirect_to( $c->url_for( 'show_dashboard_blog', { id => $blog->id } ) );

@ -11,6 +11,10 @@ sub blog ( $c ) {
my $blog = $c->stash->{blog};
}
sub jobs ( $c ) {
}
sub blog_posts ( $c ) {
my $blog = $c->stash->{blog};

@ -5,7 +5,7 @@ use File::Copy::Recursive qw( dircopy );
use IPC::Run3;
sub run ( $job, $blog_id ) {
$job->note( _mds_template => 'build_static' );
$job->note( _mds_template => 'sync_blog' );
my $build_dir = $job->checkout_repo( $blog_id );
my $blog = $job->app->db->blog( $blog_id );

@ -5,7 +5,7 @@ use File::Copy::Recursive qw( dircopy );
use IPC::Run3;
sub run ( $job, $blog_id ) {
$job->note( _mds_template => 'build_static' );
$job->note( _mds_template => 'sync_blog_media' );
my $build_dir = $job->checkout_repo( $blog_id );
my $blog = $job->app->db->blog( $blog_id );

@ -0,0 +1,3 @@
%= include '_base/jobs/milestone', milestone => { is_complete => $job->{notes}->{is_create_done}, text => 'Requesting SSL certificate with certbot };
%= include '_base/jobs/milestone', milestone => { is_complete => $job->{notes}->{is_sync_done}, text => 'Syncing SSL certificates with web servers' };

@ -0,0 +1,3 @@
%= include '_base/jobs/milestone', milestone => { is_complete => $job->{notes}->{is_config_created}, text => 'Creating webserver configuration' };
%= include '_base/jobs/milestone', milestone => { is_complete => $job->{notes}->{is_config_deployed}, text => 'Updating and reloading webservers with new configuration' };

@ -0,0 +1,5 @@
%= include '_base/jobs/milestone', milestone => { is_complete => $job->{notes}->{is_clone_complete}, text => 'Getting copy of blog source directory.' };
%= include '_base/jobs/milestone', milestone => { is_complete => $job->{notes}->{is_build_complete}, text => 'Building production HTML content with Jekyll' };
%= include '_base/jobs/milestone', milestone => { is_complete => $job->{notes}->{is_deploy_complete}, text => 'Syncing HTML content with webservers' };

@ -0,0 +1,3 @@
%= include '_base/jobs/milestone', milestone => { is_complete => $job->{notes}->{is_clone_complete}, text => 'Getting copy of blog source directory.' };
%= include '_base/jobs/milestone', milestone => { is_complete => $job->{notes}->{is_deploy_complete}, text => 'Syncing media directory content with webservers' };

@ -0,0 +1 @@
%= include '_base/jobs/milestone', milestone => { is_complete => $job->{notes}->{is_sync_done}, text => 'Syncing SSL certificates with web servers' };

@ -0,0 +1,3 @@
%= include '_base/jobs/milestone', milestone => { is_complete => $job->{notes}->{is_create_done}, text => 'Creating wildcard SSL certificates with certbot' };
%= include '_base/jobs/milestone', milestone => { is_complete => $job->{notes}->{is_sync_done}, text => 'Syncing SSL certificates with web servers' };

@ -47,6 +47,17 @@
<div class="flex-grow-1 text-right"></div>
<li class="nav-item">
<a class="nav-link <%= $page eq 'jobs' ? 'active' : '' %>" href="<%= $c->url_for( 'show_dashboard_blog_jobs' ) %>">
% if ( $page ne 'jobs' && $c->minion->jobs({ states => [ 'inactive', 'active' ], notes => [ '_bid_' . $blog->id ] } )->total >= 1 ) {
<div class="spinner-grow spinner-grow-sm text-warning" role="status">
<span class="visually-hidden">Jobs Running</span>
</div>
% }
Jobs
</a>
</li>
<li class="nav-item">
<a class="nav-link <%= $page eq 'builds' ? 'active' : '' %>" href="<%= $c->url_for( 'show_dashboard_blog_builds' ) %>">
% if ( $page ne 'builds' && $c->minion->jobs({ states => [ 'inactive', 'active' ], notes => [ '_bid_' . $blog->id ] } )->total >= 1 ) {

@ -0,0 +1,7 @@
% layout 'standard', title => 'Dashboard', sb_active => 'dashboard';
%= include 'dashboard/_blog_nav', page => 'jobs'
%= include '_base/status_window';
%= include '_base/jobs', jobs => [ $blog->search_related( 'jobs', { }, { order_by => { -desc => 'created_at' } } )->all ]
Loading…
Cancel
Save