UNPKG

trigger.dev

Version:

A Command-Line Interface for Trigger.dev (v3) projects

86 lines 3.65 kB
import { BuildManifest, serializeIndexingError, } from "@trigger.dev/core/v3"; import { readFile, writeFile } from "node:fs/promises"; import { join } from "node:path"; import { env } from "std-env"; import { CliApiClient } from "../apiClient.js"; import { indexWorkerManifest } from "../indexing/indexWorkerManifest.js"; import { resolveSourceFiles } from "../utilities/sourceFiles.js"; import { execOptionsForRuntime } from "@trigger.dev/core/v3/build"; async function loadBuildManifest() { const manifestContents = await readFile("./build.json", "utf-8"); const raw = JSON.parse(manifestContents); return BuildManifest.parse(raw); } async function bootstrap() { const buildManifest = await loadBuildManifest(); if (typeof env.TRIGGER_API_URL !== "string") { console.error("TRIGGER_API_URL is not set"); process.exit(1); } const cliApiClient = new CliApiClient(env.TRIGGER_API_URL, env.TRIGGER_SECRET_KEY); if (!env.TRIGGER_PROJECT_REF) { console.error("TRIGGER_PROJECT_REF is not set"); process.exit(1); } if (!env.TRIGGER_DEPLOYMENT_ID) { console.error("TRIGGER_DEPLOYMENT_ID is not set"); process.exit(1); } return { buildManifest, cliApiClient, projectRef: env.TRIGGER_PROJECT_REF, deploymentId: env.TRIGGER_DEPLOYMENT_ID, }; } async function indexDeployment({ cliApiClient, projectRef, deploymentId, buildManifest, }) { const stdout = []; const stderr = []; try { const $env = await cliApiClient.getEnvironmentVariables(projectRef); if (!$env.success) { throw new Error(`Failed to fetch environment variables: ${$env.error}`); } const workerManifest = await indexWorkerManifest({ runtime: buildManifest.runtime, indexWorkerPath: buildManifest.indexWorkerEntryPoint, buildManifestPath: "./build.json", nodeOptions: execOptionsForRuntime(buildManifest.runtime, buildManifest), env: $env.data.variables, otelHookExclude: buildManifest.otelImportHook?.exclude, otelHookInclude: buildManifest.otelImportHook?.include, handleStdout(data) { stdout.push(data); }, handleStderr(data) { if (!data.includes("DeprecationWarning")) { stderr.push(data); } }, }); console.log("Writing index.json", process.cwd()); await writeFile(join(process.cwd(), "index.json"), JSON.stringify(workerManifest, null, 2)); const sourceFiles = resolveSourceFiles(buildManifest.sources, workerManifest.tasks); const backgroundWorkerBody = { localOnly: true, metadata: { contentHash: buildManifest.contentHash, packageVersion: buildManifest.packageVersion, cliPackageVersion: buildManifest.cliPackageVersion, tasks: workerManifest.tasks, sourceFiles, }, supportsLazyAttempts: true, }; await cliApiClient.createDeploymentBackgroundWorker(deploymentId, backgroundWorkerBody); } catch (error) { const serialiedIndexError = serializeIndexingError(error, stderr.join("\n")); console.error("Failed to index deployment", serialiedIndexError); await cliApiClient.failDeployment(deploymentId, { error: serialiedIndexError }); process.exit(1); } } const results = await bootstrap(); await indexDeployment(results); //# sourceMappingURL=deploy-index-controller.js.map