Просмотр исходного кода

Introduce Mako to fix pr_triage workflow (#5574)

* pr_triage: Fix invalid workflow

* Don't assign reviewers to draft PRs

* Add team review request for developers team

* Introduce Mako to make team reviewers work
TSRBerry 2 лет назад
Родитель
Сommit
9b8625d999
3 измененных файлов с 22 добавлено и 12 удалено
  1. 1 1
      .github/reviewers.yml
  2. 16 8
      .github/update_reviewers.py
  3. 5 3
      .github/workflows/pr_triage.yml

+ 1 - 1
.github/reviewers.yml

@@ -29,4 +29,4 @@ infra:
   - TSRBerry
 
 default:
-  - marysaka
+  - @developers

+ 16 - 8
.github/update_reviewers.py

@@ -1,9 +1,10 @@
 from pathlib import Path
 from typing import List, Set
-from github import Github
+from github import Auth, Github
 from github.Repository import Repository
 from github.GithubException import GithubException
 
+import os
 import sys
 import yaml
 
@@ -25,6 +26,10 @@ def update_reviewers(config, repo: Repository, pr_id: int) -> int:
         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()
@@ -53,16 +58,19 @@ def update_reviewers(config, repo: Repository, pr_id: int) -> int:
 
 
 if __name__ == "__main__":
-    if len(sys.argv) != 5:
-        sys.stderr.write("usage: <token> <repo_path> <pr_id> <config_path>\n")
+    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)
 
-    token = sys.argv[1]
-    repo_path = sys.argv[2]
-    pr_id = int(sys.argv[3])
-    config_path = Path(sys.argv[4])
+    app_id = sys.argv[1]
+    private_key = os.environ[sys.argv[2]]
+    installation_id = sys.argv[3]
+    repo_path = sys.argv[4]
+    pr_id = int(sys.argv[5])
+    config_path = Path(sys.argv[6])
 
-    g = Github(token)
+    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:

+ 5 - 3
.github/workflows/pr_triage.yml

@@ -27,9 +27,11 @@ jobs:
           sync-labels: true
           dot: true
 
+      - run: pip3 install PyGithub
+
       - name: Assign reviewers
-        if: ! github.event.pull_request.draft
         run: |
-          pip3 install PyGithub
-          python3 .github/update_reviewers.py ${{ secrets.GITHUB_TOKEN }} ${{ github.repository }} ${{ github.event.pull_request.number }} .github/reviewers.yml
+          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
         shell: bash
+        env:
+            MAKO_PRIVATE_KEY: ${{ secrets.MAKO_PRIVATE_KEY }}