From 6a2982f723349c2068e2156d1354c213c91d506b Mon Sep 17 00:00:00 2001 From: Arthur Dzieniszewski Date: Wed, 22 Dec 2021 16:57:17 -0500 Subject: [PATCH 1/5] added team_reviewers --- .github/workflows/test.yml | 3 +++ README.md | 1 + index.js | 17 +++++++++++++++++ 3 files changed, 21 insertions(+) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 28052348..9f692c7f 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -231,6 +231,7 @@ jobs: branch: test-add-reviewers-${{ github.run_number }} commit-message: "Just testing [skip ci]" reviewers: gr2m + team_reviewers: test-reviewers - uses: octokit/request-action@v2.x id: get-pull-request with: @@ -245,3 +246,5 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - if: ${{ !contains(toJson(fromJson(steps.get-pull-request.outputs.data).requested_reviewers.*.login), 'gr2m') }} run: 'echo "Requested reviewers are \"${{ toJson(fromJson(steps.get-pull-request.outputs.data).requested_reviewers.*.login) }}\" but expected \"[\n gr2m \n]\"" && exit 1' + - if: ${{ !contains(toJson(fromJson(steps.get-pull-request.outputs.data).requested_teams.*.login), 'test-reviewers') }} + run: 'echo "Requested team reviewers are \"${{ toJson(fromJson(steps.get-pull-request.outputs.data).requested_teams.*.login) }}\" but expected \"[\n test-reviewers \n]\"" && exit 1' diff --git a/README.md b/README.md index a5c773d1..8644b631 100644 --- a/README.md +++ b/README.md @@ -44,6 +44,7 @@ with: labels: label1, label2 assignees: user1, user2 reviewers: user1, user2 + team_reviewers: team1, team2 auto-merge: squash update-pull-request-title-and-body: false ``` diff --git a/index.js b/index.js index 6b667c8b..731d81e8 100644 --- a/index.js +++ b/index.js @@ -53,6 +53,7 @@ async function main() { labels: core.getInput("labels"), assignees: core.getInput("assignees"), reviewers: core.getInput("reviewers"), + team_reviewers: core.getInput("team_reviewers"), autoMerge: core.getInput("auto-merge"), updatePRTitleAndBody: core.getInput("update-pull-request-title-and-body"), }; @@ -239,6 +240,22 @@ async function main() { core.debug(inspect(data)); } + if (inputs.team_reviewers) { + core.debug(`Adding team reviewers: ${inputs.team_reviewers}`); + const team_reviewers = inputs.team_reviewers.trim().split(/\s*,\s*/); + const { data } = await octokit.request( + `POST /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers`, + { + owner, + repo, + pull_number: number, + team_reviewers + } + ); + core.info(`Team reviewers added: ${team_reviewers.join(", ")}`); + core.debug(inspect(data)); + } + if (inputs.autoMerge) { const query = ` mutation($pullRequestId: ID!, $mergeMethod: PullRequestMergeMethod!, $commitHeadline: String!) { From d376ab12dc5b0c754f92758c9c49ea27255d914e Mon Sep 17 00:00:00 2001 From: Arthur Dzieniszewski Date: Wed, 22 Dec 2021 17:56:09 -0500 Subject: [PATCH 2/5] combined team_reviewers and reviewers in index.js --- index.js | 20 ++++---------------- 1 file changed, 4 insertions(+), 16 deletions(-) diff --git a/index.js b/index.js index 731d81e8..3c866b80 100644 --- a/index.js +++ b/index.js @@ -224,24 +224,10 @@ async function main() { core.debug(inspect(data)); } - if (inputs.reviewers) { + if (inputs.reviewers || inputs.team_reviewers) { core.debug(`Adding reviewers: ${inputs.reviewers}`); - const reviewers = inputs.reviewers.trim().split(/\s*,\s*/); - const { data } = await octokit.request( - `POST /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers`, - { - owner, - repo, - pull_number: number, - reviewers, - } - ); - core.info(`Reviewers added: ${reviewers.join(", ")}`); - core.debug(inspect(data)); - } - - if (inputs.team_reviewers) { core.debug(`Adding team reviewers: ${inputs.team_reviewers}`); + const reviewers = inputs.reviewers.trim().split(/\s*,\s*/); const team_reviewers = inputs.team_reviewers.trim().split(/\s*,\s*/); const { data } = await octokit.request( `POST /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers`, @@ -249,9 +235,11 @@ async function main() { owner, repo, pull_number: number, + reviewers, team_reviewers } ); + core.info(`Reviewers added: ${reviewers.join(", ")}`); core.info(`Team reviewers added: ${team_reviewers.join(", ")}`); core.debug(inspect(data)); } From 57e75b2afefdb90358d8faa0a181626e707722ca Mon Sep 17 00:00:00 2001 From: Arthur Dzieniszewski Date: Wed, 22 Dec 2021 18:39:57 -0500 Subject: [PATCH 3/5] added better resiliency/null checks in combined logic; added team_reviewers to action.yml --- action.yml | 3 +++ index.js | 51 ++++++++++++++++++++++++++++++++++++++------------- 2 files changed, 41 insertions(+), 13 deletions(-) diff --git a/action.yml b/action.yml index d7cee0cd..18c2e3e0 100644 --- a/action.yml +++ b/action.yml @@ -39,6 +39,9 @@ inputs: reviewers: description: Comma separated list of reviewers to apply to the pull request required: false + team_reviewers: + description: Comma separated list of team reviewers to apply to the pull request + required: false auto-merge: description: "Enable auto merge for pull request. Requires auto merging to be enabled in repository settings" required: false diff --git a/index.js b/index.js index 3c866b80..f22c4eee 100644 --- a/index.js +++ b/index.js @@ -225,22 +225,47 @@ async function main() { } if (inputs.reviewers || inputs.team_reviewers) { - core.debug(`Adding reviewers: ${inputs.reviewers}`); - core.debug(`Adding team reviewers: ${inputs.team_reviewers}`); - const reviewers = inputs.reviewers.trim().split(/\s*,\s*/); - const team_reviewers = inputs.team_reviewers.trim().split(/\s*,\s*/); - const { data } = await octokit.request( - `POST /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers`, - { - owner, - repo, - pull_number: number, - reviewers, + let params = { + owner, + repo, + pull_number: number + } + let reviewers = null; + let team_reviewers = null; + + if(inputs.reviewers) { + core.debug(`Adding reviewers: ${inputs.reviewers}`) + reviewers = (inputs.reviewers ?? "").trim().split(/\s*,\s*/); + + params = { + ...params, + reviewers + } + }; + + if(inputs.team_reviewers) { + core.debug(`Adding team reviewers: ${inputs.team_reviewers}`) + team_reviewers = (inputs.team_reviewers ?? "").trim().split(/\s*,\s*/); + + params = { + ...params, team_reviewers } + } ; + + const { data } = await octokit.request( + `POST /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers`, + params ); - core.info(`Reviewers added: ${reviewers.join(", ")}`); - core.info(`Team reviewers added: ${team_reviewers.join(", ")}`); + + if(reviewers) { + core.info(`Reviewers added: ${reviewers.join(", ")}`); + } + + if(team_reviewers) { + core.info(`Team reviewers added: ${team_reviewers.join(", ")}`); + } + core.debug(inspect(data)); } From ebbe1b4ddf5ec72f4bcc9e2c5498f65aec4831f9 Mon Sep 17 00:00:00 2001 From: Arthur Dzieniszewski Date: Wed, 22 Dec 2021 18:59:59 -0500 Subject: [PATCH 4/5] || -> ?? in team_reviewers/reviewers --- index.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/index.js b/index.js index f22c4eee..9d7269cc 100644 --- a/index.js +++ b/index.js @@ -235,7 +235,7 @@ async function main() { if(inputs.reviewers) { core.debug(`Adding reviewers: ${inputs.reviewers}`) - reviewers = (inputs.reviewers ?? "").trim().split(/\s*,\s*/); + reviewers = (inputs.reviewers || "").trim().split(/\s*,\s*/); params = { ...params, @@ -245,7 +245,7 @@ async function main() { if(inputs.team_reviewers) { core.debug(`Adding team reviewers: ${inputs.team_reviewers}`) - team_reviewers = (inputs.team_reviewers ?? "").trim().split(/\s*,\s*/); + team_reviewers = (inputs.team_reviewers || "").trim().split(/\s*,\s*/); params = { ...params, From 620b9fcf8dd946c815cc22fc1a72f47d28046700 Mon Sep 17 00:00:00 2001 From: Arthur Dzieniszewski Date: Wed, 22 Dec 2021 19:22:09 -0500 Subject: [PATCH 5/5] removed team reviewer check in test.yml --- .github/workflows/test.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 9f692c7f..1fe32ac2 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -246,5 +246,3 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - if: ${{ !contains(toJson(fromJson(steps.get-pull-request.outputs.data).requested_reviewers.*.login), 'gr2m') }} run: 'echo "Requested reviewers are \"${{ toJson(fromJson(steps.get-pull-request.outputs.data).requested_reviewers.*.login) }}\" but expected \"[\n gr2m \n]\"" && exit 1' - - if: ${{ !contains(toJson(fromJson(steps.get-pull-request.outputs.data).requested_teams.*.login), 'test-reviewers') }} - run: 'echo "Requested team reviewers are \"${{ toJson(fromJson(steps.get-pull-request.outputs.data).requested_teams.*.login) }}\" but expected \"[\n test-reviewers \n]\"" && exit 1'