|
1 | 1 | import { type AuthenticatedEnvironment } from "~/services/apiAuth.server"; |
2 | 2 | import { BaseService } from "./baseService.server"; |
3 | 3 | import { errAsync, fromPromise, okAsync } from "neverthrow"; |
4 | | -import { type WorkerDeployment } from "@trigger.dev/database"; |
| 4 | +import { type WorkerDeploymentStatus, type WorkerDeployment } from "@trigger.dev/database"; |
5 | 5 | import { type GitMeta } from "@trigger.dev/core/v3"; |
| 6 | +import { TimeoutDeploymentService } from "./timeoutDeployment.server"; |
| 7 | +import { env } from "~/env.server"; |
6 | 8 |
|
7 | 9 | export class DeploymentService extends BaseService { |
8 | 10 | public async startDeployment( |
@@ -55,9 +57,26 @@ export class DeploymentService extends BaseService { |
55 | 57 | if (result.count === 0) { |
56 | 58 | return errAsync({ type: "deployment_not_pending" as const }); |
57 | 59 | } |
58 | | - return okAsync(undefined); |
| 60 | + return okAsync({ id: deployment.id }); |
59 | 61 | }); |
60 | 62 |
|
61 | | - return getDeployment().andThen(validateDeployment).andThen(updateDeployment); |
| 63 | + const extendTimeout = (deployment: Pick<WorkerDeployment, "id">) => |
| 64 | + fromPromise( |
| 65 | + TimeoutDeploymentService.enqueue( |
| 66 | + deployment.id, |
| 67 | + "BUILDING" satisfies WorkerDeploymentStatus, |
| 68 | + "Building timed out", |
| 69 | + new Date(Date.now() + env.DEPLOY_TIMEOUT_MS) |
| 70 | + ), |
| 71 | + (error) => ({ |
| 72 | + type: "failed_to_extend_deployment_timeout" as const, |
| 73 | + cause: error, |
| 74 | + }) |
| 75 | + ); |
| 76 | + |
| 77 | + return getDeployment() |
| 78 | + .andThen(validateDeployment) |
| 79 | + .andThen(updateDeployment) |
| 80 | + .andThen(extendTimeout); |
62 | 81 | } |
63 | 82 | } |
0 commit comments