Skip to content
Snippets Groups Projects
Select Git revision
1 result Searching

error-config.ts

Blame
  • 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');