.github/request-reviews.yml: Move workflow Py code to file

To make the Python code used within the action more mantainable over
time, it is moved to a standalone script in .github/scripts.

No functional changes are made to the workflow itself.

Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com>
This commit is contained in:
Michael Kubacki
2024-08-02 15:35:08 -04:00
committed by mergify[bot]
parent 59ad8aeda6
commit 51ada84cd5
2 changed files with 99 additions and 63 deletions

View File

@@ -56,7 +56,6 @@ jobs:
run: pip install -r .github/scripts/requirements.txt --upgrade
- name: Add Reviewers to Pull Request
shell: python
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
ORG_NAME: ${{ github.repository_owner }}
@@ -64,65 +63,4 @@ jobs:
REPO_NAME: ${{ github.event.pull_request.base.repo.name }}
TARGET_BRANCH: ${{ github.event.pull_request.base.ref }}
WORKSPACE_PATH: ${{ github.workspace }}
run: |
import git
import os
import sys
sys.path.append(os.path.join(os.environ["WORKSPACE_PATH"], ".github"))
from scripts import GitHub
WORKSPACE_PATH = os.environ["WORKSPACE_PATH"]
GET_MAINTAINER_LOCAL_PATH = os.path.join(
WORKSPACE_PATH, os.environ["GET_MAINTAINER_REL_PATH"]
)
# Step 1: Get the GitHub created PR commit SHA (contains all changes in a single commit)
pr_commit_sha = GitHub.get_pr_sha(
os.environ["GH_TOKEN"],
os.environ["ORG_NAME"],
os.environ["REPO_NAME"],
int(os.environ["PR_NUMBER"]),
)
if not pr_commit_sha:
sys.exit(1)
print(
f"::notice title=PR Commit SHA::Looking at files in consolidated PR commit: {pr_commit_sha}"
)
# Step 2: Fetch only the PR commit to get the files changed in the PR
git.Repo(WORKSPACE_PATH).remotes.origin.fetch(pr_commit_sha, depth=1)
# Step 3: Get the list of reviewers for the PR
reviewers = GitHub.get_reviewers_for_range(
WORKSPACE_PATH, GET_MAINTAINER_LOCAL_PATH, pr_commit_sha, pr_commit_sha
)
if not reviewers:
print("::notice title=No New Reviewers Found!::No reviewers found for this PR.")
sys.exit(0)
print(
f"::notice title=Preliminary Reviewer List::Total reviewer candidates for "
f"PR {os.environ['PR_NUMBER']}: {', '.join(reviewers)}"
)
# Step 4: Add the reviewers to the PR
# Note the final requested reviewer list in the workflow run for reference
new_reviewers = GitHub.add_reviewers_to_pr(
os.environ["GH_TOKEN"],
os.environ["ORG_NAME"],
os.environ["REPO_NAME"],
int(os.environ["PR_NUMBER"]),
reviewers,
)
if new_reviewers:
print(
f"::notice title=New Reviewers Added::New reviewers requested for PR "
f"{os.environ['PR_NUMBER']}: {', '.join(new_reviewers)}"
)
else:
print(
"::notice title=No New Reviewers Added::No reviewers were found that "
"should be newly requested."
)
run: python .github/scripts/RequestPrReviewers.py