From 6417e133368fed62407af6017ad717bb1a5103d4 Mon Sep 17 00:00:00 2001 From: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> Date: Wed, 30 Oct 2024 22:44:01 -0600 Subject: [PATCH 1/2] fix(dokploy): remove old deployments --- packages/server/src/services/deployment.ts | 75 +++++++++++++++++----- 1 file changed, 58 insertions(+), 17 deletions(-) diff --git a/packages/server/src/services/deployment.ts b/packages/server/src/services/deployment.ts index 5ae6d130..78d30e5f 100644 --- a/packages/server/src/services/deployment.ts +++ b/packages/server/src/services/deployment.ts @@ -49,7 +49,10 @@ export const createDeployment = async ( const application = await findApplicationById(deployment.applicationId); try { - // await removeLastTenDeployments(deployment.applicationId); + await removeLastTenDeployments( + deployment.applicationId, + application.serverId, + ); const { LOGS_PATH } = paths(!!application.serverId); const formattedDateTime = format(new Date(), "yyyy-MM-dd:HH:mm:ss"); const fileName = `${application.appName}-${formattedDateTime}.log`; @@ -106,7 +109,10 @@ export const createDeploymentCompose = async ( ) => { const compose = await findComposeById(deployment.composeId); try { - // await removeLastTenComposeDeployments(deployment.composeId); + await removeLastTenComposeDeployments( + deployment.composeId, + compose.serverId, + ); const { LOGS_PATH } = paths(!!compose.serverId); const formattedDateTime = format(new Date(), "yyyy-MM-dd:HH:mm:ss"); const fileName = `${compose.appName}-${formattedDateTime}.log`; @@ -181,36 +187,72 @@ export const removeDeploymentsByApplicationId = async ( .returning(); }; -const removeLastTenDeployments = async (applicationId: string) => { +const removeLastTenDeployments = async ( + applicationId: string, + serverId: string | null, +) => { const deploymentList = await db.query.deployments.findMany({ where: eq(deployments.applicationId, applicationId), orderBy: desc(deployments.createdAt), }); - if (deploymentList.length > 10) { + + if (deploymentList.length >= 10) { const deploymentsToDelete = deploymentList.slice(10); - for (const oldDeployment of deploymentsToDelete) { - const logPath = path.join(oldDeployment.logPath); - if (existsSync(logPath)) { - await fsPromises.unlink(logPath); + if (serverId) { + let command = ""; + for (const oldDeployment of deploymentsToDelete) { + const logPath = path.join(oldDeployment.logPath); + + command += ` + rm -rf ${logPath}; + `; + await removeDeployment(oldDeployment.deploymentId); + } + + await execAsyncRemote(serverId, command); + } else { + for (const oldDeployment of deploymentsToDelete) { + const logPath = path.join(oldDeployment.logPath); + if (existsSync(logPath)) { + await fsPromises.unlink(logPath); + } + await removeDeployment(oldDeployment.deploymentId); } - await removeDeployment(oldDeployment.deploymentId); } } }; -const removeLastTenComposeDeployments = async (composeId: string) => { +const removeLastTenComposeDeployments = async ( + composeId: string, + serverId: string | null, +) => { const deploymentList = await db.query.deployments.findMany({ where: eq(deployments.composeId, composeId), orderBy: desc(deployments.createdAt), }); if (deploymentList.length > 10) { - const deploymentsToDelete = deploymentList.slice(10); - for (const oldDeployment of deploymentsToDelete) { - const logPath = path.join(oldDeployment.logPath); - if (existsSync(logPath)) { - await fsPromises.unlink(logPath); + if (serverId) { + let command = ""; + const deploymentsToDelete = deploymentList.slice(10); + for (const oldDeployment of deploymentsToDelete) { + const logPath = path.join(oldDeployment.logPath); + + command += ` + rm -rf ${logPath}; + `; + await removeDeployment(oldDeployment.deploymentId); + } + + await execAsyncRemote(serverId, command); + } else { + const deploymentsToDelete = deploymentList.slice(10); + for (const oldDeployment of deploymentsToDelete) { + const logPath = path.join(oldDeployment.logPath); + if (existsSync(logPath)) { + await fsPromises.unlink(logPath); + } + await removeDeployment(oldDeployment.deploymentId); } - await removeDeployment(oldDeployment.deploymentId); } } }; @@ -327,7 +369,6 @@ export const createServerDeployment = async ( } return deploymentCreate[0]; } catch (error) { - console.log(error); throw new TRPCError({ code: "BAD_REQUEST", message: "Error to create the deployment", From 41b274fbb33927259acc8d86b73f1aaef4d55ab6 Mon Sep 17 00:00:00 2001 From: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> Date: Wed, 30 Oct 2024 22:50:12 -0600 Subject: [PATCH 2/2] refactor(dokploy): set condition to 10 --- packages/server/src/services/deployment.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/server/src/services/deployment.ts b/packages/server/src/services/deployment.ts index 78d30e5f..63f3cf23 100644 --- a/packages/server/src/services/deployment.ts +++ b/packages/server/src/services/deployment.ts @@ -196,7 +196,7 @@ const removeLastTenDeployments = async ( orderBy: desc(deployments.createdAt), }); - if (deploymentList.length >= 10) { + if (deploymentList.length > 10) { const deploymentsToDelete = deploymentList.slice(10); if (serverId) { let command = "";