Update reviewers using Ryujinx-Mako command (#5635)
* Update reviewers using Ryujinx-Mako command * Fix worklflow step 'uses' path
This commit is contained in:
parent
93cd327873
commit
5f771f5661
2 changed files with 15 additions and 91 deletions
87
.github/update_reviewers.py
vendored
87
.github/update_reviewers.py
vendored
|
@ -1,87 +0,0 @@
|
||||||
from pathlib import Path
|
|
||||||
from typing import List, Set
|
|
||||||
from github import Auth, Github
|
|
||||||
from github.Repository import Repository
|
|
||||||
from github.GithubException import GithubException
|
|
||||||
|
|
||||||
import os
|
|
||||||
import sys
|
|
||||||
import yaml
|
|
||||||
|
|
||||||
|
|
||||||
def add_reviewers(
|
|
||||||
reviewers: Set[str], team_reviewers: Set[str], new_entries: List[str]
|
|
||||||
):
|
|
||||||
for reviewer in new_entries:
|
|
||||||
if reviewer.startswith("@"):
|
|
||||||
team_reviewers.add(reviewer[1:])
|
|
||||||
else:
|
|
||||||
reviewers.add(reviewer)
|
|
||||||
|
|
||||||
|
|
||||||
def update_reviewers(config, repo: Repository, pr_id: int) -> int:
|
|
||||||
pull_request = repo.get_pull(pr_id)
|
|
||||||
|
|
||||||
if not pull_request:
|
|
||||||
sys.stderr.writable(f"Unknown PR #{pr_id}\n")
|
|
||||||
return 1
|
|
||||||
|
|
||||||
if pull_request.draft:
|
|
||||||
print("Not assigning reviewers for draft PRs")
|
|
||||||
return 0
|
|
||||||
|
|
||||||
pull_request_author = pull_request.user.login
|
|
||||||
reviewers = set()
|
|
||||||
team_reviewers = set()
|
|
||||||
|
|
||||||
for label in pull_request.labels:
|
|
||||||
if label.name in config:
|
|
||||||
add_reviewers(reviewers, team_reviewers, config[label.name])
|
|
||||||
|
|
||||||
if "default" in config:
|
|
||||||
add_reviewers(reviewers, team_reviewers, config["default"])
|
|
||||||
|
|
||||||
if pull_request_author in reviewers:
|
|
||||||
reviewers.remove(pull_request_author)
|
|
||||||
|
|
||||||
try:
|
|
||||||
reviewers = list(reviewers)
|
|
||||||
team_reviewers = list(team_reviewers)
|
|
||||||
print(
|
|
||||||
f"Attempting to assign reviewers ({reviewers}) and team_reviewers ({team_reviewers})"
|
|
||||||
)
|
|
||||||
pull_request.create_review_request(reviewers, team_reviewers)
|
|
||||||
return 0
|
|
||||||
except GithubException as e:
|
|
||||||
sys.stderr.write(f"Cannot assign review request for PR #{pr_id}: {e}\n")
|
|
||||||
return 1
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
if len(sys.argv) != 7:
|
|
||||||
sys.stderr.write("usage: <app_id> <private_key_env_name> <installation_id> <repo_path> <pr_id> <config_path>\n")
|
|
||||||
sys.exit(1)
|
|
||||||
|
|
||||||
app_id = int(sys.argv[1])
|
|
||||||
private_key = os.environ[sys.argv[2]]
|
|
||||||
installation_id = int(sys.argv[3])
|
|
||||||
repo_path = sys.argv[4]
|
|
||||||
pr_id = int(sys.argv[5])
|
|
||||||
config_path = Path(sys.argv[6])
|
|
||||||
|
|
||||||
auth = Auth.AppAuth(app_id, private_key).get_installation_auth(installation_id)
|
|
||||||
g = Github(auth=auth)
|
|
||||||
repo = g.get_repo(repo_path)
|
|
||||||
|
|
||||||
if not repo:
|
|
||||||
sys.stderr.write("Repository not found!\n")
|
|
||||||
sys.exit(1)
|
|
||||||
|
|
||||||
if not config_path.exists():
|
|
||||||
sys.stderr.write(f'Config "{config_path}" not found!\n')
|
|
||||||
sys.exit(1)
|
|
||||||
|
|
||||||
with open(config_path, "r") as f:
|
|
||||||
config = yaml.safe_load(f)
|
|
||||||
|
|
||||||
sys.exit(update_reviewers(config, repo, pr_id))
|
|
19
.github/workflows/pr_triage.yml
vendored
19
.github/workflows/pr_triage.yml
vendored
|
@ -12,7 +12,17 @@ jobs:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
# Grab sources to get update_reviewers.py and reviewers.yml
|
- name: Checkout Ryujinx-Mako
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
with:
|
||||||
|
repository: Ryujinx/Ryujinx-Mako
|
||||||
|
ref: master
|
||||||
|
path: '.ryujinx-mako'
|
||||||
|
|
||||||
|
- name: Setup Ryujinx-Mako
|
||||||
|
uses: ./.ryujinx-mako/.github/actions/setup-mako
|
||||||
|
|
||||||
|
# Grab sources to get latest labeler.yml
|
||||||
- name: Fetch sources
|
- name: Fetch sources
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v3
|
||||||
with:
|
with:
|
||||||
|
@ -27,11 +37,12 @@ jobs:
|
||||||
sync-labels: true
|
sync-labels: true
|
||||||
dot: true
|
dot: true
|
||||||
|
|
||||||
- run: pip3 install PyGithub
|
|
||||||
|
|
||||||
- name: Assign reviewers
|
- name: Assign reviewers
|
||||||
run: |
|
run: |
|
||||||
python3 .github/update_reviewers.py ${{ secrets.MAKO_APP_ID }} "MAKO_PRIVATE_KEY" ${{ secrets.MAKO_INSTALLATION_ID }} ${{ github.repository }} ${{ github.event.pull_request.number }} .github/reviewers.yml
|
poetry -C .ryujinx-mako shell
|
||||||
|
ryujinx-mako update-reviewers ${{ github.repository }} ${{ github.event.pull_request.number }} .github/reviewers.yml
|
||||||
shell: bash
|
shell: bash
|
||||||
env:
|
env:
|
||||||
|
MAKO_APP_ID: ${{ secrets.MAKO_APP_ID }}
|
||||||
MAKO_PRIVATE_KEY: ${{ secrets.MAKO_PRIVATE_KEY }}
|
MAKO_PRIVATE_KEY: ${{ secrets.MAKO_PRIVATE_KEY }}
|
||||||
|
MAKO_INSTALLATION_ID: ${{ secrets.MAKO_INSTALLATION_ID }}
|
||||||
|
|
Loading…
Reference in a new issue