Skip to content
Snippets Groups Projects
Select Git revision
  • ddfb6ba94c63bd68767c1c8c03829a8776e30559
  • master default protected
  • dwmcallister-patch-1
  • 520-fix-wsl
  • tune-worker-processes
  • alpine-nginxorg
  • 1.29.0
  • 1.28.0
  • 1.27.5
  • 1.27.3
  • 1.27.2
  • 1.27.0
  • 1.26.1
  • 1.26.0
  • 1.25.5
  • 1.25.4
  • 1.25.3
  • 1.25.2
  • 1.25.1
  • 1.25.0
  • 1.24.0
  • 1.23.3
  • 1.23.4
  • 1.23.2
  • 1.22.1
  • 1.23.1
26 results

Dockerfile-debian.template

Blame
  • error-config.ts 3.33 KiB
    // TODO #22198
    import { GlobalConfig } from '../../config/global';
    import type { RenovateConfig } from '../../config/types';
    import { logger } from '../../logger';
    import { Pr, platform } from '../../modules/platform';
    
    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);
    }
    
    export function raiseCredentialsWarningIssue(
      config: RenovateConfig,
      error: Error,
    ): Promise<void> {
      logger.debug('raiseCredentialsWarningIssue()');
      const title = `Action Required: Add missing credentials`;
      const body = `There are missing credentials for the authentication-required feature. As a precaution, Renovate will pause PRs until it is resolved.\n\n`;
      const notificationName = 'missingCredentialsError';
      return raiseWarningIssue(config, notificationName, title, body, error);
    }
    
    async function raiseWarningIssue(
      config: RenovateConfig,
      notificationName: string,
      title: string,
      initialBody: string,
      error: Error,
    ): Promise<void> {
      if (config.mode === 'silent') {
        logger.debug(
          `Config warning issues are not created, updated or closed when mode=silent`,
        );
        return;
      }
      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}\n`;
      }
    
      const pr = await platform.getBranchPr(
        config.onboardingBranch!,
        config.baseBranch,
      );
      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');
      }
    }
    
    async function handleOnboardingPr(pr: Pr, issueMessage: string): Promise<void> {
      logger.debug('Updating onboarding PR with config error notice');
      if (GlobalConfig.get('dryRun')) {
        logger.info(`DRY-RUN: Would update PR #${pr.number}`);
        return;
      }
    
      let prBody = `## Action Required: Fix Renovate Configuration\n\n${issueMessage}`;
      prBody += `\n\nOnce you have resolved this problem (in this onboarding branch), Renovate will return to providing you with a preview of your repository's configuration.`;
    
      try {
        await platform.updatePr({
          number: pr.number,
          prTitle: pr.title,
          prBody,
        });
      } catch (err) /* istanbul ignore next */ {
        logger.warn({ err }, 'Error updating onboarding PR');
      }
    }