@@ -2,7 +2,7 @@ import { type AuthenticatedEnvironment } from "~/services/apiAuth.server";
22import { BaseService } from "./baseService.server" ;
33import { errAsync , fromPromise , okAsync , type ResultAsync } from "neverthrow" ;
44import { type WorkerDeployment , type Project } from "@trigger.dev/database" ;
5- import { logger , type GitMeta , type DeploymentEvent } from "@trigger.dev/core/v3" ;
5+ import { BuildServerMetadata , logger , type GitMeta , type DeploymentEvent } from "@trigger.dev/core/v3" ;
66import { TimeoutDeploymentService } from "./timeoutDeployment.server" ;
77import { env } from "~/env.server" ;
88import { createRemoteImageBuild } from "../remoteImageBuilder.server" ;
@@ -40,7 +40,7 @@ export class DeploymentService extends BaseService {
4040 friendlyId : string ,
4141 updates : Partial < Pick < WorkerDeployment , "contentHash" | "runtime" > & { git : GitMeta } >
4242 ) {
43- const validateDeployment = ( deployment : Pick < WorkerDeployment , "id" | "status" > ) => {
43+ const validateDeployment = ( deployment : Pick < WorkerDeployment , "id" | "status" > & { buildServerMetadata ?: BuildServerMetadata } ) => {
4444 if ( deployment . status !== "PENDING" && deployment . status !== "INSTALLING" ) {
4545 logger . warn (
4646 "Attempted progressing deployment that is not in PENDING or INSTALLING status" ,
@@ -75,14 +75,17 @@ export class DeploymentService extends BaseService {
7575 return okAsync ( { id : deployment . id , status : "INSTALLING" as const } ) ;
7676 } ) ;
7777
78- const createRemoteBuild = ( deployment : Pick < WorkerDeployment , "id" > ) =>
79- fromPromise ( createRemoteImageBuild ( authenticatedEnv . project ) , ( error ) => ( {
80- type : "failed_to_create_remote_build" as const ,
81- cause : error ,
82- } ) ) ;
78+ const progressToBuilding = (
79+ deployment : Pick < WorkerDeployment , "id" > & { buildServerMetadata ?: BuildServerMetadata }
80+ ) => {
81+ const createExternalBuildIfNeeded = deployment . buildServerMetadata ?. isNativeBuild
82+ ? okAsync ( undefined )
83+ : fromPromise ( createRemoteImageBuild ( authenticatedEnv . project ) , ( error ) => ( {
84+ type : "failed_to_create_remote_build" as const ,
85+ cause : error ,
86+ } ) ) ;
8387
84- const progressToBuilding = ( deployment : Pick < WorkerDeployment , "id" > ) =>
85- createRemoteBuild ( deployment )
88+ return createExternalBuildIfNeeded
8689 . andThen ( ( externalBuildData ) =>
8790 fromPromise (
8891 this . _prisma . workerDeployment . updateMany ( {
@@ -106,6 +109,7 @@ export class DeploymentService extends BaseService {
106109 }
107110 return okAsync ( { id : deployment . id , status : "BUILDING" as const } ) ;
108111 } ) ;
112+ } ;
109113
110114 const extendTimeout = ( deployment : Pick < WorkerDeployment , "id" | "status" > ) =>
111115 fromPromise (
@@ -432,6 +436,7 @@ export class DeploymentService extends BaseService {
432436 select : {
433437 status : true ,
434438 id : true ,
439+ buildServerMetadata : true ,
435440 imageReference : true ,
436441 shortCode : true ,
437442 environment : {
@@ -454,6 +459,9 @@ export class DeploymentService extends BaseService {
454459 return errAsync ( { type : "deployment_not_found" as const } ) ;
455460 }
456461 return okAsync ( deployment ) ;
457- } ) ;
462+ } ) . map ( ( deployment ) => ( {
463+ ...deployment ,
464+ buildServerMetadata : BuildServerMetadata . safeParse ( deployment . buildServerMetadata ) . data ,
465+ } ) ) ;
458466 }
459467}
0 commit comments