.github/request-reviews.yml: Update PR reviewer exclusion
Updates logic to: - Not request reviews from reviewers that have already left a review on the PR. Previously, the reviewers review (e.g. approval) would remain on the PR, but they would be notified on each change to the PR. This approach follows the expected notification process for requesting reviews which is one time. Maintainers and reviewers can set up their own notifications for more granular updates on PR activity separately. - Add the collaborator reviewers if a reviewer(s) is found to not be a collaborator. This is an improvement to today's behavior which is to not add any reviewers if a single reviewer is not a collaborator of the repo. Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com>
This commit is contained in:
committed by
mergify[bot]
parent
eaf2b82eda
commit
e86647decd
22
.github/scripts/GitHub.py
vendored
22
.github/scripts/GitHub.py
vendored
@@ -202,12 +202,20 @@ def add_reviewers_to_pr(
|
||||
|
||||
pr_author = pr.user.login.strip()
|
||||
|
||||
while pr_author in user_names:
|
||||
user_names.remove(pr_author)
|
||||
current_pr_requested_reviewers = [
|
||||
r.login.strip() for r in pr.get_review_requests()[0]
|
||||
]
|
||||
current_pr_reviewed_reviewers = [r.user.login.strip() for r in pr.get_reviews()]
|
||||
current_pr_reviewers = list(
|
||||
set(current_pr_requested_reviewers + current_pr_reviewed_reviewers)
|
||||
)
|
||||
|
||||
repo_collaborators = [c.login.strip() for c in repo_gh.get_collaborators()]
|
||||
non_collaborators = [u for u in user_names if u not in repo_collaborators]
|
||||
|
||||
excluded_pr_reviewers = [pr_author] + current_pr_reviewers + non_collaborators
|
||||
new_pr_reviewers = [u for u in user_names if u not in excluded_pr_reviewers]
|
||||
|
||||
if non_collaborators:
|
||||
print(
|
||||
f"::error title=User is not a Collaborator!::{', '.join(non_collaborators)}"
|
||||
@@ -225,6 +233,12 @@ def add_reviewers_to_pr(
|
||||
f"Users requested:\n{', '.join(user_names)}",
|
||||
)
|
||||
|
||||
pr.create_review_request(reviewers=user_names)
|
||||
# Add any new reviewers to the PR if needed.
|
||||
if new_pr_reviewers:
|
||||
print(
|
||||
f"::debug title=Adding New PR Reviewers::" f"{', '.join(new_pr_reviewers)}"
|
||||
)
|
||||
|
||||
return user_names
|
||||
pr.create_review_request(reviewers=new_pr_reviewers)
|
||||
|
||||
return new_pr_reviewers
|
||||
|
||||
Reference in New Issue
Block a user