Add GHA for requiring all reviews to be dismissed or approving before merging (#2391)

* Add GHA for requiring all reviews to be dismissed or approving before merging

* Attempt again

* Try try try again

* stash

* Stash

* Dummy

* Fix indentation

* Iterate

* Tweak

* Iterate

* toJSON

* Iterate

* Iterate

* Fix

* typo

* Permissions

* tidy

* Update pending_reviews.yml

* delint
This commit is contained in:
Michael Telatynski
2023-03-07 14:23:56 +00:00
committed by GitHub
parent 4424438658
commit e84c90dbbc
+46
View File
@@ -0,0 +1,46 @@
name: Pending Reviews
on:
pull_request:
types: [opened, synchronize, review_requested, review_request_removed, ready_for_review]
pull_request_review:
types: [submitted, dismissed]
workflow_call: {}
concurrency: ${{ github.workflow }}-${{ github.event.workflow_run.head_branch }}
jobs:
reviews:
name: Assert no outstanding reviews
runs-on: ubuntu-latest
permissions:
pull-requests: read
statuses: write
steps:
- name: 🔍 Check reviewers
uses: actions/github-script@v5
with:
script: |
const { owner, repo } = context.repo;
const pull = context.payload.pull_request;
const pull_number = pull.number;
const { data: reviews } = await github.rest.pulls.listReviews({
pull_number,
owner,
repo,
});
const latestReviews = {};
reviews.forEach(review => {
latestReviews[review.user.login] = review;
});
const pending = pull.requested_reviewers.length
|| pull.requested_teams.length
|| Object.values(latestReviews).some(r => !["APPROVED", "DISMISSED"].includes(r.state));
await github.rest.repos.createCommitStatus({
context: "Pending reviews",
sha: pull.head.sha,
state: pending ? "failure" : "success",
description: pending ? "Outstanding pending reviews" : undefined,
owner,
repo,
});