Skip to content

Commit 62474c1

Browse files
authored
Merge pull request #2978 from Dokploy/unify-deployment-logic
Refactor compose and deployment services: streamline cloning and exec…
2 parents 22f704d + 26ff407 commit 62474c1

File tree

25 files changed

+456
-2723
lines changed

25 files changed

+456
-2723
lines changed

apps/api/src/utils.ts

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
import {
2-
deployRemoteApplication,
3-
deployRemoteCompose,
4-
deployRemotePreviewApplication,
5-
rebuildRemoteApplication,
6-
rebuildRemoteCompose,
2+
deployApplication,
3+
deployCompose,
4+
deployPreviewApplication,
5+
rebuildApplication,
6+
rebuildCompose,
77
updateApplicationStatus,
88
updateCompose,
99
updatePreviewDeployment,
@@ -16,13 +16,13 @@ export const deploy = async (job: DeployJob) => {
1616
await updateApplicationStatus(job.applicationId, "running");
1717
if (job.server) {
1818
if (job.type === "redeploy") {
19-
await rebuildRemoteApplication({
19+
await rebuildApplication({
2020
applicationId: job.applicationId,
2121
titleLog: job.titleLog || "Rebuild deployment",
2222
descriptionLog: job.descriptionLog || "",
2323
});
2424
} else if (job.type === "deploy") {
25-
await deployRemoteApplication({
25+
await deployApplication({
2626
applicationId: job.applicationId,
2727
titleLog: job.titleLog || "Manual deployment",
2828
descriptionLog: job.descriptionLog || "",
@@ -36,13 +36,13 @@ export const deploy = async (job: DeployJob) => {
3636

3737
if (job.server) {
3838
if (job.type === "redeploy") {
39-
await rebuildRemoteCompose({
39+
await rebuildCompose({
4040
composeId: job.composeId,
4141
titleLog: job.titleLog || "Rebuild deployment",
4242
descriptionLog: job.descriptionLog || "",
4343
});
4444
} else if (job.type === "deploy") {
45-
await deployRemoteCompose({
45+
await deployCompose({
4646
composeId: job.composeId,
4747
titleLog: job.titleLog || "Manual deployment",
4848
descriptionLog: job.descriptionLog || "",
@@ -55,7 +55,7 @@ export const deploy = async (job: DeployJob) => {
5555
});
5656
if (job.server) {
5757
if (job.type === "deploy") {
58-
await deployRemotePreviewApplication({
58+
await deployPreviewApplication({
5959
applicationId: job.applicationId,
6060
titleLog: job.titleLog || "Preview Deployment",
6161
descriptionLog: job.descriptionLog || "",

apps/dokploy/server/api/routers/compose.ts

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,14 @@ import {
33
addNewService,
44
checkServiceAccess,
55
cloneCompose,
6-
cloneComposeRemote,
76
createCommand,
87
createCompose,
98
createComposeByTemplate,
109
createDomain,
1110
createMount,
1211
deleteMount,
12+
execAsync,
13+
execAsyncRemote,
1314
findComposeById,
1415
findDomainsByComposeId,
1516
findEnvironmentById,
@@ -302,10 +303,12 @@ export const composeRouter = createTRPCRouter({
302303
message: "You are not authorized to fetch this compose",
303304
});
304305
}
306+
307+
const command = await cloneCompose(compose);
305308
if (compose.serverId) {
306-
await cloneComposeRemote(compose);
309+
await execAsyncRemote(compose.serverId, command);
307310
} else {
308-
await cloneCompose(compose);
311+
await execAsync(command);
309312
}
310313
return compose.sourceType;
311314
} catch (err) {

apps/dokploy/server/queues/deployments-queue.ts

Lines changed: 32 additions & 80 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,8 @@ import {
22
deployApplication,
33
deployCompose,
44
deployPreviewApplication,
5-
deployRemoteApplication,
6-
deployRemoteCompose,
7-
deployRemotePreviewApplication,
85
rebuildApplication,
96
rebuildCompose,
10-
rebuildRemoteApplication,
11-
rebuildRemoteCompose,
127
updateApplicationStatus,
138
updateCompose,
149
updatePreviewDeployment,
@@ -24,91 +19,48 @@ export const deploymentWorker = new Worker(
2419
if (job.data.applicationType === "application") {
2520
await updateApplicationStatus(job.data.applicationId, "running");
2621

27-
if (job.data.server) {
28-
if (job.data.type === "redeploy") {
29-
await rebuildRemoteApplication({
30-
applicationId: job.data.applicationId,
31-
titleLog: job.data.titleLog,
32-
descriptionLog: job.data.descriptionLog,
33-
});
34-
} else if (job.data.type === "deploy") {
35-
await deployRemoteApplication({
36-
applicationId: job.data.applicationId,
37-
titleLog: job.data.titleLog,
38-
descriptionLog: job.data.descriptionLog,
39-
});
40-
}
41-
} else {
42-
if (job.data.type === "redeploy") {
43-
await rebuildApplication({
44-
applicationId: job.data.applicationId,
45-
titleLog: job.data.titleLog,
46-
descriptionLog: job.data.descriptionLog,
47-
});
48-
} else if (job.data.type === "deploy") {
49-
await deployApplication({
50-
applicationId: job.data.applicationId,
51-
titleLog: job.data.titleLog,
52-
descriptionLog: job.data.descriptionLog,
53-
});
54-
}
22+
if (job.data.type === "redeploy") {
23+
await rebuildApplication({
24+
applicationId: job.data.applicationId,
25+
titleLog: job.data.titleLog,
26+
descriptionLog: job.data.descriptionLog,
27+
});
28+
} else if (job.data.type === "deploy") {
29+
await deployApplication({
30+
applicationId: job.data.applicationId,
31+
titleLog: job.data.titleLog,
32+
descriptionLog: job.data.descriptionLog,
33+
});
5534
}
5635
} else if (job.data.applicationType === "compose") {
5736
await updateCompose(job.data.composeId, {
5837
composeStatus: "running",
5938
});
60-
61-
if (job.data.server) {
62-
if (job.data.type === "redeploy") {
63-
await rebuildRemoteCompose({
64-
composeId: job.data.composeId,
65-
titleLog: job.data.titleLog,
66-
descriptionLog: job.data.descriptionLog,
67-
});
68-
} else if (job.data.type === "deploy") {
69-
await deployRemoteCompose({
70-
composeId: job.data.composeId,
71-
titleLog: job.data.titleLog,
72-
descriptionLog: job.data.descriptionLog,
73-
});
74-
}
75-
} else {
76-
if (job.data.type === "deploy") {
77-
await deployCompose({
78-
composeId: job.data.composeId,
79-
titleLog: job.data.titleLog,
80-
descriptionLog: job.data.descriptionLog,
81-
});
82-
} else if (job.data.type === "redeploy") {
83-
await rebuildCompose({
84-
composeId: job.data.composeId,
85-
titleLog: job.data.titleLog,
86-
descriptionLog: job.data.descriptionLog,
87-
});
88-
}
39+
if (job.data.type === "deploy") {
40+
await deployCompose({
41+
composeId: job.data.composeId,
42+
titleLog: job.data.titleLog,
43+
descriptionLog: job.data.descriptionLog,
44+
});
45+
} else if (job.data.type === "redeploy") {
46+
await rebuildCompose({
47+
composeId: job.data.composeId,
48+
titleLog: job.data.titleLog,
49+
descriptionLog: job.data.descriptionLog,
50+
});
8951
}
9052
} else if (job.data.applicationType === "application-preview") {
9153
await updatePreviewDeployment(job.data.previewDeploymentId, {
9254
previewStatus: "running",
9355
});
94-
if (job.data.server) {
95-
if (job.data.type === "deploy") {
96-
await deployRemotePreviewApplication({
97-
applicationId: job.data.applicationId,
98-
titleLog: job.data.titleLog,
99-
descriptionLog: job.data.descriptionLog,
100-
previewDeploymentId: job.data.previewDeploymentId,
101-
});
102-
}
103-
} else {
104-
if (job.data.type === "deploy") {
105-
await deployPreviewApplication({
106-
applicationId: job.data.applicationId,
107-
titleLog: job.data.titleLog,
108-
descriptionLog: job.data.descriptionLog,
109-
previewDeploymentId: job.data.previewDeploymentId,
110-
});
111-
}
56+
57+
if (job.data.type === "deploy") {
58+
await deployPreviewApplication({
59+
applicationId: job.data.applicationId,
60+
titleLog: job.data.titleLog,
61+
descriptionLog: job.data.descriptionLog,
62+
previewDeploymentId: job.data.previewDeploymentId,
63+
});
11264
}
11365
}
11466
} catch (error) {

0 commit comments

Comments
 (0)