From e78d354d0d1548c0cef15edc783eef1f43bd12e9 Mon Sep 17 00:00:00 2001 From: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> Date: Thu, 28 Nov 2024 23:17:21 -0600 Subject: [PATCH] fix: add missing server flag boolean --- apps/dokploy/pages/api/deploy/github.ts | 229 ++++++++++++------------ 1 file changed, 115 insertions(+), 114 deletions(-) diff --git a/apps/dokploy/pages/api/deploy/github.ts b/apps/dokploy/pages/api/deploy/github.ts index bdbc0293..1d8c094a 100644 --- a/apps/dokploy/pages/api/deploy/github.ts +++ b/apps/dokploy/pages/api/deploy/github.ts @@ -10,137 +10,138 @@ import type { NextApiRequest, NextApiResponse } from "next"; import { extractCommitMessage, extractHash } from "./[refreshToken]"; export default async function handler( - req: NextApiRequest, - res: NextApiResponse, + req: NextApiRequest, + res: NextApiResponse ) { - const signature = req.headers["x-hub-signature-256"]; - const githubBody = req.body; + const signature = req.headers["x-hub-signature-256"]; + const githubBody = req.body; - if (!githubBody?.installation?.id) { - res.status(400).json({ message: "Github Installation not found" }); - return; - } + if (!githubBody?.installation?.id) { + res.status(400).json({ message: "Github Installation not found" }); + return; + } - const githubResult = await db.query.github.findFirst({ - where: eq(github.githubInstallationId, githubBody.installation.id), - }); + const githubResult = await db.query.github.findFirst({ + where: eq(github.githubInstallationId, githubBody.installation.id), + }); - if (!githubResult) { - res.status(400).json({ message: "Github Installation not found" }); - return; - } + if (!githubResult) { + res.status(400).json({ message: "Github Installation not found" }); + return; + } - if (!githubResult.githubWebhookSecret) { - res.status(400).json({ message: "Github Webhook Secret not set" }); - return; - } - const webhooks = new Webhooks({ - secret: githubResult.githubWebhookSecret, - }); + if (!githubResult.githubWebhookSecret) { + res.status(400).json({ message: "Github Webhook Secret not set" }); + return; + } + const webhooks = new Webhooks({ + secret: githubResult.githubWebhookSecret, + }); - const verified = await webhooks.verify( - JSON.stringify(githubBody), - signature as string, - ); + const verified = await webhooks.verify( + JSON.stringify(githubBody), + signature as string + ); - if (!verified) { - res.status(401).json({ message: "Unauthorized" }); - return; - } + if (!verified) { + res.status(401).json({ message: "Unauthorized" }); + return; + } - if (req.headers["x-github-event"] === "ping") { - res.status(200).json({ message: "Ping received, webhook is active" }); - return; - } + if (req.headers["x-github-event"] === "ping") { + res.status(200).json({ message: "Ping received, webhook is active" }); + return; + } - if (req.headers["x-github-event"] !== "push") { - res.status(400).json({ message: "We only accept push events" }); - return; - } + if (req.headers["x-github-event"] !== "push") { + res.status(400).json({ message: "We only accept push events" }); + return; + } - try { - const branchName = githubBody?.ref?.replace("refs/heads/", ""); - const repository = githubBody?.repository?.name; - const deploymentTitle = extractCommitMessage(req.headers, req.body); - const deploymentHash = extractHash(req.headers, req.body); + try { + const branchName = githubBody?.ref?.replace("refs/heads/", ""); + const repository = githubBody?.repository?.name; + const deploymentTitle = extractCommitMessage(req.headers, req.body); + const deploymentHash = extractHash(req.headers, req.body); - const apps = await db.query.applications.findMany({ - where: and( - eq(applications.sourceType, "github"), - eq(applications.autoDeploy, true), - eq(applications.branch, branchName), - eq(applications.repository, repository), - ), - }); + const apps = await db.query.applications.findMany({ + where: and( + eq(applications.sourceType, "github"), + eq(applications.autoDeploy, true), + eq(applications.branch, branchName), + eq(applications.repository, repository) + ), + }); - for (const app of apps) { - const jobData: DeploymentJob = { - applicationId: app.applicationId as string, - titleLog: deploymentTitle, - descriptionLog: `Hash: ${deploymentHash}`, - type: "deploy", - applicationType: "application", - server: !!app.serverId, - }; + for (const app of apps) { + const jobData: DeploymentJob = { + applicationId: app.applicationId as string, + titleLog: deploymentTitle, + descriptionLog: `Hash: ${deploymentHash}`, + type: "deploy", + applicationType: "application", + server: !!app.serverId, + }; - if (IS_CLOUD && app.serverId) { - jobData.serverId = app.serverId; - await deploy(jobData); - return true; - } - await myQueue.add( - "deployments", - { ...jobData }, - { - removeOnComplete: true, - removeOnFail: true, - }, - ); - } + if (IS_CLOUD && app.serverId) { + jobData.serverId = app.serverId; + await deploy(jobData); + return true; + } + await myQueue.add( + "deployments", + { ...jobData }, + { + removeOnComplete: true, + removeOnFail: true, + } + ); + } - const composeApps = await db.query.compose.findMany({ - where: and( - eq(compose.sourceType, "github"), - eq(compose.autoDeploy, true), - eq(compose.branch, branchName), - eq(compose.repository, repository), - ), - }); + const composeApps = await db.query.compose.findMany({ + where: and( + eq(compose.sourceType, "github"), + eq(compose.autoDeploy, true), + eq(compose.branch, branchName), + eq(compose.repository, repository) + ), + }); - for (const composeApp of composeApps) { - const jobData: DeploymentJob = { - composeId: composeApp.composeId as string, - titleLog: deploymentTitle, - type: "deploy", - applicationType: "compose", - descriptionLog: `Hash: ${deploymentHash}`, - }; + for (const composeApp of composeApps) { + const jobData: DeploymentJob = { + composeId: composeApp.composeId as string, + titleLog: deploymentTitle, + type: "deploy", + applicationType: "compose", + descriptionLog: `Hash: ${deploymentHash}`, + server: !!composeApp.serverId, + }; - if (IS_CLOUD && composeApp.serverId) { - jobData.serverId = composeApp.serverId; - await deploy(jobData); - return true; - } + if (IS_CLOUD && composeApp.serverId) { + jobData.serverId = composeApp.serverId; + await deploy(jobData); + return true; + } - await myQueue.add( - "deployments", - { ...jobData }, - { - removeOnComplete: true, - removeOnFail: true, - }, - ); - } + await myQueue.add( + "deployments", + { ...jobData }, + { + removeOnComplete: true, + removeOnFail: true, + } + ); + } - const totalApps = apps.length + composeApps.length; - const emptyApps = totalApps === 0; + const totalApps = apps.length + composeApps.length; + const emptyApps = totalApps === 0; - if (emptyApps) { - res.status(200).json({ message: "No apps to deploy" }); - return; - } - res.status(200).json({ message: `Deployed ${totalApps} apps` }); - } catch (error) { - res.status(400).json({ message: "Error To Deploy Application", error }); - } + if (emptyApps) { + res.status(200).json({ message: "No apps to deploy" }); + return; + } + res.status(200).json({ message: `Deployed ${totalApps} apps` }); + } catch (error) { + res.status(400).json({ message: "Error To Deploy Application", error }); + } }