diff --git a/.changeset/little-cheetahs-arrive.md b/.changeset/little-cheetahs-arrive.md new file mode 100644 index 000000000000..95b650d98d0c --- /dev/null +++ b/.changeset/little-cheetahs-arrive.md @@ -0,0 +1,5 @@ +--- +"wrangler": minor +--- + +feat: Adds new detailed pages deployment output type diff --git a/packages/wrangler/src/__tests__/output.test.ts b/packages/wrangler/src/__tests__/output.test.ts index 8a548130b757..6124c72660eb 100644 --- a/packages/wrangler/src/__tests__/output.test.ts +++ b/packages/wrangler/src/__tests__/output.test.ts @@ -175,6 +175,49 @@ describe("writeOutput()", () => { }, ]); }); + it("should write an alias and environment for pages-deploy-detailed outputs", () => { + vi.stubEnv("WRANGLER_OUTPUT_FILE_DIRECTORY", "output"); + vi.stubEnv("WRANGLER_OUTPUT_FILE_PATH", ""); + writeOutput({ + type: "wrangler-session", + version: 1, + wrangler_version: "0.0.0.0", + command_line_args: ["--help"], + log_file_path: "some/log/path.log", + }); + writeOutput({ + type: "pages-deploy-detailed", + version: 1, + pages_project: "pages", + deployment_id: "ABCDE12345", + url: "test.com", + alias: "dev.com", + environment: "production", + }); + + const outputFilePaths = readdirSync("output"); + expect(outputFilePaths.length).toEqual(1); + expect(outputFilePaths[0]).toMatch(/wrangler-output-.+\.json/); + const outputFile = readFileSync(join("output", outputFilePaths[0]), "utf8"); + expect(outputFile).toContainEntries([ + { + type: "wrangler-session", + version: 1, + wrangler_version: "0.0.0.0", + command_line_args: ["--help"], + log_file_path: "some/log/path.log", + }, + { + type: "pages-deploy-detailed", + version: 1, + pages_project: "pages", + deployment_id: "ABCDE12345", + url: "test.com", + alias: "dev.com", + environment: "production", + }, + ]); + }); }); expect.extend({ diff --git a/packages/wrangler/src/output.ts b/packages/wrangler/src/output.ts index 814e9665f63e..c7abef8cde95 100644 --- a/packages/wrangler/src/output.ts +++ b/packages/wrangler/src/output.ts @@ -70,7 +70,8 @@ export type OutputEntry = | OutputEntryDeployment | OutputEntryPagesDeployment | OutputEntryVersionUpload - | OutputEntryVersionDeployment; + | OutputEntryVersionDeployment + | OutputEntryPagesDeploymentDetailed; export type StampedOutputEntry = { timestamp: string } & OutputEntry; @@ -108,6 +109,21 @@ export interface OutputEntryPagesDeployment url: string | undefined; } +export interface OutputEntryPagesDeploymentDetailed + extends OutputEntryBase<"pages-deploy-detailed"> { + version: 1; + /** The name of the Pages project. */ + pages_project: string | null; + /** A GUID that identifies this Pages deployment. */ + deployment_id: string | null; + /** The URL associated with this deployment */ + url: string | undefined; + /** The Alias url, if it exists */ + alias: string | undefined; + /** The environment being deployed to */ + environment: "production" | "preview"; +} + export interface OutputEntryVersionUpload extends OutputEntryBase<"version-upload"> { version: 1; diff --git a/packages/wrangler/src/pages/deploy.tsx b/packages/wrangler/src/pages/deploy.tsx index 7b679cef3cbe..5b1fb6332aa8 100644 --- a/packages/wrangler/src/pages/deploy.tsx +++ b/packages/wrangler/src/pages/deploy.tsx @@ -448,6 +448,16 @@ ${failureMessage}`, url: deploymentResponse.url, }); + writeOutput({ + type: "pages-deploy-detailed", + version: 1, + pages_project: deploymentResponse.project_name, + deployment_id: deploymentResponse.id, + url: deploymentResponse.url, + alias, + environment: deploymentResponse.environment, + }); + await metrics.sendMetricsEvent("create pages deployment"); };