From 4372b797614ba5889093b86f7ff5563baf35b3b9 Mon Sep 17 00:00:00 2001 From: Andrew Savage Date: Thu, 15 Jun 2023 18:30:01 +0000 Subject: [PATCH 1/3] Auto-assign outisde PRs to partner-eng --- .github/workflows/auto_assign.yaml | 36 ++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 .github/workflows/auto_assign.yaml diff --git a/.github/workflows/auto_assign.yaml b/.github/workflows/auto_assign.yaml new file mode 100644 index 000000000000..c3059dd2e5e6 --- /dev/null +++ b/.github/workflows/auto_assign.yaml @@ -0,0 +1,36 @@ +name: PR Reviewer Auto Assignment + +on: + pull_request_target: + types: + - opened + - reopened + +concurrency: + group: '${{ github.workflow }}-${{ github.event_name }} @ ${{ github.event.pull_request.number || github.sha }}' + cancel-in-progress: true + +jobs: + assign-reviewer: + runs-on: ubuntu-latest + permissions: + pull-requests: write + steps: + - name: Check if PR author is outside collaborator and assign reviewer + env: + PR_AUTHOR_LOGIN: ${{ github.event.pull_request.user.login }} + REPO_NAME: ${{ github.event.repository.full_name }} + PR_NUMBER: ${{ github.event.number }} + run: | + PERMISSION_LEVEL=$(curl -s -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \ + "https://api.github.com/repos/$REPO_NAME/collaborators/$PR_AUTHOR_LOGIN/permission" | jq -r .permission) + + if [ "$PERMISSION_LEVEL" == "none" ] || [ "$PERMISSION_LEVEL" == "read" ]; then + echo "PR author is an outside collaborator. Assigning reviewer..." + + REVIEWERS_JSON='{"reviewers": ["youtube/cobalt-partner-eng"]}' + curl -s -X POST -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \ + -H "Accept: application/vnd.github.v3+json" \ + -d "$REVIEWERS_JSON" \ + "https://api.github.com/repos/$REPO_NAME/pulls/$PR_NUMBER/requested_reviewers" + fi From ca6283e6a698f26eb312f4de05afc8b0bdca7a2f Mon Sep 17 00:00:00 2001 From: Andrew Savage Date: Fri, 16 Jun 2023 15:41:52 +0000 Subject: [PATCH 2/3] Use more granular role_name attribute --- .github/workflows/auto_assign.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/auto_assign.yaml b/.github/workflows/auto_assign.yaml index c3059dd2e5e6..188e7f3e2247 100644 --- a/.github/workflows/auto_assign.yaml +++ b/.github/workflows/auto_assign.yaml @@ -23,7 +23,7 @@ jobs: PR_NUMBER: ${{ github.event.number }} run: | PERMISSION_LEVEL=$(curl -s -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \ - "https://api.github.com/repos/$REPO_NAME/collaborators/$PR_AUTHOR_LOGIN/permission" | jq -r .permission) + "https://api.github.com/repos/$REPO_NAME/collaborators/$PR_AUTHOR_LOGIN/permission" | jq -r .role_name) if [ "$PERMISSION_LEVEL" == "none" ] || [ "$PERMISSION_LEVEL" == "read" ]; then echo "PR author is an outside collaborator. Assigning reviewer..." From 23b80db4f702edb38e0373267bcb51bb9fdd6777 Mon Sep 17 00:00:00 2001 From: Andrew Savage Date: Wed, 28 Jun 2023 13:38:50 +0000 Subject: [PATCH 3/3] Apply label instead of assigning reviewer to PR --- .github/workflows/auto_assign.yaml | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/.github/workflows/auto_assign.yaml b/.github/workflows/auto_assign.yaml index 188e7f3e2247..3a471698f437 100644 --- a/.github/workflows/auto_assign.yaml +++ b/.github/workflows/auto_assign.yaml @@ -26,11 +26,10 @@ jobs: "https://api.github.com/repos/$REPO_NAME/collaborators/$PR_AUTHOR_LOGIN/permission" | jq -r .role_name) if [ "$PERMISSION_LEVEL" == "none" ] || [ "$PERMISSION_LEVEL" == "read" ]; then - echo "PR author is an outside collaborator. Assigning reviewer..." + echo "PR author is an outside collaborator. Adding label..." - REVIEWERS_JSON='{"reviewers": ["youtube/cobalt-partner-eng"]}' curl -s -X POST -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \ -H "Accept: application/vnd.github.v3+json" \ - -d "$REVIEWERS_JSON" \ - "https://api.github.com/repos/$REPO_NAME/pulls/$PR_NUMBER/requested_reviewers" + -d '["outside collaborator"]' \ + "https://api.github.com/repos/$REPO_NAME/issues/$PR_NUMBER/labels" fi