From 5e93700cb546b0c2b23345f66b5c8a2a5e8c9936 Mon Sep 17 00:00:00 2001 From: Chris Zhu Date: Mon, 21 Oct 2024 16:33:02 -0700 Subject: [PATCH] ux improvements --- README.md | 3 --- .../controllers/new_add_ons_controller.js | 2 +- app/jobs/projects/deployment_job.rb | 8 ++++++- app/models/project.rb | 4 ++++ app/views/projects/_index.html.erb | 4 +++- app/views/projects/_status.html.erb | 6 +++++- app/views/projects/deployments/index.html.erb | 4 +++- app/views/projects/services/_show.html.erb | 12 ++++++++++- app/views/projects/services/new.html.erb | 17 +++++++++++++-- resources/k8/stateless/deployment.yaml | 21 ++++++++++++++++++- 10 files changed, 69 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index 281a3e4e..0778df29 100644 --- a/README.md +++ b/README.md @@ -8,9 +8,6 @@ * Make it show which git SHA is currently deployed on the homepage * Or if there is currently a deploy happening * I want a way to “stop” the processes, can maybe do this with a replicas=0 setting -* All the times need to show relative times, not absolute. It’s too hard to understand absolute times. -* Whenever something is pushed, and deployed, we need to kill all one off containers because they are no longer running the correct source code -* “Pending” should have some kind of active spinner animation just for the feels * Rebulid metrics tabs so it works for both clusters & pods https://overcast.blog/zero-downtime-deployments-with-kubernetes-a-full-guide-71019397b924?gi=95ab85c45634 * Team mates features diff --git a/app/javascript/controllers/new_add_ons_controller.js b/app/javascript/controllers/new_add_ons_controller.js index ee9f110b..a630a137 100644 --- a/app/javascript/controllers/new_add_ons_controller.js +++ b/app/javascript/controllers/new_add_ons_controller.js @@ -14,6 +14,6 @@ export default class extends Controller { event.currentTarget.classList.add('ring', 'ring-primary') // Show Input this.element.querySelectorAll('.card-form').forEach(form => form.classList.add('hidden')) - this.element.querySelector(`#card-${event.currentTarget.dataset.cardName}`)?.classList.remove("hidden"); + this.element.querySelectorAll(`.card-${event.currentTarget.dataset.cardName}`).forEach(form => form.classList.remove("hidden")); } } \ No newline at end of file diff --git a/app/jobs/projects/deployment_job.rb b/app/jobs/projects/deployment_job.rb index 72f5094a..2ce6488a 100644 --- a/app/jobs/projects/deployment_job.rb +++ b/app/jobs/projects/deployment_job.rb @@ -63,11 +63,17 @@ class Projects::DeploymentJob < ApplicationJob elsif service.web_service? apply_deployment(service, kubectl) apply_service(service, kubectl) - if service.domains.any? + if service.domains.any? && service.allow_public_networking? apply_ingress(service, kubectl) end restart_deployment(service, kubectl) end + # Kill all one off containers + kill_one_off_containers(service, kubectl) + end + + def kill_one_off_containers(service, kubectl) + kubectl.call("-n #{service.project.name} delete pods -l oneoff=true") end def apply_namespace(project, kubectl) diff --git a/app/models/project.rb b/app/models/project.rb index 37d7b7c3..bc475d3a 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -48,6 +48,10 @@ class Project < ApplicationRecord deployments.order(created_at: :desc).where(status: :completed).first end + def last_build + builds.order(created_at: :desc).first + end + def last_deployment deployments.order(created_at: :desc).first end diff --git a/app/views/projects/_index.html.erb b/app/views/projects/_index.html.erb index 1166c9be..f95f9b8d 100644 --- a/app/views/projects/_index.html.erb +++ b/app/views/projects/_index.html.erb @@ -31,7 +31,9 @@ <% if project.last_deployment_at %>
-
<%= "#{distance_of_time_in_words(project.last_deployment_at, Time.current)} ago" %>
+
" class="tooltip"> +
<%= "#{distance_of_time_in_words(project.last_deployment_at, Time.current)} ago" %>
+
<%= project.last_deployment.build.commit_message %>
<% else %> diff --git a/app/views/projects/_status.html.erb b/app/views/projects/_status.html.erb index af4b77a6..2d3fbaef 100644 --- a/app/views/projects/_status.html.erb +++ b/app/views/projects/_status.html.erb @@ -1,4 +1,8 @@ -<% if project.last_deployment&.in_progress? %> +<% if project.last_build&.in_progress? %> +
+ Building +
+<% elsif project.last_deployment&.in_progress? %>
Deploying
diff --git a/app/views/projects/deployments/index.html.erb b/app/views/projects/deployments/index.html.erb index 725f2f4c..505a059b 100644 --- a/app/views/projects/deployments/index.html.erb +++ b/app/views/projects/deployments/index.html.erb @@ -61,7 +61,9 @@ -
<%= build.created_at.strftime("%B %d, %Y %H:%M") %>
+
" class="tooltip"> +
<%= distance_of_time_in_words(build.created_at, Time.current) %> ago
+
diff --git a/app/views/projects/services/_show.html.erb b/app/views/projects/services/_show.html.erb index 4778aa6a..f2651cef 100644 --- a/app/views/projects/services/_show.html.erb +++ b/app/views/projects/services/_show.html.erb @@ -30,14 +30,24 @@
<% end %> + <% if service.web_service? || service.background_service? %> +
+

Resources

+
+ <%= form.label :replicas %> + <%= form.number_field :replicas, class: "input input-bordered", placeholder: "1" %> +
+
+ <% end %> <% end %> - <% if service.web_service? %> + <% if service.web_service? && service.allow_public_networking? %>

Networking

diff --git a/app/views/projects/services/new.html.erb b/app/views/projects/services/new.html.erb index e1b4eff7..bf086fc4 100644 --- a/app/views/projects/services/new.html.erb +++ b/app/views/projects/services/new.html.erb @@ -74,7 +74,7 @@
-