Co-authored-by: Rhys Arkins <rhys@arkins.net> Co-authored-by: Sebastian Poxhofer <secustor@users.noreply.github.com>
14 KiB
Release notes for major versions of Renovate
It can be hard to keep track of the changes between major versions of Renovate. To help you, we've listed the breaking changes, plus the developer commentary for the latest major releases.
The most recent versions are always at the top of the page. This is because recent versions may revert changes made in an older version. You also don't have to scroll to the bottom of the page to find the latest release notes.
Version 38
Breaking changes for 38
General:
- Require Node.js 20 (#30291)
- The Renovate Docker images no longer have
-slim
tags. You must stop using the-slim
prefix. Renovate now defaults to the-slim
tag type behavior.
Specific:
- bitbucket-server: autodetect
gitAuthor
, if possible (#29525) - config: change from
boolean
toenum
foronboardingNoDeps
. Renovate now onboards repositories with no dependencies, with one exception: if you run Renovate inautodiscover
mode then you must manually onboard Renovate for repos with no dependencies - config: sanitize special characters from branch names for vulnerability type PRs. This may cause Renovate to autoclose/replace existing PRs
- config: change the order of
globalExtends
resolution, it is applied first and remaining global config takes precedence - datasource/docker: Docker Hub lookups prefers
hub.docker.com
overindex.docker.io
. To revert to the old behavior: setRENOVATE_X_DOCKER_HUB_TAGS_DISABLE=true
in your env - git: check all commits on the branch to decide if the branch was modified (#28225)
- gitea: use "bearer auth" instead of "token auth" to authenticate to the Gitea platform
- github: if you run Renovate as a GitHub app then
platformCommit
is automatically enabled - http: remove
dnsCache
- logging: you must set file logging via env, not in
config.js
- manager/pep621: change
depName
forpep621
dependencies. This causes the branch name forpep621
updates to change, which in turn means Renovate may autoclose and re-open somepep621
PRs. Also, Renovate may start grouping dependencies into a single PR. - npm: for npm versions lower than 7, drop support for remediating vulnerabilities in transitive dependencies
- npm: remove
RENOVATE_CACHE_NPM_MINUTES
(#28715) - packageRules:
matchPackageNames
(and related functions) no longer fall back to checkingdepName
- packageRules:
matchPackageNames
exact matches are now case-insensitive
Commentary for 38
Our Docker images are slim by default
If you self-host using Renovate's Docker -slim
images: drop the -slim
suffix, and switch to the default tags.
Renovate's default tags like 38.0.0
are "slim" by default.
There's no change if you're using the -full
images.
Renovate needs Node.js 20
Renovate now needs Node.js ^20.15.1
to run.
Our Docker images already use the correct version of Node.js.
But if you self-host without using our Docker image, then you must update the version of Node.js.
You must update manually, if for example: you build your own image, or run the renovate
npm package.
Why we picked Node 20
We dropped Node.js 18, and do not yet support Node.js 22 as it's non-LTS and not recommended for production.
Why we picked a non-vulnerable version of Node
We decided to require the current non-vulnerable version of Node.js (20.15.1
or newer).
If we ever need to bump the minimum version of Node.js v20, we will release a new major version of Renovate.
If you self-host: we recommend you always run a secure version of Node.js v20. This is because security vulnerabilities in Node.js can affect Renovate too.
If you use Mend's Renovate GitHub app
We recommend that all users running Renovate as a GitHub App use platformCommit
.
Renovate now defaults to platformCommit
is enabled, when Renovate detects a GitHub App token.
For PATs, we still recommend regular commits.
Log file configuration requires env settings
File-based logging must be configured using environment variables (e.g. LOG_FILE
).
Do not set logging in files or CLI (such as logFile
).
This ensures that logging begins right when Renovate starts a run. It also means Renovates logs how it parses the config.
Changes to package matching
Finally, we merged the matchPackage*
and excludePackage*
options into matchPackageNames
.
We also enabled patterns for the matchPackageNames
config option.
This means you can now use regex or glob patterns:
"matchPackageNames": "/^com.renovatebot/"
(regex)"matchPackageNames": "@renovate/*"
(glob)
And of course, you can still use exact name matching.
Link to release notes for 38
Release notes for v38
on GitHub.
Version 37
Breaking changes for 37
- npm: drop explicit lerna support
Commentary for 37
We switched from "merge" strategy to "hunt" strategy to match with how Maven works.
Lerna v7 does not need our explicit support anymore, so we dropped it. If you're on a version of Lerna before v7, you should prioritize upgrading to v7.
Link to release notes for 37
Release notes for v37
on GitHub.
Version 36
Breaking changes for 36
- postUpgradeTasks.fileFilters is now optional and defaults to all files
languages
are now calledcategories
instead. UsematchCategories
inpackageRules
- Node v19 is no longer supported
- datasource:
semver-coerced
is now the default versioning - presets: Preset
config:base
is now calledconfig:recommended
(will be migrated automatically) - remove
BUILDPACK
env support - package-rules:
matchPackageNames
now matches bothdepName
(existing) andpackageName
(new) and warns if onlydepName
matches - release-notes: Release notes won't be fetched early for
commitBody
insertion unless explicitly configured withfetchReleaseNotes=branch
dockerImagePrefix
is now replaced bydockerSidecarImage
matchPaths
andmatchFiles
are now combined intomatchFileNames
, supporting exact match and glob-only. The "any string match" functionality ofmatchPaths
is now removed- presets: v25 compatibility for language-based branch prefixes is removed
- npm: Rollback PRs will no longer be enabled by default for npm (they are now disabled by default for all managers)
- post-upgrade-tasks: dot files will now be included by default for all minimatch results
- platform/gitlab: GitLab
gitAuthor
will change from the account's "email" to "commit_email" if they are different - automerge: Platform automerge will now be chosen by default whenever automerge is enabled
- Post upgrade templating is now allowed by default, as long as the post upgrade task command is itself already allowed
- Official Renovate Docker images now use the "slim" approach with
binarySource=install
by default. e.g.renovate/renovate:latest
is the slim image, not full - The "full" image is now available via the tag
full
, e.g.renovate/renovate:38-full
, and defaults tobinarySource=global
(no dynamic installs) - Third party tools in the full image have been updated to latest/LTS major version
Commentary for 36
If you're self-hosting Renovate, pay particular attention to:
- Do you want to run the full, or slim versions of the image? We have switched the defaults (latest is now slim, not full)
- Have you configured
dockerImagePrefix
? If so then you need to usedockerSidecarImage
instead - If you're using
config:base
in youronboardingConfig
then switch toconfig:recommended
gitAuthor
may change if you're on GitLab and have a different commit email for your bot account. If so then configuregitIgnoredAuthors
with the old email
Link to release notes for 36
Release notes for v36
on GitHub.
Version 35
Breaking changes for 35
- require NodeJS v18.12+ (#20838)
- config: Forked repos will now be processed automatically if
autodiscover=false
.includeForks
is removed and replaced by new optionforkProcessing
- Internal checks such as
renovate/stability-days
will no longer count as passing/green, meaning that actions such asautomerge
won't occur if the only checks are Renovate internal ones. SetinternalChecksAsSuccess=true
to restore existing behavior - versioning: default versioning is now
semver-coerced
, instead ofsemver
- datasource/github-releases: Regex Manager configurations relying on the github-release data-source with digests will have different digest semantics. The digest will now always correspond to the underlying Git SHA of the release/version. The old behavior can be preserved by switching to the github-release-attachments datasource
- versioning: bump short ranges to version (#20494)
- config:
containerbase/
account used for sidecar containers instead ofrenovate/
- go: Renovate will now use go's default
GOPROXY
settings. To avoid using the public proxy, configureGOPROXY=direct
- datasource/npm: Package cache will include entries for up to 24 hours after the last lookup. Set
cacheHardTtlMinutes=0
to revert to existing behavior - config: Renovate now defaults to applying hourly and concurrent PR limits. To revert to unlimited, configure them back to
0
- config: Renovate will now default to updating locked dependency versions. To revert to previous behavior, configure
rangeStrategy=replace
- config: PyPI releases will no longer be filtered by default based on
constraints.python
compatibility. To retain existing functionality, setconstraintsFiltering=strict
Commentary for 35
Most of these changes will be invisible to the majority of users. They may be "breaking" (change of behavior) but good changes of defaults to make.
The biggest change is defaulting rangeStrategy=auto
to use update-lockfile
instead of replace
, which impacts anyone using the recommended config:base
.
This will mean that you start seeing some "lockfile-only" PRs for in-range updates, such as updating package-lock.json
when a range exists in package.json
.
Link to release notes for 35
Release notes for v35
on GitHub.
Version 34
Breaking changes for 34
- Revert
branchNameStrict
tofalse
Commentary for 34
Here comes v34 hot on the heels of v33. We decided to issue another breaking change to revert one of the breaking changes in v33.
If you are upgrading from v32 to v34 then it means that the setting for branchNameStrict
remains as false
and you don't need to worry about that.
If you already upgraded from v32 to v33 then you have a decision to make first:
- set
branchNameStrict
totrue
(like in v33), - or let it set back to
false
(like in v32).
Strict branch naming meant that all special characters other than letters, numbers and hyphens were converted to hyphens and then deduplicated, e.g. a branch which in v32 was like renovate/abc.def-2.x
would become renovate/abc-def-2-x
in v33.
If you prefer to revert back to the old way then that will happen automatically in v34.
If you prefer to keep the way in v33 because you already had a bunch of PRs closed and reopened due to branch names, and don't want to do that again, then add branchNameStrict: false
to your bot config or your shared config before updating to v34.
Apologies to anyone negatively affected by this v33 change.
Link to release notes for 34
Release notes for v34
on GitHub.
Version 33
Breaking changes for 33
- Node 16 is the required runtime for Renovate
- [NOTE: This was reverted in
v34
] config:branchNameStrict
default value is nowtrue
- config:
internalChecksFilter
default value is now"strict"
- config:
ignoreScripts
default value is nowtrue
. IfallowScripts=true
in global config,ignoreScripts
must be set tofalse
in repo config if you want all repos to run scripts - config:
autodiscover
filters can no longer include commas - config: boolean variables must be
true
orfalse
when configured in environment variables, and errors will be thrown for invalid values. Previously invalided values were ignored and treated asfalse
- datasource/go:
git-tags
datasource will be used as the fallback instead ofgithub-tags
if a go package's host type is unknown - jsonnet-bundler:
depName
now uses the "absolute import" format (e.g.bar
->github.com/foo/bar/baz-wow
) - azure-pipelines: azure-pipelines manager is now disabled by default
- github: No longer necessary to configure forkMode. Forking mode is now experimental
- Users of
containerbase
images (such as official Renovate images) will now have dynamic package manager installs enabled by default - Dependencies are no longer automatically pinned if
rangeStrategy=auto
, pinning must be opted into usingrangeStrategy=pin
Commentary for 33
This release contains some changes of default values/behavior:
internalChecksFilter
will now default tostrict
, meaning that updates will be withheld by default when internal status checks are pending. This should reduce the number of "non-actionable" Pull Requests you getazure-pipelines
manager is disabled by default, because its primary datasource can unfortunately suggest updates which aren't yet installable. Users should opt into this manager once they know the risksbinarySource=install
will now be used instead ofglobal
whenever Renovate is run within a "containerbase" image. This means dynamic installation of most package managers and languages- Dependencies will no longer be pinned by default if
rangeStrategy=auto
. While we recommend pinning dependencies, we decided users should opt into this more explicitly
And two major features!
- AWS CodeCommit platform support
- OpenTelemetry support
Both the above are considered "experimental". Please test them out and let us know your feedback - both positive or negative - so that we can progress them to fully available.