diff --git a/docs/usage/configuration-options.md b/docs/usage/configuration-options.md index b6213e2991ab61170deb472023acd4fd5655ea98..ccf99b23551e30a5d3071c60a7306fd797d98da1 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 8d11806bdc7ae7bdb67cd4624f351ccf339f1b74..e139a3876cd020fefe3f5986922325f26f772f31 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 063d80bc70ac6ab73531e6f03fdcd7441e3b0c91..f4a1c886923b37a8d96c63e902c68c7b2926f0ae 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 a4814c2d90157ab29cc7cbe1392c600e301d753d..8ab90f46b97a8b22eaa145027a2e793469fe117a 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 0465567906ea8231dfcf1a01e170170a1da7d205..04b676f41c0642ddf2b3bf810779ff393751016f 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 6f095e089f9660d05d8069bba4a7e9aa7e67a5cc..4a6998fbd58b555c95a175ad669cc0b637ea9a82 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 a097eeaf568174c02be7563e9ecc61894d481282..7d4768201f6710044ff22aa582ddddb604fec655 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);