Skip to content

Commit

Permalink
fix(build-test-deploy.yml): even more resilient error checking
Browse files Browse the repository at this point in the history
  • Loading branch information
Xunnamius committed Feb 20, 2021
1 parent 4039432 commit b050bba
Showing 1 changed file with 28 additions and 30 deletions.
58 changes: 28 additions & 30 deletions .github/workflows/build-test-deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -839,7 +839,10 @@ jobs:
`Auto-merge skipped: PR #${pullRequest.number} was marked as a draft`
);
return;
} else if (latestPullRequest.data.state != 'open') {
} else if (
latestPullRequest.status < 400 &&
latestPullRequest.data.state != 'open'
) {
core.warning(
`Auto-merge skipped: PR #${pullRequest.number} is no longer open`
);
Expand All @@ -866,48 +869,43 @@ jobs:
console.log('mergeAttempt->merged:', merged);
}
const defaultError =
message ||
`failed to merge PR #${pullRequest.number}: status code ${status}`;
if ([403, 404, 422].includes(status)) {
core.setFailed(`Auto-merge failed: ${message}`);
return;
} else if ([409].includes(status)) {
} else if (status == 409) {
core.info(
`Auto-merge skipped: current HEAD is out of sync with PR #${pullRequest.number}`
);
} else if (status >= 400 && status < 500 && !canRetryMerge) {
core.setFailed(`Auto-merge failed: ${defaultError}`);
return;
} else if (!merged) {
throw new Error(
message ||
`failed to merge PR #${pullRequest.number}: status code ${status}`
);
throw new Error(defaultError);
}
success = true;
} catch (e) {
if (canRetryMerge) {
console.error(
'Auto-merge failed:',
e.message || e || 'an unknown error occurred'
);
console.error(
'Auto-merge failed:',
e.message || e || 'an unknown error occurred'
);
if (tries + 1 < MAX_RETRIES) {
const nextRetryIn = 2 ** tries * MINIMUM_SECONDS * 1000 + jitter;
jitter += Math.random() * JITTER_SECONDS * 1000;
core.warning(
`Auto-merge attempt ${
tries + 1
}/${MAX_RETRIES} failed, next try in ${Math.round(
nextRetryIn / 1000
)} seconds`
);
await delay(nextRetryIn);
}
} else {
core.setFailed(
`Auto-merge failed immediately: ${
e.message || e || 'an unknown error occurred'
}`
if (tries + 1 < MAX_RETRIES) {
const nextRetryIn = 2 ** tries * MINIMUM_SECONDS * 1000 + jitter;
jitter += Math.random() * JITTER_SECONDS * 1000;
core.warning(
`Auto-merge attempt ${
tries + 1
}/${MAX_RETRIES} failed, next try in ${Math.round(
nextRetryIn / 1000
)} seconds`
);
return;
await delay(nextRetryIn);
}
}
}
Expand Down

0 comments on commit b050bba

Please sign in to comment.