diff --git a/.github/workflows/auto_label_pr.yaml b/.github/workflows/auto_label_pr.yaml new file mode 100644 index 0000000000000..a8acac8edc840 --- /dev/null +++ b/.github/workflows/auto_label_pr.yaml @@ -0,0 +1,35 @@ +name: PR Auto Label + +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 .role_name) + + if [ "$PERMISSION_LEVEL" == "none" ] || [ "$PERMISSION_LEVEL" == "read" ]; then + echo "PR author is an outside collaborator. Adding label..." + + curl -s -X POST -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \ + -H "Accept: application/vnd.github.v3+json" \ + -d '["outside collaborator"]' \ + "https://api.github.com/repos/$REPO_NAME/issues/$PR_NUMBER/labels" + fi