chore: import upstream snapshot with attribution
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
import { SpanStatusCode } from "@opentelemetry/api";
|
||||
import { type WorkerDeploymentStatus } from "@trigger.dev/database";
|
||||
import { logger } from "~/services/logger.server";
|
||||
import { tracer } from "~/v3/tracer.server";
|
||||
|
||||
type TerminalDeploymentStatus = Extract<
|
||||
WorkerDeploymentStatus,
|
||||
"DEPLOYED" | "FAILED" | "TIMED_OUT"
|
||||
>;
|
||||
|
||||
/**
|
||||
* Records a deployment's terminal status as a `deployment.outcome` span so
|
||||
* deploy success/failure is queryable from traces (no DB read). Call after each
|
||||
* terminal-status write. Org/project/env are best-effort; never throws.
|
||||
*/
|
||||
export function recordDeploymentOutcome(params: {
|
||||
status: TerminalDeploymentStatus;
|
||||
deploymentFriendlyId: string;
|
||||
organizationId?: string;
|
||||
projectId?: string;
|
||||
environmentId?: string;
|
||||
environmentType?: string;
|
||||
reason?: string;
|
||||
}): void {
|
||||
try {
|
||||
const span = tracer.startSpan("deployment.outcome", {
|
||||
attributes: {
|
||||
"$trigger.org.id": params.organizationId,
|
||||
"$trigger.project.id": params.projectId,
|
||||
"$trigger.env.id": params.environmentId,
|
||||
"$trigger.env.type": params.environmentType,
|
||||
"deployment.outcome.status": params.status,
|
||||
"deployment.outcome.success": params.status === "DEPLOYED",
|
||||
"deployment.outcome.deployment_id": params.deploymentFriendlyId,
|
||||
"deployment.outcome.reason": params.reason,
|
||||
},
|
||||
});
|
||||
|
||||
if (params.status !== "DEPLOYED") {
|
||||
span.setStatus({ code: SpanStatusCode.ERROR, message: params.reason });
|
||||
}
|
||||
|
||||
span.end();
|
||||
} catch (error) {
|
||||
logger.debug("recordDeploymentOutcome failed", {
|
||||
deploymentFriendlyId: params.deploymentFriendlyId,
|
||||
error: error instanceof Error ? error.message : String(error),
|
||||
});
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user