Skip to content

Latest commit

 

History

History

renovate

README.md

m365-renovate-config

Shared Renovate presets for use in M365 projects, migrated from microsoft/m365-renovate-config.

Useful links

Using presets

To reference a preset from this repo in your Renovate config (syntax reference). ⚠️ Note the format change from m365-renovate-config!

{
  "extends": [
    "github>microsoft/beachball//renovate/presets/default",
    "github>microsoft/beachball//renovate/presets/somePreset",
    // Only for presets without `extends` pointing to other presets in this repo (see below)
    "github>microsoft/beachball//renovate/presets/somePreset#renovate_v3",
  ],
}

Renovate presets are published with the tags renovate_v<major> and renovate_v<version>, e.g. renovate_v3. You can only pin presets to a tag if they don't have extends references to other presets in this repo, since the beachball publish workflow for tagging doesn't update those references (doing so would require an extra branch and several extra steps). The workaround is to reference lower-level presets like base directly.

See the changelog for more details of what changed in the repo move and breaking changes in preset version 3.

Development notes

Expand for details
  • This package must use latest Node LTS to match Renovate, so it has a separate .nvmrc and a separate job in pr.yml.
  • yarn test runs unit tests only.
  • Preset validation is run manually via yarn presets:basic (not within yarn test for the repo). This runs renovate-config-validator against each preset and therefore is slow.
  • yarn presets:full runs renovate, which must operate against GitHub refs. So it can only be run in PR/CI builds on GitHub Actions.

Presets in this repo

Full config presets

default

// ⚠️ This preset can't be pinned to a #tag
"extends": ["github>microsoft/beachball//renovate/presets/default"]

Recommended config which is intended to be appropriate for most projects.

Show config JSON
{
  "extends": [
    "github>microsoft/beachball//renovate/presets/base",
    "github>microsoft/beachball//renovate/presets/customTagActions",
    "github>microsoft/beachball//renovate/presets/dependencyDashboardMajor",
    "github>microsoft/beachball//renovate/presets/groupReact"
  ]
}

This preset includes all the other presets which are generally recommended:

  • base: Renovate's config:recommended plus other common settings
  • dependencyDashboardMajor: Require dependency dashboard approval for major upgrades (not supported for Azure DevOps)
  • groupReact: Group React-related packages and types
  • customTagActions: Support updating actions that use a <name>_v<major> tag naming scheme, like microsoft/beachball/actions/should-release@abc123 # should-release_v3

(You should reference this preset instead of base unless you're pinning presets to a specific #tag.)


base

"extends": ["github>microsoft/beachball//renovate/presets/base"]

default preset contents, without the references to presets from this repo. Only use directly if pinning presets to a tag!

Show config JSON
{
  "extends": ["config:recommended", "docker:pinDigests", "helpers:pinGitHubActionDigests", ":configMigration"],
  "prConcurrentLimit": 10,
  "prHourlyLimit": 2,
  "branchNameStrict": true,
  "minimumReleaseAge": "3 days",
  "printConfig": true,
  "configMigration": true,
  "configWarningReuseIssue": false,
  "timezone": "America/Los_Angeles",
  "vulnerabilityAlerts": {
    "enabled": true
  },
  "packageRules": [
    {
      "matchDepTypes": ["devDependencies"],
      "commitMessageTopic": "devDependency {{{depName}}}"
    },
    {
      "matchManagers": ["npm"],
      "minimumReleaseAge": "7 days"
    }
  ]
}

This preset extends Renovate's config:recommended, which (as of writing) does various things including:

  • Ignore packages under node_modules or common test/fixture directory names
  • If the repo uses semantic commits, use appropriate prefixes
  • Common groupings and renamed package replacements
  • Workarounds for known problems with packages

Extended presets from this repo:

Other settings:

  • Extend configs to pin GitHub Actions and Docker digests
  • PR limits (prHourlyLimit and prConcurrentLimit): Prevent Renovate from creating an overwhelming number of PRs all at once. It's highly encouraged to adjust these in your repo to fit your team's needs!
  • branchNameStrict: Prevent special characters in branch names
  • minimumReleaseAge: Wait 3 or 7 days to auto-create PRs for new releases (they'll be shown on the dependency dashboard earlier), mainly in case of security issues. You should also apply a similar package manager setting to restrict lock file updates from pulling in new versions.
  • printConfig: Log the final resolved config to make debugging easier
  • configMigration: Automatically make PRs to migrate deprecated config options
  • configWarningReuseIssue: false: Always make a new issue in case of config warnings, so they're more obvious
  • timezone: Run schedules relative to Pacific time, since many M365 repos are based in that time zone (see time zone list).
  • vulnerabilityAlerts: Enable PRs to address security vulnerabilities. Note that this only works for GitHub and has limitations.
  • For devDependencies: Use "devDependencies" in commit messages (instead of the default "dependencies") to be clearer about what is being modified

beachball

// ⚠️ This preset can't be pinned to a #tag
"extends": ["github>microsoft/beachball//renovate/presets/beachball"]

Recommended config for library repos which use Beachball for publishing.

Show config JSON
{
  "extends": [
    "github>microsoft/beachball//renovate/presets/default",
    "github>microsoft/beachball//renovate/presets/beachballPostUpgrade"
  ]
}

This is a full config preset which extends the default preset, plus beachballPostUpgrade to generate appropriate Beachball change files:

  • Change type none for updating devDependencies
  • Change type patch for all other changes

These change types will be correct the majority of the time, but if a different change type is appropriate, you can always edit the change file in the PR before it merges.


Compatibility presets

disableEsmVersions

"extends": ["github>microsoft/beachball//renovate/presets/disableEsmVersions"]

Disable upgrades to package versions that have been converted to ES modules.

Show config JSON
{
  "packageRules": [
    {
      "matchPackageNames": ["p-limit"],
      "allowedVersions": "<4.0.0"
    },
    {
      "matchPackageNames": ["chalk"],
      "allowedVersions": "<5.0.0"
    },
    {
      "matchPackageNames": ["ansi-regex", "execa", "find-up", "pretty-bytes"],
      "allowedVersions": "<6.0.0"
    },
    {
      "matchPackageNames": ["strip-ansi"],
      "allowedVersions": "<7.0.0"
    },
    {
      "matchPackageNames": ["supports-color"],
      "allowedVersions": "<9.0.0"
    },
    {
      "matchPackageNames": ["globby"],
      "allowedVersions": "<12.0.0"
    }
  ]
}

While ES modules are the new standard, migrating immediately may not be practical, in particular for libraries whose main consumers can't immediately migrate. This preset is a stopgap to prevent having to verify that every major update does not include an ESM conversion.


restrictNode(<arg0>)

"extends": ["github>microsoft/beachball//renovate/presets/restrictNode(<arg0>)"]

Restrict Node version to the range arg0 and ignore updates incompatible with your repo's engines.node.

Show config JSON
{
  "packageRules": [
    {
      "matchPackageNames": ["@types/node", "node", "nodejs/node", "node-version"],
      "allowedVersions": "{{arg0}}"
    },
    {
      "matchManagers": ["npm"],
      "constraintsFiltering": "strict"
    }
  ]
}

This preset should work for the Node version as defined by @types/node dependency, engines.node in package.json, .nvmrc, or .node-version.

It does NOT work for actions/setup-node (GitHub workflows) or NodeTool (Azure Pipelines). To ensure the Node version stays in sync for GitHub actions, it's recommended to either:

  • Specify engines.node in package.json and specify node-version-file: package.json in the action, or
  • Create a .nvmrc file and specify node-version-file: .nvmrc in the action

The preset also enables constraintsFiltering: "strict" to prevent installing deps that are incompatible with your repo's engines.node setting.


Scheduling and control presets

keepFresh

"extends": ["github>microsoft/beachball//renovate/presets/keepFresh"]

Keep locally-used dependency versions updated and deduplicated.

Show config JSON
{
  "lockFileMaintenance": {
    "enabled": true,
    "rebaseWhen": "behind-base-branch",
    "schedule": ["before 5am on the 1st and 15th day of the month"]
  },
  "postUpdateOptions": ["yarnDedupeFewer", "npmDedupe"],
  "packageRules": [
    {
      "matchManagers": ["npm"],
      "rangeStrategy": "replace"
    }
  ]
}
  • lockFileMaintenance: Completely re-create lock files twice a month. This will update direct and indirect dependency versions used only within the repo to the latest versions that satisfy semver.
    • rebaseWhen: If the lock file maintenance PR gets out of date, rebase it even if there aren't conflicts.
  • postUpdateOptions:
    • yarnDedupeFewer: If using yarn, run yarn-deduplicate --strategy fewer after updates.
    • npmDedupe: If using npm, run npm dedupe after updates. WARNING: This may slow down Renovate runs significantly.
    • rangeStrategy: "replace" is now set for all npm dependencies.

With dependencies and/or devDependencies specified as ranges (unpinned), by default Renovate will make individual lockfile-only update PRs for in-range updates. These PRs are redundant when lockFileMaintenance is also enabled, so setting rangeStrategy to replace will reduce unnecessary PRs.

(To unpin your devDependencies that Renovate previously pinned, run npx better-deps unpin-dev-deps.)

It's highly recommended to manually run the deduplication command (npx yarn-deduplicate --strategy fewer or npm dedupe) before enabling this preset. In a large repo that hasn't been regularly deduplicated or had its lock file refreshed, it's likely that initial deduplication will cause build breaks due to implicit reliance on subtle interactions between particular old versions.


scheduleNoisy

"extends": ["github>microsoft/beachball//renovate/presets/scheduleNoisy"]

Update "noisy" (frequently-updating) packages once every other week.

Show config JSON
{
  "packageRules": [
    {
      "matchPackageNames": ["@microsoft/api-extractor*", "github/codeql-action"],
      "schedule": ["before 5am on the 8th and 22nd day of the month"]
    }
  ]
}

Certain packages tend to publish updates multiple times per week, and getting a PR for every one of those updates can be annoying. This rule includes a list of packages known to update frequently and spreads them out throughout the week (to avoid attempting to create too many PRs at once and being rate limited).


dependencyDashboardMajor

"extends": ["github>microsoft/beachball//renovate/presets/dependencyDashboardMajor"]

Require dependency dashboard approval for major upgrades, 0.x upgrades, and minor upgrades of deps known not to follow semver.

Show config JSON
{
  "dependencyDashboard": true,
  "major": {
    "dependencyDashboardApproval": true
  },
  "packageRules": [
    {
      "matchPackageNames": ["go", "typescript"],
      "matchUpdateTypes": ["minor"],
      "dependencyDashboardApproval": true
    },
    {
      "matchCurrentVersion": ">=0.1.0 <1.0.0-0",
      "matchUpdateTypes": ["minor"],
      "dependencyDashboardApproval": true
    }
  ]
}

Note: The dependency dashboard feature doesn't work in Azure DevOps as of writing due to lack of issue creation support in Renovate (and lack of markdown checkbox support in Azure DevOps).

Major upgrades of certain dependencies may be disruptive or require extra validation, so to avoid the PRs sitting for a long time, it may be desirable to manually approve upgrades.

This policy is also applied for certain minor upgrades that may contain breaking changes:

  • Packages with 0.x versions (allowed per semver)
  • Packages that don't respect major/minor semver: so far, typescript and go

The downside of setting this policy for all major upgrades is that it reduces the visibility of available upgrades, if nobody is checking the dashboard regularly.

Some alternative strategies which would need to be configured per repo (see Renovate docs for examples):

  • Create a packageRules group which requires dependency dashboard approval for only major upgrades of specific packages that are known to be high risk/effort.
  • Set schedules for individual packageRules groups to avoid the upgrades being forgotten.

Grouping presets

groupMore

// ⚠️ This preset can't be pinned to a #tag
"extends": ["github>microsoft/beachball//renovate/presets/groupMore"]

Apply major groupings from Renovate and all the groupings from this repo (except groupTypes).

Show config JSON
{
  "extends": [
    "group:monorepos",
    "group:recommended",
    "github>microsoft/beachball//renovate/presets/groupActions",
    "github>microsoft/beachball//renovate/presets/groupD3",
    "github>microsoft/beachball//renovate/presets/groupEslint",
    "github>microsoft/beachball//renovate/presets/groupFluent",
    "github>microsoft/beachball//renovate/presets/groupJest",
    "github>microsoft/beachball//renovate/presets/groupLageBackfill",
    "github>microsoft/beachball//renovate/presets/groupNodeMajor",
    "github>microsoft/beachball//renovate/presets/groupReact",
    "github>microsoft/beachball//renovate/presets/groupRollup",
    "github>microsoft/beachball//renovate/presets/groupYargs"
  ]
}

To use this preset but disable an individual grouping, add its name to the ignorePresets array.


groupActions

"extends": ["github>microsoft/beachball//renovate/presets/groupActions"]

Group and auto-update official GitHub Actions.

Show config JSON
{
  "packageRules": [
    {
      "matchManagers": ["github-actions"],
      "groupName": "GitHub Actions (official)",
      "matchPackageNames": ["actions/*", "github/*"],
      "matchDepTypes": ["action"],
      "dependencyDashboardApproval": false
    }
  ]
}

This is set to only matchDepTypes: ["action"] because of newer "actions" dependency types which should be updated separately.


groupD3

"extends": ["github>microsoft/beachball//renovate/presets/groupD3"]

Group D3 updates.

Show config JSON
{
  "packageRules": [
    {
      "groupName": "D3 packages",
      "matchPackageNames": ["d3-*", "@types/d3-*"]
    }
  ]
}

groupEslint

"extends": ["github>microsoft/beachball//renovate/presets/groupEslint"]

Group and schedule all eslint-related updates.

Show config JSON
{
  "packageRules": [
    {
      "groupName": "eslint packages",
      "matchPackageNames": ["/eslint/", "!@typescript-eslint/*"],
      "schedule": ["before 5am on the 8th and 22nd day of the month"]
    },
    {
      "groupName": "typescript-eslint monorepo",
      "matchSourceUrls": ["https://github.com/typescript-eslint/typescript-eslint"],
      "schedule": ["before 5am on the 8th and 22nd day of the month"]
    }
  ]
}

groupFluent

"extends": ["github>microsoft/beachball//renovate/presets/groupFluent"]

Group Fluent UI and related package updates.

Show config JSON
{
  "packageRules": [
    {
      "groupName": "Fluent UI React v9 packages",
      "matchPackageNames": ["@fluentui/*"],
      "matchCurrentVersion": ">=9.0.0-alpha.0"
    },
    {
      "groupName": "Fluent UI React v9 packages",
      "matchPackageNames": ["@griffel/*"]
    },
    {
      "groupName": "Fluent UI React v8 packages",
      "matchCurrentVersion": "/^[1234568]\\./",
      "matchPackageNames": ["@fluentui/*", "!@fluentui/eslint-plugin", "!@fluentui/react-conformance"]
    },
    {
      "groupName": "Fluent UI React v8 packages",
      "matchPackageNames": ["@fluentui/react-cards"]
    }
  ]
}

This config creates the following groups:

  • Fluent UI React v8 packages: Any packages corresponding to @fluentui/react version 8
  • Fluent UI React v9 packages: Any packages corresponding to @fluentui/react-components version 9

groupJest

"extends": ["github>microsoft/beachball//renovate/presets/groupJest"]

Group and schedule jest, ts-jest, jest types, and related packages.

Show config JSON
{
  "ignorePresets": ["monorepo:jest", "group:jestMonorepo", "group:jestPlusTypes", "group:jestPlusTsJest"],
  "packageRules": [
    {
      "groupName": "Jest packages",
      "matchSourceUrls": ["https://github.com/facebook/jest"],
      "schedule": ["before 5am on the 8th and 22nd day of the month"]
    },
    {
      "groupName": "Jest packages",
      "matchPackageNames": ["@types/jest", "ts-jest", "@types/jest-*", "jest-*"],
      "schedule": ["before 5am on the 8th and 22nd day of the month"]
    }
  ]
}

This replaces the built-in presets group:jestMonorepo, group:jestPlusTSJest, and group:jestPlusTypes with a group which catches more related dependencies.


groupLageBackfill

"extends": ["github>microsoft/beachball//renovate/presets/groupLageBackfill"]

Group Lage and Backfill packages (separate group for each).

Show config JSON
{
  "packageRules": [
    {
      "groupName": "lage packages",
      "matchSourceUrls": ["https://github.com/microsoft/lage"],
      "matchPackageNames": ["lage", "@lage-run/*"]
    },
    {
      "groupName": "backfill packages",
      "matchSourceUrls": ["https://github.com/microsoft/backfill", "https://github.com/microsoft/lage"],
      "matchPackageNames": ["backfill", "backfill-*"]
    }
  ]
}

groupNodeMajor

"extends": ["github>microsoft/beachball//renovate/presets/groupNodeMajor"]

Group major updates of Node and its types.

Show config JSON
{
  "packageRules": [
    {
      "groupName": "Node",
      "matchPackageNames": ["@types/node", "node", "nodejs/node"],
      "matchUpdateTypes": ["major"]
    }
  ]
}

This preset should work for the Node version as defined by @types/node dependency, engines.node in package.json, .nvmrc, or .node-version.

It does NOT work for actions/setup-node (GitHub workflows) or NodeTool (Azure Pipelines). For a workaround for GitHub workflows, see the notes on restrictNode.


groupReact

"extends": ["github>microsoft/beachball//renovate/presets/groupReact"]

Group React packages and types.

Show config JSON
{
  "packageRules": [
    {
      "groupName": "react monorepo",
      "matchPackageNames": [
        "@types/react",
        "@types/react-dom",
        "@types/react-test-renderer",
        "@types/react-is",
        "@types/scheduler"
      ]
    }
  ]
}

This uses the same name as (and therefore extends) the built-in config group:reactMonorepo.


groupRollup

"extends": ["github>microsoft/beachball//renovate/presets/groupRollup"]

Group all Rollup-related updates.

Show config JSON
{
  "packageRules": [
    {
      "groupName": "rollup packages",
      "matchPackageNames": ["/^@?rollup/"]
    }
  ]
}

groupTypes

"extends": ["github>microsoft/beachball//renovate/presets/groupTypes"]

Group minor and patch updates to @types devDependencies.

Show config JSON
{
  "packageRules": [
    {
      "groupName": "@types devDependencies",
      "schedule": ["before 5am on the 1st and 15th day of the month"],
      "matchManagers": ["npm"],
      "matchDepTypes": ["devDependencies"],
      "matchUpdateTypes": ["minor", "patch"],
      "matchCurrentVersion": ">1.0.0",
      "matchPackageNames": [
        "@types/*",
        "!@types/d3-*",
        "!@types/jest-*",
        "!@types/jest",
        "!@types/react",
        "!@types/react-dom",
        "!@types/react-is",
        "!@types/react-test-renderer",
        "!@types/scheduler",
        "!@types/yargs",
        "!@types/yargs-parser"
      ]
    },
    {
      "groupName": "@types devDependencies",
      "matchManagers": ["npm"],
      "matchPackageNames": ["@types/*"],
      "matchDepTypes": ["devDependencies"],
      "matchUpdateTypes": ["patch"],
      "matchCurrentVersion": "0.x"
    }
  ]
}

@types packages can update frequently, and used as devDependencies, they're generally low risk/effort to update. So this preset groups them together to reduce noise. It also uses an early-morning schedule since updates to @types packages may be released throughout the day, and probably at most one PR per day is desired.

This group excludes updates to @types packages with 0.x versions since those could technically be breaking changes (and to avoid conflicting with the dependencyDashboardMajor preset's 0.x rule). It also excludes things such as @types/react which are often included with other groups.

If you want to exclude a package from this group, add a new packageRules entry as follows:

{
  "groupName": "@types devDependencies",
  "matchPackageNames": ["!@types/some-package"]
}

groupYargs

"extends": ["github>microsoft/beachball//renovate/presets/groupYargs"]

Group yargs, yargs-parser, and their types.

Show config JSON
{
  "packageRules": [
    {
      "groupName": "yargs packages",
      "matchPackageNames": ["yargs", "yargs-parser", "@types/yargs", "@types/yargs-parser"]
    }
  ]
}

Other presets

beachballPostUpgrade

"extends": ["github>microsoft/beachball//renovate/presets/beachballPostUpgrade"]

Adds post-upgrade tasks to generate Beachball change files.

Show config JSON
{
  "gitAuthor": "Renovate Bot <renovate@whitesourcesoftware.com>",
  "packageRules": [
    {
      "matchManagers": ["npm"],
      "matchUpdateTypes": ["major", "minor", "patch", "pin", "rollback", "replacement"],
      "postUpgradeTasks": {
        "commands": [
          "git add --all",
          "npx beachball change --no-fetch --no-commit --type patch --message '{{{commitMessage}}}'",
          "git reset"
        ],
        "fileFilters": ["change/*"],
        "executionMode": "branch"
      }
    },
    {
      "matchManagers": ["npm"],
      "matchUpdateTypes": ["lockFileMaintenance"],
      "postUpgradeTasks": {
        "commands": [
          "git add --all",
          "npx beachball change --no-fetch --no-commit --type none --message '{{{commitMessage}}}'",
          "git reset"
        ],
        "fileFilters": ["change/*"],
        "executionMode": "branch"
      }
    },
    {
      "matchManagers": ["npm"],
      "matchDepTypes": ["devDependencies"],
      "postUpgradeTasks": {
        "commands": [
          "git add --all",
          "npx beachball change --no-fetch --no-commit --type none --message '{{{commitMessage}}}'",
          "git reset"
        ],
        "fileFilters": ["change/*"],
        "executionMode": "branch"
      }
    }
  ]
}

Configure a git author and post-upgrade tasks to generate appropriate change files:

  • Change type none for updating devDependencies
  • Change type patch for all other changes

These change types will be correct the majority of the time, but if a different change type is appropriate, you can always edit the change file in the PR before it merges.

Note that in the GitHub app, commands in postUpgradeTasks are limited to a specific set of strings for security reasons. As of writing, only the specific commands used in this config are allowed (though --no-fetch can optionally be removed).


customTagActions

"extends": ["github>microsoft/beachball//renovate/presets/customTagActions"]

Update GitHub Actions in subfolders that use a <name>_v<version> tag naming scheme (e.g. foo_v1 or foo_v1.2.3).

Show config JSON
{
  "customManagers": [
    {
      "description": "GitHub Actions using a `<name>_v<major>` or `<name>_v<major>.<minor>.<patch>` tag (digest refresh + version updates)",
      "customType": "regex",
      "managerFilePatterns": ["/^\\.github/(workflows|actions)/.+\\.ya?ml$/", "/(^|/)action\\.ya?ml$/"],
      "matchStrings": [
        "(?m)^[ \t]*(?:-[ \t]+)?uses:[ \t]+[\"']?(?<depName>(?<packageName>[^/\\s\"']+/[^/\\s\"']+)/[^@\\s\"']+)@(?<currentValue>[\\w.-]+_v(?<version>\\d+(?:\\.\\d+\\.\\d+)?))[\"']?($|[\\s#])",
        "(?m)^[ \t]*(?:-[ \t]+)?uses:[ \t]+[\"']?(?<depName>(?<packageName>[^/\\s\"']+/[^/\\s\"']+)/[^@\\s\"']+)@(?<currentDigest>[0-9a-f]{40})[\"']?[ \t]+#[ \t]*(?<currentValue>[\\w.-]+_v(?<version>\\d+(?:\\.\\d+\\.\\d+)?))$"
      ],
      "datasourceTemplate": "github-tags",
      "versioningTemplate": "regex:^(?<compatibility>[\\w.-]+)_v(?<major>\\d+){{#if (containsString version '.')}}\\.(?<minor>\\d+)\\.(?<patch>\\d+){{/if}}$"
    }
  ],
  "packageRules": [
    {
      "description": "Disable the built-in github-actions manager for `<name>_v<major>`-tagged refs, to avoid double processing.",
      "matchManagers": ["github-actions"],
      "matchCurrentValue": "/^[\\w.-]+_v\\d+(?:\\.\\d+){0,2}$/",
      "enabled": false
    }
  ]
}

Some repos publish multiple actions and tag each one with a <name>_v<version> scheme (e.g. foo_v1 or foo_v1.2.3) rather than a plain v1. For example:

- uses: microsoft/beachball/actions/should-release@should-release_v3
- uses: microsoft/beachball/actions/should-release@826cebb873f064d29134f1bbf39f2b7634cb47cb # should-release_v3

Renovate's built-in github-actions manager already understands actions in a repo subdirectory, but it can't follow this custom tag scheme. This preset uses a custom manager to implement similar behavior for tags with a name prefix: update the digest when a moving tag (like _v3) moves, and open a separate version-update PR only when a genuinely newer tag in the same family appears. It can also follow a tag with an exact version (like _v1.2.3) and provide all version-bump PRs.

Implementation details: The matchStrings setting uses the regex custom manager's named capture groups to extract each piece of the reference:

  • <depName> is the full action path (microsoft/beachball/actions/should-release), used only for display.
  • <packageName> is the repo (microsoft/beachball), which is what the github-tags datasource queries.
  • <currentDigest> is the pinned SHA, if relevant.
  • <currentValue> is the tag to follow (should-release_v3 or should-release_v1.2.3).
  • The non-standard named group <version> is just the numeric part of the tag (3 or 1.2.3), which the versioningTemplate uses to pick a scheme (see below).

The versioningTemplate translates <currentValue> into a version using Renovate's regex versioning:

  • <compatibility> is the action name prefix (e.g. should-release), which keeps different actions in the same repo separate.
  • <major> is the major version.
  • Since regex versioning translates an empty minor/patch to 0, the .<minor>.<patch> is gated by a template condition on whether <version> (see above) contains .. Otherwise Renovate would consider _v3.1.1 newer than _v3 and open a redundant version-bump PR.

The preset also contains a rule disabling the github-actions manager for matching tag references, to prevent double PRs.