@@ -2,9 +2,10 @@ import { type AuthenticatedEnvironment } from "~/services/apiAuth.server";
2
2
import { BaseService } from "./baseService.server" ;
3
3
import { errAsync , fromPromise , okAsync } from "neverthrow" ;
4
4
import { type WorkerDeploymentStatus , type WorkerDeployment } from "@trigger.dev/database" ;
5
- import { logger , type GitMeta } from "@trigger.dev/core/v3" ;
5
+ import { type ExternalBuildData , logger , type GitMeta } from "@trigger.dev/core/v3" ;
6
6
import { TimeoutDeploymentService } from "./timeoutDeployment.server" ;
7
7
import { env } from "~/env.server" ;
8
+ import { createRemoteImageBuild } from "../remoteImageBuilder.server" ;
8
9
9
10
export class DeploymentService extends BaseService {
10
11
public startDeployment (
@@ -46,11 +47,29 @@ export class DeploymentService extends BaseService {
46
47
return okAsync ( deployment ) ;
47
48
} ;
48
49
49
- const updateDeployment = ( deployment : Pick < WorkerDeployment , "id" > ) =>
50
+ const createRemoteBuild = ( deployment : Pick < WorkerDeployment , "id" > ) =>
51
+ fromPromise ( createRemoteImageBuild ( authenticatedEnv . project ) , ( error ) => ( {
52
+ type : "failed_to_create_remote_build" as const ,
53
+ cause : error ,
54
+ } ) ) . map ( ( build ) => ( {
55
+ id : deployment . id ,
56
+ externalBuildData : build ,
57
+ } ) ) ;
58
+
59
+ const updateDeployment = (
60
+ deployment : Pick < WorkerDeployment , "id" > & {
61
+ externalBuildData : ExternalBuildData | undefined ;
62
+ }
63
+ ) =>
50
64
fromPromise (
51
65
this . _prisma . workerDeployment . updateMany ( {
52
66
where : { id : deployment . id , status : "PENDING" } , // status could've changed in the meantime, we're not locking the row
53
- data : { ...updates , status : "BUILDING" , startedAt : new Date ( ) } ,
67
+ data : {
68
+ ...updates ,
69
+ externalBuildData : deployment . externalBuildData ,
70
+ status : "BUILDING" ,
71
+ startedAt : new Date ( ) ,
72
+ } ,
54
73
} ) ,
55
74
( error ) => ( {
56
75
type : "other" as const ,
@@ -75,11 +94,13 @@ export class DeploymentService extends BaseService {
75
94
type : "failed_to_extend_deployment_timeout" as const ,
76
95
cause : error ,
77
96
} )
78
- ) . map ( ( ) => undefined ) ;
97
+ ) ;
79
98
80
99
return getDeployment ( )
81
100
. andThen ( validateDeployment )
101
+ . andThen ( createRemoteBuild )
82
102
. andThen ( updateDeployment )
83
- . andThen ( extendTimeout ) ;
103
+ . andThen ( extendTimeout )
104
+ . map ( ( ) => undefined ) ;
84
105
}
85
106
}
0 commit comments