ci(dependabot): tolerate transient auto-merge conflicts

This commit is contained in:
xixu-me committed 2026-05-05 15:48:08 +08:00
1 parent 0ed5501ed9
commit 9c8a0033ff
1 file changed
+34 -13
+34 -13
View File
@@ -64,11 +64,17 @@ jobs:
status === "SKIPPED" ||
status === "NEUTRAL";
const { data: pr } = await github.rest.pulls.get({
owner,
repo,
pull_number,
});
const wait = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
const getPullRequest = async () => {
const { data } = await github.rest.pulls.get({
owner,
repo,
pull_number,
});
return data;
};
let pr = await getPullRequest();
if (pr.user?.login !== "dependabot[bot]") {
core.info(`PR #${pull_number} is no longer a Dependabot PR.`);
@@ -80,8 +86,14 @@ jobs:
return;
}
if (pr.mergeable === false) {
core.info(`PR #${pull_number} has merge conflicts.`);
for (let attempt = 1; attempt <= 6 && pr.mergeable === null; attempt += 1) {
core.info(`PR #${pull_number} mergeability is still being computed; retry ${attempt}/6.`);
await wait(5000);
pr = await getPullRequest();
}
if (pr.mergeable !== true) {
core.info(`PR #${pull_number} is not currently mergeable; skipping auto-merge.`);
return;
}
@@ -109,12 +121,21 @@ jobs:
return;
}
await github.rest.pulls.merge({
owner,
repo,
pull_number,
merge_method: "merge",
});
try {
await github.rest.pulls.merge({
owner,
repo,
pull_number,
merge_method: "merge",
});
} catch (error) {
if (error.status === 405 || error.status === 409) {
core.info(`PR #${pull_number} could not be merged right now: ${error.message}`);
return;
}
throw error;
}
await github.rest.git.deleteRef({
owner,