From 8c9a8f2c48e466c3ee3217a33e09ee9d3c3b5106 Mon Sep 17 00:00:00 2001 From: Ryan Murfitt <rmurfitt@gmail.com> Date: Tue, 17 Sep 2019 17:48:16 +1000 Subject: [PATCH] feat(bitbucket-cloud): Default reviewers (#4501) --- docs/usage/configuration-options.md | 2 +- lib/config/definitions.ts | 2 +- lib/platform/bitbucket/index.ts | 18 ++++++++++++++++++ lib/platform/bitbucket/utils.ts | 1 + renovate-schema.json | 2 +- .../bitbucket/__snapshots__/index.spec.ts.snap | 5 +++++ test/platform/bitbucket/index.spec.ts | 5 +++++ 7 files changed, 32 insertions(+), 3 deletions(-) diff --git a/docs/usage/configuration-options.md b/docs/usage/configuration-options.md index b6213e2991..ccf99b2355 100644 --- a/docs/usage/configuration-options.md +++ b/docs/usage/configuration-options.md @@ -110,7 +110,7 @@ It's possible to add this setting into the `renovate.json` file as part of the " ## bbUseDefaultReviewers -Apply the default reviewers rules to PR's (Bitbucket server only). +Apply the default reviewers rules to PR's (Bitbucket only). ## branchName diff --git a/lib/config/definitions.ts b/lib/config/definitions.ts index 8d11806bdc..e139a3876c 100644 --- a/lib/config/definitions.ts +++ b/lib/config/definitions.ts @@ -1024,7 +1024,7 @@ const options: RenovateOptions[] = [ }, { name: 'bbUseDefaultReviewers', - description: 'Use the default reviewers (Bitbucket server only).', + description: 'Use the default reviewers (Bitbucket only).', type: 'boolean', default: true, }, diff --git a/lib/platform/bitbucket/index.ts b/lib/platform/bitbucket/index.ts index 063d80bc70..f4a1c88692 100644 --- a/lib/platform/bitbucket/index.ts +++ b/lib/platform/bitbucket/index.ts @@ -58,6 +58,7 @@ export async function initRepo({ repository, localDir, optimizeForDisabled, + bbUseDefaultReviewers, }: RepoParams) { logger.debug(`initRepo("${repository}")`); const opts = hostRules.find({ @@ -67,6 +68,7 @@ export async function initRepo({ config = { repository, username: opts!.username, + bbUseDefaultReviewers: bbUseDefaultReviewers !== false, } as any; let info; try { @@ -530,6 +532,17 @@ export async function createPr( logger.debug({ repository: config.repository, title, base }, 'Creating PR'); + let reviewers = []; + + if (config.bbUseDefaultReviewers) { + const reviewersResponse = (await api.get<utils.PagedResult<Reviewer>>( + `/2.0/repositories/${config.repository}/default-reviewers` + )).body; + reviewers = reviewersResponse.values.map((reviewer: Reviewer) => ({ + uuid: reviewer.uuid, + })); + } + const body = { title, description: sanitize(description), @@ -544,6 +557,7 @@ export async function createPr( }, }, close_source_branch: true, + reviewers, }; const prInfo = (await api.post( @@ -571,6 +585,10 @@ async function isPrConflicted(prNo: number) { return utils.isConflicted(parseDiff(diff)); } +interface Reviewer { + uuid: { raw: string }; +} + interface Commit { author: { raw: string }; } diff --git a/lib/platform/bitbucket/utils.ts b/lib/platform/bitbucket/utils.ts index a4814c2d90..8ab90f46b9 100644 --- a/lib/platform/bitbucket/utils.ts +++ b/lib/platform/bitbucket/utils.ts @@ -14,6 +14,7 @@ export interface Config { prList: any[]; repository: string; storage: Storage; + bbUseDefaultReviewers: boolean; username: string; } diff --git a/renovate-schema.json b/renovate-schema.json index 0465567906..04b676f41c 100644 --- a/renovate-schema.json +++ b/renovate-schema.json @@ -625,7 +625,7 @@ "default": 0 }, "bbUseDefaultReviewers": { - "description": "Use the default reviewers (Bitbucket server only).", + "description": "Use the default reviewers (Bitbucket only).", "type": "boolean", "default": true }, diff --git a/test/platform/bitbucket/__snapshots__/index.spec.ts.snap b/test/platform/bitbucket/__snapshots__/index.spec.ts.snap index 6f095e089f..4a6998fbd5 100644 --- a/test/platform/bitbucket/__snapshots__/index.spec.ts.snap +++ b/test/platform/bitbucket/__snapshots__/index.spec.ts.snap @@ -34,6 +34,11 @@ Array [ "name": "master", }, }, + "reviewers": Array [ + Object { + "uuid": "{1234-5678}", + }, + ], "source": Object { "branch": Object { "name": "branch", diff --git a/test/platform/bitbucket/index.spec.ts b/test/platform/bitbucket/index.spec.ts index a097eeaf56..7d4768201f 100644 --- a/test/platform/bitbucket/index.spec.ts +++ b/test/platform/bitbucket/index.spec.ts @@ -388,6 +388,11 @@ describe('platform/bitbucket', () => { describe('createPr()', () => { it('posts PR', async () => { await initRepo(); + api.get.mockReturnValueOnce({ + body: { + values: [{ uuid: '{1234-5678}' }], + }, + } as any); api.post.mockReturnValueOnce({ body: { id: 5 }, } as any); -- GitLab