Skip to content

Commit

Permalink
.github/workflows/request-reviews.yml: Add workflow
Browse files Browse the repository at this point in the history
Adds a new GitHub workflow to automatically add reviewers to pull
requests when they are opened, reopened, synchronized, and if a draft
pull request is marked as ready for review. The workflow will not
run on draft pull requests.

The workflow is meant to be simple to understand and modify relying
on existing logic in GetMaintainer.py to determine the relevant
reviewers and simply Python GitHub REST API wrappers using the
default GitHub token for authentication.

Future changes may optimize the workflow.

Signed-off-by: Michael Kubacki <[email protected]>
  • Loading branch information
makubacki committed Jul 22, 2024
1 parent c7556cf commit b70a97b
Showing 1 changed file with 71 additions and 0 deletions.
71 changes: 71 additions & 0 deletions .github/workflows/request-reviews.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@

# This workflow automatically adds the appropriate reviewers to a pull request.
#
# The workflow directly reuses logic in the BaseTools/Scripts/GetMaintainer.py script
# to determine the appropriate reviewers, so it matches what a user would see running
# the script locally.
#
# Copyright (c) Microsoft Corporation.
# SPDX-License-Identifier: BSD-2-Clause-Patent

name: Add Pull Request Reviewers

on:
pull_request:
branches:
- master
types: [opened, ready_for_review, reopened, synchronize]

env:
GET_MAINTAINER_REL_PATH: "BaseTools/Scripts/GetMaintainer.py"

jobs:
auto-request-review:
name: Add Pull Request Reviewers
if: '! github.event.pull_request.draft'
runs-on: ubuntu-latest

permissions:
contents: read
issues: write
pull-requests: write

steps:
- name: Checkout repository
uses: actions/checkout@v3
with:
fetch-depth: 0

- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.x'

- name: Install PIP Modules
run: pip install edk2-pytool-library edk2-pytool-extensions requests

- name: Add Reviewers to Pull Request
shell: python
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
ORG_NAME: ${{ github.repository_owner }}
PR_NUMBER: ${{ github.event.number}}
REPO_NAME: ${{ github.event.pull_request.base.repo.name }}
WORKSPACE_PATH: ${{ github.workspace }}
run: |
import os
import sys
sys.path.append(os.environ['WORKSPACE_PATH'])
from BaseTools.Scripts import GitHub
WORKSPACE_PATH = os.environ['WORKSPACE_PATH']
GET_MAINTAINER_LOCAL_PATH = os.path.join(WORKSPACE_PATH, os.environ['GET_MAINTAINER_REL_PATH'])
reviewers = GitHub.get_reviewers_for_current_branch(WORKSPACE_PATH, GET_MAINTAINER_LOCAL_PATH)
if not reviewers:
print("::notice title=No Reviewers Found!::No reviewers found for this PR.")
sys.exit(1)
print(f"::notice title=Reviewer List::Reviewers found for PR {os.environ['PR_NUMBER']}:\n{', '.join(reviewers)}")
GitHub.add_reviewers_to_pr(os.environ['GH_TOKEN'], os.environ['ORG_NAME'], os.environ['REPO_NAME'], os.environ['PR_NUMBER'], reviewers)

0 comments on commit b70a97b

Please sign in to comment.