Skip to content
Snippets Groups Projects
Select Git revision
  • 1968f6ea243a6662c469a734b3ba4b0fff287fc4
  • dependabot/npm_and_yarn/eslint-plugin-prettier-5.5.1
  • dependabot/npm_and_yarn/chai-5.2.1
  • dependabot/npm_and_yarn/smol-toml-1.4.1
  • dependabot/npm_and_yarn/sentry/node-9.38.0
  • dependabot/npm_and_yarn/webextension-store-meta-1.2.7
  • dependabot/npm_and_yarn/eslint-9.30.1
  • dependabot/npm_and_yarn/cypress-14.5.1
  • dependabot/npm_and_yarn/simple-icons-15.5.0
  • dependabot/npm_and_yarn/eslint-plugin-import-2.32.0
  • dependabot/npm_and_yarn/eslint-plugin-jsdoc-51.3.4
  • dependabot/npm_and_yarn/prettier-3.6.2
  • dependabot/npm_and_yarn/is-svg-6.1.0
  • dependabot/npm_and_yarn/query-string-9.2.2
  • dependabot/npm_and_yarn/mocha-11.7.1
  • dependabot/npm_and_yarn/globals-16.3.0
  • dependabot/npm_and_yarn/neostandard-0.12.2
  • dependabot/npm_and_yarn/concurrently-9.2.0
  • dependabot/npm_and_yarn/pg-8.16.3
  • dependabot/npm_and_yarn/typescript-eslint/parser-8.36.0
  • gh-pages
  • server-2025-07-01
  • 5.0.2
  • 5.0.1
  • 5.0.0
  • server-2025-06-01
  • server-2025-05-01
  • server-2025-04-03
  • server-2025-03-02
  • server-2025-03-01
  • server-2025-02-02
  • server-2025-01-01
  • server-2024-12-01
  • server-2024-11-02
  • 4.1.0
  • server-2024-09-25
  • server-2024-09-02
  • server-2024-08-01
  • server-2024-07-01
  • 4.0.0
  • server-2024-06-01
41 results

tutorial-code-walkthrough.html

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');
      }
    }