Skip to content

Commit 0ba312a

Browse files
committed
fix(api): skip external build creation for native builds
Native builds don't use depot, but the `/deployments/:id/progress` endpoint was unconditionally generating depot build tokens. This is now fixed. The initialize deployment endpoint was already doing this check.
1 parent eaed7d0 commit 0ba312a

File tree

1 file changed

+18
-10
lines changed

1 file changed

+18
-10
lines changed

apps/webapp/app/v3/services/deployment.server.ts

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { type AuthenticatedEnvironment } from "~/services/apiAuth.server";
22
import { BaseService } from "./baseService.server";
33
import { errAsync, fromPromise, okAsync, type ResultAsync } from "neverthrow";
44
import { 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";
66
import { TimeoutDeploymentService } from "./timeoutDeployment.server";
77
import { env } from "~/env.server";
88
import { 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

Comments
 (0)