From cfb995c0735a582130670ff065552be5b5d83b73 Mon Sep 17 00:00:00 2001 From: alschmiedt Date: Fri, 29 Oct 2021 15:44:33 -0700 Subject: [PATCH] chore: adds an action to assign reviewers from requested reviewers(#5642) --- .github/workflows/assign_reviewers.yml | 19 +++++++++++++ .github/workflows/check_clang_format.yml | 3 ++- .github/workflows/scripts/assign_reviewers.js | 27 +++++++++++++++++++ 3 files changed, 48 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/assign_reviewers.yml create mode 100644 .github/workflows/scripts/assign_reviewers.js diff --git a/.github/workflows/assign_reviewers.yml b/.github/workflows/assign_reviewers.yml new file mode 100644 index 000000000..d4ae7daa6 --- /dev/null +++ b/.github/workflows/assign_reviewers.yml @@ -0,0 +1,19 @@ +name: Assign requested reviewers + +on: + pull_request: + types: [review_requested] + +jobs: + requested-reviewer: + runs-on: ubuntu-latest + steps: + - name: Check Out Blockly + uses: actions/checkout@v2 + + - name: Assign requested reviewer + uses: actions/github-script@v5 + with: + script: | + const {assign} = require('./.github/workflows/scripts/assign_reviewers.js') + assign(github, context, core) diff --git a/.github/workflows/check_clang_format.yml b/.github/workflows/check_clang_format.yml index 30e2a83e3..2691e7221 100644 --- a/.github/workflows/check_clang_format.yml +++ b/.github/workflows/check_clang_format.yml @@ -1,4 +1,5 @@ -name: test-clang-format +name: Check clang format + on: [pull_request] jobs: diff --git a/.github/workflows/scripts/assign_reviewers.js b/.github/workflows/scripts/assign_reviewers.js new file mode 100644 index 000000000..be9980660 --- /dev/null +++ b/.github/workflows/scripts/assign_reviewers.js @@ -0,0 +1,27 @@ +/** + * This script adds requested reviewers as assignees. If you remove a requested + * reviewer, it will not remove them as an assignee. + * + * See https://github.com/google/blockly/issues/5643 for more information on + * why this was added. + */ +exports.assign = function(github, context, core) { + try { + if (context.payload.pull_request === undefined) { + throw new Error("Can't get pull_request payload. Check a request reviewer event was triggered."); + } + const reviewers = context.payload.pull_request.requested_reviewers; + // Assignees takes in a list of logins rather than the reviewer object. + const reviewerNames = reviewers.map(reviewer => reviewer.login); + const {number:issue_number} = context.payload.pull_request; + + github.rest.issues.addAssignees({ + owner: context.repo.owner, + repo: context.repo.repo, + issue_number: issue_number, + assignees: reviewerNames + }); + } catch (error) { + core.setFailed(error.message); + } +}