ci(dependabot): tolerate transient auto-merge conflicts
This commit is contained in:
1 parent
931463ed63
commit
141d5ad079
1 file changed
+34
-13
@@ -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,
|
||||
|
||||
Reference in new issue
Block a user