refactor: add preview deployments for cloud version

This commit is contained in:
Mauricio Siu 2024-12-08 17:30:32 -06:00
parent e03aef8e37
commit ce0e9ccddc
3 changed files with 30 additions and 2 deletions

View File

@ -19,6 +19,16 @@ export const deployJobSchema = z.discriminatedUnion("applicationType", [
applicationType: z.literal("compose"), applicationType: z.literal("compose"),
serverId: z.string().min(1), serverId: z.string().min(1),
}), }),
z.object({
applicationId: z.string(),
previewDeploymentId: z.string(),
titleLog: z.string(),
descriptionLog: z.string(),
server: z.boolean().optional(),
type: z.enum(["deploy"]),
applicationType: z.literal("application-preview"),
serverId: z.string().min(1),
}),
]); ]);
export type DeployJob = z.infer<typeof deployJobSchema>; export type DeployJob = z.infer<typeof deployJobSchema>;

View File

@ -1,10 +1,12 @@
import { import {
deployRemoteApplication, deployRemoteApplication,
deployRemoteCompose, deployRemoteCompose,
deployRemotePreviewApplication,
rebuildRemoteApplication, rebuildRemoteApplication,
rebuildRemoteCompose, rebuildRemoteCompose,
updateApplicationStatus, updateApplicationStatus,
updateCompose, updateCompose,
updatePreviewDeployment,
} from "@dokploy/server"; } from "@dokploy/server";
import type { DeployJob } from "./schema"; import type { DeployJob } from "./schema";
@ -47,6 +49,20 @@ export const deploy = async (job: DeployJob) => {
}); });
} }
} }
} else if (job.applicationType === "application-preview") {
await updatePreviewDeployment(job.previewDeploymentId, {
previewStatus: "running",
});
if (job.server) {
if (job.type === "deploy") {
await deployRemotePreviewApplication({
applicationId: job.applicationId,
titleLog: job.titleLog,
descriptionLog: job.descriptionLog,
previewDeploymentId: job.previewDeploymentId,
});
}
}
} }
} catch (error) { } catch (error) {
if (job.applicationType === "application") { if (job.applicationType === "application") {
@ -55,6 +71,10 @@ export const deploy = async (job: DeployJob) => {
await updateCompose(job.composeId, { await updateCompose(job.composeId, {
composeStatus: "error", composeStatus: "error",
}); });
} else if (job.applicationType === "application-preview") {
await updatePreviewDeployment(job.previewDeploymentId, {
previewStatus: "error",
});
} }
} }

View File

@ -21,8 +21,6 @@ export const deploymentWorker = new Worker(
"deployments", "deployments",
async (job: Job<DeploymentJob>) => { async (job: Job<DeploymentJob>) => {
try { try {
console.log(job.data);
if (job.data.applicationType === "application") { if (job.data.applicationType === "application") {
await updateApplicationStatus(job.data.applicationId, "running"); await updateApplicationStatus(job.data.applicationId, "running");