Select Git revision
error-config.ts
error-config.ts 2.74 KiB
// TODO #7154
import { GlobalConfig } from '../../config/global';
import type { RenovateConfig } from '../../config/types';
import { logger } from '../../logger';
import { Pr, platform } from '../../modules/platform';
import { regEx } from '../../util/regex';
export function raiseConfigWarningIssue(
config: RenovateConfig,
error: Error
): Promise<void> {
logger.debug('raiseConfigWarningIssue()');
const title = `Action Required: Fix Renovate Configuration`;
const body = `There is an error with this repository's Renovate configuration that needs to be fixed. As a precaution, Renovate will stop PRs until it is resolved.\n\n`;
const notificationName = 'configErrorIssue';
return raiseWarningIssue(config, notificationName, title, body, error);
}
async function raiseWarningIssue(
config: RenovateConfig,
notificationName: string,
title: string,
initialBody: string,
error: Error
): Promise<void> {
let body = initialBody;
if (error.validationSource) {
body += `Location: \`${error.validationSource}\`\n`;
}
if (error.validationError) {
body += `Error type: ${error.validationError}\n`;
}
if (error.validationMessage) {
body += `Message: \`${error.validationMessage.replace(
regEx(/`/g),
"'"
)}\`\n`;
}
const pr = await platform.getBranchPr(config.onboardingBranch!);
if (pr?.state === 'open') {
await handleOnboardingPr(pr, body);
return;
}
if (GlobalConfig.get('dryRun')) {
logger.info(
{ configError: error },
'DRY-RUN: Would ensure configuration error issue'
);
return;
}
if (config.suppressNotifications?.includes(notificationName)) {
logger.info(
{ notificationName },
'Configuration failure, issues will be suppressed'
);
return;
}
const res = await platform.ensureIssue({
title,
body,
once: false,
shouldReOpen: config.configWarningReuseIssue,
confidential: config.confidential,
});
if (res === 'created') {
logger.warn({ configError: error, res }, 'Configuration Warning');