Skip to content
Snippets Groups Projects
Select Git revision
  • 9aff7a955ffa586c84b35bacbd14ce995b91b2d3
  • main default protected
  • renovate/main-renovatebot-github-action-43.x
  • next
  • feat/gnupg
  • fix/36615b-branch-reuse-no-cache
  • renovate/main-redis-5.x
  • chore/punycode
  • refactor/pin-new-value
  • feat/36219--git-x509-signing
  • feat/structured-logger
  • hotfix/39.264.1
  • feat/skip-dangling
  • gh-readonly-queue/next/pr-36034-7a061c4ca1024a19e2c295d773d9642625d1c2be
  • hotfix/39.238.3
  • refactor/gitlab-auto-approve
  • feat/template-strings
  • gh-readonly-queue/next/pr-35654-137d934242c784e0c45d4b957362214f0eade1d7
  • fix/32307-global-extends-merging
  • fix/32307-global-extends-repositories
  • gh-readonly-queue/next/pr-35009-046ebf7cb84ab859f7fefceb5fa53a54ce9736f8
  • 41.45.0
  • 41.44.0
  • 41.43.7
  • 41.43.6
  • 41.43.5
  • 41.43.4
  • 41.43.3
  • 41.43.2
  • 41.43.1
  • 41.43.0
  • 41.42.12
  • 41.42.11
  • 41.42.10
  • 41.42.9
  • 41.42.8
  • 41.42.7
  • 41.42.6
  • 41.42.5
  • 41.42.4
  • 41.42.3
41 results

status-checks.ts

Blame
  • user avatar
    Rhys Arkins authored and GitHub committed
    53ca9130
    History
    status-checks.ts 2.04 KiB
    import { RenovateConfig } from '../../config';
    import { logger } from '../../logger';
    import { platform } from '../../platform';
    import { BranchStatus } from '../../types';
    
    async function setStatusCheck(
      branchName: string,
      context: string,
      description: string,
      state: BranchStatus,
      url: string
    ): Promise<void> {
      const existingState = await platform.getBranchStatusCheck(
        branchName,
        context
      );
      // Check if state needs setting
      if (existingState === state) {
        logger.debug(`Status check ${context} is already up-to-date`);
      } else {
        logger.debug(`Updating ${context} status check state to ${state}`);
        await platform.setBranchStatus({
          branchName,
          context,
          description,
          state,
          url,
        });
      }
    }
    
    export type StabilityConfig = RenovateConfig & {
      stabilityStatus?: BranchStatus;
      branchName: string;
    };
    
    export async function setStability(config: StabilityConfig): Promise<void> {
      if (!config.stabilityStatus) {
        return;
      }
      const context = `renovate/stability-days`;
      const description =
        config.stabilityStatus === BranchStatus.green
          ? 'Updates have met stability days requirement'
          : 'Updates have not met stability days requirement';
      await setStatusCheck(
        config.branchName,
        context,
        description,
        config.stabilityStatus,
        config.productLinks.documentation
      );
    }
    
    export type UnpublishableConfig = RenovateConfig & {
      unpublishSafe?: boolean;
      canBeUnpublished?: boolean;
      branchName: string;
    };
    
    export async function setUnpublishable(
      config: UnpublishableConfig
    ): Promise<void> {
      if (!config.unpublishSafe) {
        return;
      }
      const context = `renovate/unpublish-safe`;
      // Set canBeUnpublished status check
      const state = config.canBeUnpublished
        ? BranchStatus.yellow
        : BranchStatus.green;
      const description = config.canBeUnpublished
        ? 'Packages < 24 hours old can be unpublished'
        : 'Packages cannot be unpublished';
      await setStatusCheck(
        config.branchName,
        context,
        description,
        state,
        config.productLinks.docs
      );
    }