From 5b9ab1542f6ae08638337ad514ab5b686ec6df6f Mon Sep 17 00:00:00 2001 From: Francesco Saltori Date: Mon, 8 Aug 2022 11:27:51 +0200 Subject: [PATCH] Refactor review request logic Signed-off-by: Francesco Saltori --- .../builtin/publish/githubPullRequest.ts | 64 +++++++++++++------ 1 file changed, 43 insertions(+), 21 deletions(-) diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/githubPullRequest.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/githubPullRequest.ts index 67379e8d70..6a37a89f33 100644 --- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/githubPullRequest.ts +++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/githubPullRequest.ts @@ -27,6 +27,7 @@ import { createPullRequest } from 'octokit-plugin-create-pull-request'; import { resolveSafeChildPath } from '@backstage/backend-common'; import { getOctokitOptions } from '../github/helpers'; import { serializeDirectoryContents } from '../../../../lib/files'; +import { Logger } from 'winston'; export type Encoding = 'utf-8' | 'base64'; @@ -99,6 +100,12 @@ export interface CreateGithubPullRequestActionOptions { ) => Promise; } +type GithubPullRequest = { + owner: string; + repo: string; + number: number; +}; + /** * Creates a Github Pull Request action. * @public @@ -281,27 +288,14 @@ export const createPublishGithubPullRequestAction = ({ const pullRequestNumber = response.data.number; if (reviewers || teamReviewers) { - try { - const result = await client.rest.pulls.requestReviewers({ - owner, - repo, - pull_number: pullRequestNumber, - reviewers: reviewers, - team_reviewers: teamReviewers, - }); - const addedUsers = result.data.requested_reviewers ?? []; - const addedTeams = result.data.requested_teams ?? []; - ctx.logger.info( - `Added users [${addedUsers.join( - ',', - )}] and teams [${addedTeams.join(',')}] as reviewers`, - ); - } catch (e) { - ctx.logger.error( - `Failure when adding reviewers to Pull request ${pullRequestNumber}`, - e, - ); - } + const pullRequest = { owner, repo, number: pullRequestNumber }; + await requestReviewersOnPullRequest( + pullRequest, + reviewers, + teamReviewers, + client, + ctx.logger, + ); } ctx.output('remoteUrl', response.data.html_url); @@ -311,4 +305,32 @@ export const createPublishGithubPullRequestAction = ({ } }, }); + + async function requestReviewersOnPullRequest( + pr: GithubPullRequest, + reviewers: string[] | undefined, + teamReviewers: string[] | undefined, + client: Octokit, + logger: Logger, + ) { + try { + const result = await client.rest.pulls.requestReviewers({ + owner: pr.owner, + repo: pr.repo, + pull_number: pr.number, + reviewers, + team_reviewers: teamReviewers, + }); + const addedUsers = result.data.requested_reviewers?.join(', ') ?? ''; + const addedTeams = result.data.requested_teams?.join(', ') ?? ''; + logger.info( + `Added users [${addedUsers}] and teams [${addedTeams}] as reviewers to Pull request ${pr.number}`, + ); + } catch (e) { + logger.error( + `Failure when adding reviewers to Pull request ${pr.number}`, + e, + ); + } + } };