From 0f56b57ba5cdc2b4b6f0bd3cf3b93738a35bbc9e Mon Sep 17 00:00:00 2001 From: Manager Bot Date: Fri, 11 Nov 2022 06:27:12 +0000 Subject: [PATCH] New job interface. --- Web/lib/MJB/Web.pm | 5 +++-- Web/lib/MJB/Web/Controller/Blog.pm | 4 ++-- Web/lib/MJB/Web/Controller/Dashboard.pm | 4 ++++ Web/lib/MJB/Web/Task/SyncBlog.pm | 2 +- Web/lib/MJB/Web/Task/SyncBlogMedia.pm | 2 +- .../_base/jobs/_milestones/create_ssl_cert.html.ep | 3 +++ .../_base/jobs/_milestones/initialize_blog.html.ep | 3 +++ .../_base/jobs/_milestones/sync_blog.html.ep | 5 +++++ .../_base/jobs/_milestones/sync_blog_media.html.ep | 3 +++ .../_base/jobs/_milestones/sync_ssl_certs.html.ep | 1 + .../_base/jobs/_milestones/wildcard_ssl.html.ep | 3 +++ Web/templates/dashboard/_blog_nav.html.ep | 11 +++++++++++ Web/templates/dashboard/blog_jobs.html.ep | 7 +++++++ 13 files changed, 47 insertions(+), 6 deletions(-) create mode 100644 Web/templates/_base/jobs/_milestones/create_ssl_cert.html.ep create mode 100644 Web/templates/_base/jobs/_milestones/initialize_blog.html.ep create mode 100644 Web/templates/_base/jobs/_milestones/sync_blog.html.ep create mode 100644 Web/templates/_base/jobs/_milestones/sync_blog_media.html.ep create mode 100644 Web/templates/_base/jobs/_milestones/sync_ssl_certs.html.ep create mode 100644 Web/templates/_base/jobs/_milestones/wildcard_ssl.html.ep create mode 100644 Web/templates/dashboard/blog_jobs.html.ep diff --git a/Web/lib/MJB/Web.pm b/Web/lib/MJB/Web.pm index 07beefb..20cfe9e 100644 --- a/Web/lib/MJB/Web.pm +++ b/Web/lib/MJB/Web.pm @@ -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' ); diff --git a/Web/lib/MJB/Web/Controller/Blog.pm b/Web/lib/MJB/Web/Controller/Blog.pm index b966ca3..9d36470 100644 --- a/Web/lib/MJB/Web/Controller/Blog.pm +++ b/Web/lib/MJB/Web/Controller/Blog.pm @@ -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 } ) ); diff --git a/Web/lib/MJB/Web/Controller/Dashboard.pm b/Web/lib/MJB/Web/Controller/Dashboard.pm index 514d188..120f22c 100644 --- a/Web/lib/MJB/Web/Controller/Dashboard.pm +++ b/Web/lib/MJB/Web/Controller/Dashboard.pm @@ -11,6 +11,10 @@ sub blog ( $c ) { my $blog = $c->stash->{blog}; } +sub jobs ( $c ) { + +} + sub blog_posts ( $c ) { my $blog = $c->stash->{blog}; diff --git a/Web/lib/MJB/Web/Task/SyncBlog.pm b/Web/lib/MJB/Web/Task/SyncBlog.pm index 32ea193..2a0daf3 100644 --- a/Web/lib/MJB/Web/Task/SyncBlog.pm +++ b/Web/lib/MJB/Web/Task/SyncBlog.pm @@ -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 ); diff --git a/Web/lib/MJB/Web/Task/SyncBlogMedia.pm b/Web/lib/MJB/Web/Task/SyncBlogMedia.pm index 1013d01..0b0a62e 100644 --- a/Web/lib/MJB/Web/Task/SyncBlogMedia.pm +++ b/Web/lib/MJB/Web/Task/SyncBlogMedia.pm @@ -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 ); diff --git a/Web/templates/_base/jobs/_milestones/create_ssl_cert.html.ep b/Web/templates/_base/jobs/_milestones/create_ssl_cert.html.ep new file mode 100644 index 0000000..40a2a84 --- /dev/null +++ b/Web/templates/_base/jobs/_milestones/create_ssl_cert.html.ep @@ -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' }; diff --git a/Web/templates/_base/jobs/_milestones/initialize_blog.html.ep b/Web/templates/_base/jobs/_milestones/initialize_blog.html.ep new file mode 100644 index 0000000..018ca2d --- /dev/null +++ b/Web/templates/_base/jobs/_milestones/initialize_blog.html.ep @@ -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' }; diff --git a/Web/templates/_base/jobs/_milestones/sync_blog.html.ep b/Web/templates/_base/jobs/_milestones/sync_blog.html.ep new file mode 100644 index 0000000..9b264c9 --- /dev/null +++ b/Web/templates/_base/jobs/_milestones/sync_blog.html.ep @@ -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' }; diff --git a/Web/templates/_base/jobs/_milestones/sync_blog_media.html.ep b/Web/templates/_base/jobs/_milestones/sync_blog_media.html.ep new file mode 100644 index 0000000..7d0b5fa --- /dev/null +++ b/Web/templates/_base/jobs/_milestones/sync_blog_media.html.ep @@ -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' }; diff --git a/Web/templates/_base/jobs/_milestones/sync_ssl_certs.html.ep b/Web/templates/_base/jobs/_milestones/sync_ssl_certs.html.ep new file mode 100644 index 0000000..830bc73 --- /dev/null +++ b/Web/templates/_base/jobs/_milestones/sync_ssl_certs.html.ep @@ -0,0 +1 @@ +%= include '_base/jobs/milestone', milestone => { is_complete => $job->{notes}->{is_sync_done}, text => 'Syncing SSL certificates with web servers' }; diff --git a/Web/templates/_base/jobs/_milestones/wildcard_ssl.html.ep b/Web/templates/_base/jobs/_milestones/wildcard_ssl.html.ep new file mode 100644 index 0000000..cf42701 --- /dev/null +++ b/Web/templates/_base/jobs/_milestones/wildcard_ssl.html.ep @@ -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' }; diff --git a/Web/templates/dashboard/_blog_nav.html.ep b/Web/templates/dashboard/_blog_nav.html.ep index a7996eb..d9dfb17 100644 --- a/Web/templates/dashboard/_blog_nav.html.ep +++ b/Web/templates/dashboard/_blog_nav.html.ep @@ -46,6 +46,17 @@
+ +