From 34f64f6e2e1e47ddc183f174aa27c197aa47f520 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Burzy=C5=84ski?= Date: Fri, 29 May 2026 08:48:06 +0200 Subject: [PATCH] Fixed an issue with GitHub releases not being created for successfully published packages when some packages failed to be published (#535) * Fixed an issue with GitHub releases not being created for successfully published packages when some packages failed to be published * Format --------- Co-authored-by: Bjorn Lu --- .changeset/cold-melons-love.md | 5 +++++ src/index.ts | 13 +++++++++++++ src/run.ts | 6 +++++- 3 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 .changeset/cold-melons-love.md diff --git a/.changeset/cold-melons-love.md b/.changeset/cold-melons-love.md new file mode 100644 index 0000000..aa84516 --- /dev/null +++ b/.changeset/cold-melons-love.md @@ -0,0 +1,5 @@ +--- +"@changesets/action": patch +--- + +Fixed an issue with GitHub releases not being created for successfully published packages when _some_ packages failed to be published to the registry. diff --git a/src/index.ts b/src/index.ts index f4e73cf..6c4549c 100644 --- a/src/index.ts +++ b/src/index.ts @@ -136,6 +136,19 @@ const getOptionalInput = (name: string) => core.getInput(name) || undefined; JSON.stringify(result.publishedPackages), ); } + + if (result.exitCode !== 0) { + core.error( + `Publish command exited with code ${result.exitCode}${ + result.published + ? `, but some packages were published: ${result.publishedPackages + .map((p) => `${p.name}@${p.version}`) + .join(", ")}` + : "" + }`, + ); + process.exit(result.exitCode); + } return; } case hasChangesets && !hasNonEmptyChangesets: diff --git a/src/run.ts b/src/run.ts index 818edfb..64d391d 100644 --- a/src/run.ts +++ b/src/run.ts @@ -73,9 +73,11 @@ type PublishResult = | { published: true; publishedPackages: PublishedPackage[]; + exitCode: number; } | { published: false; + exitCode: number; }; export async function runPublish({ @@ -88,6 +90,7 @@ export async function runPublish({ }: PublishOptions): Promise { let changesetPublishOutput = await getExecOutput(script, undefined, { cwd, + ignoreReturnCode: true, env: { ...process.env, GITHUB_TOKEN: githubToken }, }); @@ -155,10 +158,11 @@ export async function runPublish({ name: pkg.packageJson.name, version: pkg.packageJson.version, })), + exitCode: changesetPublishOutput.exitCode, }; } - return { published: false }; + return { published: false, exitCode: changesetPublishOutput.exitCode }; } const requireChangesetsCliPkgJson = (cwd: string) => {