22 deployApplication ,
33 deployCompose ,
44 deployPreviewApplication ,
5+ IS_CLOUD ,
56 rebuildApplication ,
67 rebuildCompose ,
78 rebuildPreviewApplication ,
@@ -13,70 +14,83 @@ import { type Job, Worker } from "bullmq";
1314import type { DeploymentJob } from "./queue-types" ;
1415import { redisConfig } from "./redis-connection" ;
1516
16- export const deploymentWorker = new Worker (
17- "deployments" ,
18- async ( job : Job < DeploymentJob > ) => {
19- try {
20- if ( job . data . applicationType === "application" ) {
21- await updateApplicationStatus ( job . data . applicationId , "running" ) ;
17+ const createDeploymentWorker = ( ) =>
18+ new Worker (
19+ "deployments" ,
20+ async ( job : Job < DeploymentJob > ) => {
21+ try {
22+ if ( job . data . applicationType === "application" ) {
23+ await updateApplicationStatus ( job . data . applicationId , "running" ) ;
2224
23- if ( job . data . type === "redeploy" ) {
24- await rebuildApplication ( {
25- applicationId : job . data . applicationId ,
26- titleLog : job . data . titleLog ,
27- descriptionLog : job . data . descriptionLog ,
25+ if ( job . data . type === "redeploy" ) {
26+ await rebuildApplication ( {
27+ applicationId : job . data . applicationId ,
28+ titleLog : job . data . titleLog ,
29+ descriptionLog : job . data . descriptionLog ,
30+ } ) ;
31+ } else if ( job . data . type === "deploy" ) {
32+ await deployApplication ( {
33+ applicationId : job . data . applicationId ,
34+ titleLog : job . data . titleLog ,
35+ descriptionLog : job . data . descriptionLog ,
36+ } ) ;
37+ }
38+ } else if ( job . data . applicationType === "compose" ) {
39+ await updateCompose ( job . data . composeId , {
40+ composeStatus : "running" ,
2841 } ) ;
29- } else if ( job . data . type === "deploy" ) {
30- await deployApplication ( {
31- applicationId : job . data . applicationId ,
32- titleLog : job . data . titleLog ,
33- descriptionLog : job . data . descriptionLog ,
42+ if ( job . data . type === "deploy" ) {
43+ await deployCompose ( {
44+ composeId : job . data . composeId ,
45+ titleLog : job . data . titleLog ,
46+ descriptionLog : job . data . descriptionLog ,
47+ } ) ;
48+ } else if ( job . data . type === "redeploy" ) {
49+ await rebuildCompose ( {
50+ composeId : job . data . composeId ,
51+ titleLog : job . data . titleLog ,
52+ descriptionLog : job . data . descriptionLog ,
53+ } ) ;
54+ }
55+ } else if ( job . data . applicationType === "application-preview" ) {
56+ await updatePreviewDeployment ( job . data . previewDeploymentId , {
57+ previewStatus : "running" ,
3458 } ) ;
35- }
36- } else if ( job . data . applicationType === "compose" ) {
37- await updateCompose ( job . data . composeId , {
38- composeStatus : "running" ,
39- } ) ;
40- if ( job . data . type === "deploy" ) {
41- await deployCompose ( {
42- composeId : job . data . composeId ,
43- titleLog : job . data . titleLog ,
44- descriptionLog : job . data . descriptionLog ,
45- } ) ;
46- } else if ( job . data . type === "redeploy" ) {
47- await rebuildCompose ( {
48- composeId : job . data . composeId ,
49- titleLog : job . data . titleLog ,
50- descriptionLog : job . data . descriptionLog ,
51- } ) ;
52- }
53- } else if ( job . data . applicationType === "application-preview" ) {
54- await updatePreviewDeployment ( job . data . previewDeploymentId , {
55- previewStatus : "running" ,
56- } ) ;
5759
58- if ( job . data . type === "redeploy" ) {
59- await rebuildPreviewApplication ( {
60- applicationId : job . data . applicationId ,
61- titleLog : job . data . titleLog ,
62- descriptionLog : job . data . descriptionLog ,
63- previewDeploymentId : job . data . previewDeploymentId ,
64- } ) ;
65- } else if ( job . data . type === "deploy" ) {
66- await deployPreviewApplication ( {
67- applicationId : job . data . applicationId ,
68- titleLog : job . data . titleLog ,
69- descriptionLog : job . data . descriptionLog ,
70- previewDeploymentId : job . data . previewDeploymentId ,
71- } ) ;
60+ if ( job . data . type === "redeploy" ) {
61+ await rebuildPreviewApplication ( {
62+ applicationId : job . data . applicationId ,
63+ titleLog : job . data . titleLog ,
64+ descriptionLog : job . data . descriptionLog ,
65+ previewDeploymentId : job . data . previewDeploymentId ,
66+ } ) ;
67+ } else if ( job . data . type === "deploy" ) {
68+ await deployPreviewApplication ( {
69+ applicationId : job . data . applicationId ,
70+ titleLog : job . data . titleLog ,
71+ descriptionLog : job . data . descriptionLog ,
72+ previewDeploymentId : job . data . previewDeploymentId ,
73+ } ) ;
74+ }
7275 }
76+ } catch ( error ) {
77+ console . log ( "Error" , error ) ;
7378 }
74- } catch ( error ) {
75- console . log ( "Error" , error ) ;
76- }
77- } ,
78- {
79- autorun : false ,
80- connection : redisConfig ,
81- } ,
82- ) ;
79+ } ,
80+ {
81+ autorun : false ,
82+ connection : redisConfig ,
83+ } ,
84+ ) ;
85+
86+ /** No-op worker when Redis is disabled (e.g. IS_CLOUD). Avoids BullMQ connection errors. */
87+ const noopWorker = {
88+ run : ( ) => Promise . resolve ( ) ,
89+ close : ( ) => Promise . resolve ( ) ,
90+ cancelJob : ( ) => Promise . resolve ( ) ,
91+ cancelAllJobs : ( ) => Promise . resolve ( ) ,
92+ } ;
93+
94+ export const deploymentWorker = ! IS_CLOUD
95+ ? createDeploymentWorker ( )
96+ : ( noopWorker as unknown as Worker < DeploymentJob > ) ;
0 commit comments