From be5b667734b8c65eafb0ccd35548a20a6d7c079e Mon Sep 17 00:00:00 2001 From: EdmondFrank Date: Tue, 2 Jul 2024 10:27:16 +0800 Subject: [PATCH] Adjustment of deployment status updates. Signed-off-by: EdmondFrank --- lib/compass_admin/agents/backend_agent.ex | 14 ++++++++++---- lib/compass_admin/agents/frontend_agent.ex | 14 ++++++++++---- .../components/deployment_page.ex | 2 +- .../live/backend_deployment_live.ex | 2 ++ .../live/frontend_deployment_live.ex | 2 ++ 5 files changed, 25 insertions(+), 9 deletions(-) diff --git a/lib/compass_admin/agents/backend_agent.ex b/lib/compass_admin/agents/backend_agent.ex index bb984aa..f07b38d 100644 --- a/lib/compass_admin/agents/backend_agent.ex +++ b/lib/compass_admin/agents/backend_agent.ex @@ -86,8 +86,7 @@ defmodule CompassAdmin.Agents.BackendAgent do {:update_deploy_state, :processing, trigger_id, {:ok, "processing"}} ) - do_deployment() - GenServer.cast(__MODULE__, {:update_deploy_state, :ok, trigger_id, {:ok, :success}}) + do_deployment(trigger_id) end) new_state = %{ @@ -119,7 +118,7 @@ defmodule CompassAdmin.Agents.BackendAgent do {:noreply, state} end - defp do_deployment() do + defp do_deployment(trigger_id) do [input: input, execute: execute] = Application.fetch_env!(:compass_admin, __MODULE__) Exile.stream(["bash", "-l", "-c", execute], input: input, stderr: :consume) @@ -127,7 +126,14 @@ defmodule CompassAdmin.Agents.BackendAgent do case stream do {:stdout, data} -> log(data) {:stderr, msg} -> log(msg) - {:exit, {:status, code}} -> log("exit with status: #{code}") + {:exit, {:status, code}} -> + msg = "exit with status: #{code}" + log(msg) + if code != 0 do + GenServer.cast(__MODULE__, {:update_deploy_state, :ok, trigger_id, {:error, msg}}) + else + GenServer.cast(__MODULE__, {:update_deploy_state, :ok, trigger_id, {:ok, :success}}) + end end end) |> Stream.run() diff --git a/lib/compass_admin/agents/frontend_agent.ex b/lib/compass_admin/agents/frontend_agent.ex index 485957b..7296e85 100644 --- a/lib/compass_admin/agents/frontend_agent.ex +++ b/lib/compass_admin/agents/frontend_agent.ex @@ -86,8 +86,7 @@ defmodule CompassAdmin.Agents.FrontendAgent do {:update_deploy_state, :processing, trigger_id, {:ok, "processing"}} ) - do_deployment() - GenServer.cast(__MODULE__, {:update_deploy_state, :ok, trigger_id, {:ok, :success}}) + do_deployment(trigger_id) end) new_state = %{ @@ -119,7 +118,7 @@ defmodule CompassAdmin.Agents.FrontendAgent do {:noreply, state} end - defp do_deployment() do + defp do_deployment(trigger_id) do [input: input, execute: execute] = Application.fetch_env!(:compass_admin, __MODULE__) Exile.stream(["bash", "-l", "-c", execute], input: input, stderr: :consume) @@ -127,7 +126,14 @@ defmodule CompassAdmin.Agents.FrontendAgent do case stream do {:stdout, data} -> log(data) {:stderr, msg} -> log(msg) - {:exit, {:status, code}} -> log("exit with status: #{code}") + {:exit, {:status, code}} -> + msg = "exit with status: #{code}" + log(msg) + if code != 0 do + GenServer.cast(__MODULE__, {:update_deploy_state, :ok, trigger_id, {:error, msg}}) + else + GenServer.cast(__MODULE__, {:update_deploy_state, :ok, trigger_id, {:ok, :success}}) + end end end) |> Stream.run() diff --git a/lib/compass_admin_web/components/deployment_page.ex b/lib/compass_admin_web/components/deployment_page.ex index f2ec891..7256d24 100644 --- a/lib/compass_admin_web/components/deployment_page.ex +++ b/lib/compass_admin_web/components/deployment_page.ex @@ -11,7 +11,7 @@ defmodule CompassAdminWeb.Components.DeploymentPage do
-

Backend recent deployment logs

+

<%= @title %>

    <%= for log <- Enum.reverse(@agent_state.logs) do %> diff --git a/lib/compass_admin_web/live/backend_deployment_live.ex b/lib/compass_admin_web/live/backend_deployment_live.ex index 9e3888c..220debc 100644 --- a/lib/compass_admin_web/live/backend_deployment_live.ex +++ b/lib/compass_admin_web/live/backend_deployment_live.ex @@ -17,6 +17,7 @@ defmodule CompassAdminWeb.BackendDeploymentLive do {:ok, assign(socket, + title: "Backend recent deployment logs", agent_state: state, can_deploy: can_deploy, current_user: current_user, @@ -73,6 +74,7 @@ defmodule CompassAdminWeb.BackendDeploymentLive do def render(assigns) do ~H""" <.deployment_page + title={@title} agent_state={@agent_state} last_trigger={@last_trigger} last_deployer={@last_deployer} diff --git a/lib/compass_admin_web/live/frontend_deployment_live.ex b/lib/compass_admin_web/live/frontend_deployment_live.ex index 81ab834..de964a2 100644 --- a/lib/compass_admin_web/live/frontend_deployment_live.ex +++ b/lib/compass_admin_web/live/frontend_deployment_live.ex @@ -17,6 +17,7 @@ defmodule CompassAdminWeb.FrontendDeploymentLive do {:ok, assign(socket, + title: "Frontend recent deployment logs", agent_state: state, can_deploy: can_deploy, current_user: current_user, @@ -73,6 +74,7 @@ defmodule CompassAdminWeb.FrontendDeploymentLive do def render(assigns) do ~H""" <.deployment_page + title={@title} agent_state={@agent_state} last_trigger={@last_trigger} last_deployer={@last_deployer}