diff --git a/source/app/action/index.mjs b/source/app/action/index.mjs index 890681b1..5bc43aae 100644 --- a/source/app/action/index.mjs +++ b/source/app/action/index.mjs @@ -298,8 +298,19 @@ //Merge pull request if (committer.merge) { info("Merge method", committer.merge) - await committer.rest.pulls.merge({...github.context.repo, pull_number:number, merge_method:committer.merge}) - info(`Merge #${number} to ${committer.branch}`, "ok") + do { + //Check pull request mergeability (https://octokit.github.io/rest.js/v18#pulls-get) + const {data:{mergeable, mergeable_state:state}} = await committer.rest.pulls.get({...github.context.repo, pull_number:number}) + console.debug(`Pull request #${number} mergeable state is "${state}"`) + if (mergeable === null) + continue + if (!mergeable) + throw new Error(`Pull request #${number} is not mergeable (state is "${state}")`) + //Merge pull request + await committer.rest.pulls.merge({...github.context.repo, pull_number:number, merge_method:committer.merge}) + info(`Merge #${number} to ${committer.branch}`, "ok") + break + } while (true) } }