Fix PRs sometimes not getting reopened with commitMode: github-api (#488)

* Fix PRs sometimes not getting reopened

There was a race-condition that means sometimes
existing PRs would not be found,
and new PRs would be opened.
This has now been fixed by fetching existing PRs
before making any changes.

fixes #487

* Apply suggestions from code review

---------

Co-authored-by: Mateusz Burzyński <mateuszburzynski@gmail.com>
This commit is contained in:
Sam Lanning
2025-05-15 21:46:15 +02:00
committed by GitHub
co-authored by Mateusz Burzyński
parent 0564b8428f
commit 022692ba02
2 changed files with 21 additions and 4 deletions
+10
View File
@@ -0,0 +1,10 @@
---
"@changesets/action": patch
---
Fix PRs sometimes not getting reopened with `commitMode: github-api`
There was a race-condition that means sometimes existing PRs would not be found,
and new PRs would be opened. This has now been fixed by fetching existing PRs
before making any changes.
+11 -4
View File
@@ -314,15 +314,22 @@ export async function runVersion({
!!preState ? ` (${preState.tag})` : ""
}`;
await git.pushChanges({ branch: versionBranch, message: finalCommitMessage });
let existingPullRequests = await octokit.rest.pulls.list({
/**
* Fetch any existing pull requests that are open against the branch,
* before we push any changes that may inadvertently close the existing PRs.
*
* (`@changesets/ghcommit` has to reset the branch to the same commit as the base,
* which GitHub will then react to by closing the PRs)
*/
const existingPullRequests = await octokit.rest.pulls.list({
...github.context.repo,
state: "open",
head: `${github.context.repo.owner}:${versionBranch}`,
base: branch,
});
core.info(JSON.stringify(existingPullRequests.data, null, 2));
core.info(`Existing pull requests: ${JSON.stringify(existingPullRequests.data, null, 2)}`);
await git.pushChanges({ branch: versionBranch, message: finalCommitMessage });
const changedPackagesInfo = (await changedPackagesInfoPromises)
.filter((x) => x)