diff --git a/lib/platform/github/index.ts b/lib/platform/github/index.ts index e99496f987b82f541559c8dbdd563c1bc237ede5..3d1e932740d3a18d5f06ccd949e5c1d8aa0a3e40 100644 --- a/lib/platform/github/index.ts +++ b/lib/platform/github/index.ts @@ -1569,9 +1569,13 @@ export async function mergePr( const url = `repos/${ config.parentRepo || config.repository }/pulls/${prNo}/merge`; - const options = { + const options: any = { body: {} as { merge_method?: string }, }; + // istanbul ignore if + if (config.forkToken) { + options.token = config.forkToken; + } let automerged = false; if (config.mergeMethod) { // This path is taken if we have auto-detected the allowed merge types from the repo @@ -1588,7 +1592,7 @@ export async function mergePr( 'GitHub blocking PR merge -- will keep trying' ); } else { - logger.warn({ err }, `Failed to ${options.body.merge_method} merge PR`); + logger.warn({ err }, `Failed to ${config.mergeMethod} merge PR`); return false; } } @@ -1600,29 +1604,20 @@ export async function mergePr( logger.debug({ options, url }, `mergePr`); await githubApi.putJson(url, options); } catch (err1) { - logger.debug( - { err: err1 }, - `Failed to ${options.body.merge_method} merge PR` - ); + logger.debug({ err: err1 }, `Failed to rebase merge PR`); try { options.body.merge_method = 'squash'; logger.debug({ options, url }, `mergePr`); await githubApi.putJson(url, options); } catch (err2) { - logger.debug( - { err: err2 }, - `Failed to ${options.body.merge_method} merge PR` - ); + logger.debug({ err: err2 }, `Failed to merge squash PR`); try { options.body.merge_method = 'merge'; logger.debug({ options, url }, `mergePr`); await githubApi.putJson(url, options); } catch (err3) { - logger.debug( - { err: err3 }, - `Failed to ${options.body.merge_method} merge PR` - ); - logger.debug({ pr: prNo }, 'All merge attempts failed'); + logger.debug({ err: err3 }, `Failed to merge commit PR`); + logger.info({ pr: prNo }, 'All merge attempts failed'); return false; } }