From 64293fce79fdb2c1e24df4785a076fb2164c3e31 Mon Sep 17 00:00:00 2001 From: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> Date: Sun, 29 Jun 2025 21:08:51 -0600 Subject: [PATCH 1/2] feat: add kill process functionality to deployments - Implemented a new mutation to kill a running deployment process by its PID. - Updated the deployment schema to include a PID field. - Enhanced the deployment service to handle process termination and status updates. - Modified the deployment scripts to echo PID and schedule ID for better tracking. - Added error handling for the kill process operation. --- .../deployments/show-deployments.tsx | 28 + .../application/schedules/show-schedules.tsx | 16 +- apps/dokploy/drizzle/0098_conscious_chat.sql | 1 + apps/dokploy/drizzle/meta/0098_snapshot.json | 5832 +++++++++++++++++ apps/dokploy/drizzle/meta/_journal.json | 7 + apps/dokploy/server/api/routers/deployment.ts | 31 + packages/server/src/db/schema/deployment.ts | 1 + packages/server/src/services/deployment.ts | 1 + packages/server/src/services/schedule.ts | 7 +- packages/server/src/utils/schedules/utils.ts | 27 +- 10 files changed, 5940 insertions(+), 11 deletions(-) create mode 100644 apps/dokploy/drizzle/0098_conscious_chat.sql create mode 100644 apps/dokploy/drizzle/meta/0098_snapshot.json diff --git a/apps/dokploy/components/dashboard/application/deployments/show-deployments.tsx b/apps/dokploy/components/dashboard/application/deployments/show-deployments.tsx index d095e0efb..b8e773df7 100644 --- a/apps/dokploy/components/dashboard/application/deployments/show-deployments.tsx +++ b/apps/dokploy/components/dashboard/application/deployments/show-deployments.tsx @@ -62,6 +62,8 @@ export const ShowDeployments = ({ const { mutateAsync: rollback, isLoading: isRollingBack } = api.rollback.rollback.useMutation(); + const { mutateAsync: killProcess, isLoading: isKillingProcess } = + api.deployment.killProcess.useMutation(); const [url, setUrl] = React.useState(""); useEffect(() => { @@ -170,6 +172,32 @@ export const ShowDeployments = ({
+ {deployment.pid && deployment.status === "running" && ( + { + await killProcess({ + deploymentId: deployment.deploymentId, + }) + .then(() => { + toast.success("Process killed successfully"); + }) + .catch(() => { + toast.error("Error killing process"); + }); + }} + > + + + )}