2023-06-06 10:42:23 +02:00
{
$schema: 'https://docs.renovatebot.com/renovate-schema.json',
extends: [
2023-08-14 12:08:43 +02:00
'config:recommended',
2024-06-10 23:47:59 +09:00
'customManagers:dockerfileVersions',
2023-06-06 10:42:23 +02:00
':labels(dependencies)',
2024-12-25 10:58:47 +05:30
':prConcurrentLimitNone', // Remove limit for open PRs at any time
':prHourlyLimit2' // Rate limit PR creation to a maximum of two per hour
2023-06-06 10:42:23 +02:00
],
2024-12-25 10:58:47 +05:30
rebaseWhen: 'always', // Always rebase PRs to keep them up-to-date
2023-08-14 14:53:13 +02:00
minimumReleaseAge: '3', // Wait 3 days after the package has been published before upgrading it
2023-08-14 12:08:43 +02:00
dependencyDashboardHeader: 'This issue lists Renovate updates and detected dependencies. Read the [Dependency Dashboard](https://docs.renovatebot.com/key-concepts/dashboard/) docs to learn more. Before approving any upgrade: read the description and comments in the [`renovate.json5` file](https://github.com/mastodon/mastodon/blob/main/.github/renovate.json5).',
2023-11-09 19:15:58 +09:00
postUpdateOptions: ['yarnDedupeHighest'],
2023-06-06 10:42:23 +02:00
packageRules: [
{
2023-08-14 12:08:43 +02:00
// Require Dependency Dashboard Approval for major version bumps of these node packages
2023-06-06 10:42:23 +02:00
matchManagers: ['npm'],
matchPackageNames: [
2024-12-25 10:58:47 +05:30
'tesseract.js',
'react-hotkeys',
2023-11-28 11:03:32 +01:00
'@svgr/webpack',
2023-06-06 10:42:23 +02:00
'@types/webpack',
'babel-loader',
'compression-webpack-plugin',
'css-loader',
'imports-loader',
'mini-css-extract-plugin',
'postcss-loader',
'sass-loader',
'terser-webpack-plugin',
'webpack',
'webpack-assets-manifest',
'webpack-bundle-analyzer',
'webpack-dev-server',
'webpack-cli',
'history',
2024-12-25 10:58:47 +05:30
'react-router-dom'
2023-06-06 10:42:23 +02:00
],
matchUpdateTypes: ['major'],
2024-12-25 10:58:47 +05:30
dependencyDashboardApproval: true
2023-06-06 10:42:23 +02:00
},
{
2023-08-14 12:08:43 +02:00
// Require Dependency Dashboard Approval for major version bumps of these Ruby packages
2023-06-06 10:42:23 +02:00
matchManagers: ['bundler'],
matchPackageNames: [
2024-12-25 10:58:47 +05:30
'rack',
'strong_migrations',
'sidekiq',
'sidekiq-unique-jobs',
'redis'
2023-06-06 10:42:23 +02:00
],
matchUpdateTypes: ['major'],
2024-12-25 10:58:47 +05:30
dependencyDashboardApproval: true
2023-06-06 10:42:23 +02:00
},
{
2024-06-08 06:32:39 -04:00
// Update GitHub Actions and Docker images weekly
2023-06-06 10:42:23 +02:00
matchManagers: ['github-actions', 'dockerfile', 'docker-compose'],
2024-12-25 10:58:47 +05:30
extends: ['schedule:weekly']
2023-06-06 10:42:23 +02:00
},
{
2023-08-14 12:08:43 +02:00
// Require Dependency Dashboard Approval for major & minor bumps for the ruby image, this needs to be synced with .ruby-version
2023-06-06 10:42:23 +02:00
matchManagers: ['dockerfile'],
matchPackageNames: ['moritzheiber/ruby-jemalloc'],
matchUpdateTypes: ['minor', 'major'],
2024-12-25 10:58:47 +05:30
dependencyDashboardApproval: true
2023-06-06 10:42:23 +02:00
},
{
2023-08-14 12:08:43 +02:00
// Require Dependency Dashboard Approval for major bumps for the node image, this needs to be synced with .nvmrc
2023-06-06 10:42:23 +02:00
matchManagers: ['dockerfile'],
matchPackageNames: ['node'],
matchUpdateTypes: ['major'],
2024-12-25 10:58:47 +05:30
dependencyDashboardApproval: true
2023-06-06 10:42:23 +02:00
},
{
2023-08-14 12:08:43 +02:00
// Require Dependency Dashboard Approval for major postgres bumps in the docker-compose file, as those break dev environments
2023-06-06 10:42:23 +02:00
matchManagers: ['docker-compose'],
matchPackageNames: ['postgres'],
matchUpdateTypes: ['major'],
2024-12-25 10:58:47 +05:30
dependencyDashboardApproval: true
2023-06-06 10:42:23 +02:00
},
{
// Update devDependencies every week, with one grouped PR
2024-08-14 08:53:12 +02:00
matchManagers: ['npm'],
2023-06-06 10:42:23 +02:00
matchDepTypes: 'devDependencies',
matchUpdateTypes: ['patch', 'minor'],
groupName: 'devDependencies (non-major)',
2024-12-25 10:58:47 +05:30
extends: ['schedule:weekly']
2023-06-06 10:42:23 +02:00
},
2023-07-17 09:33:22 +02:00
{
// Group all eslint-related packages with `eslint` in the same PR
matchManagers: ['npm'],
2024-08-14 08:53:12 +02:00
matchPackageNames: ['eslint', 'eslint-*', '@typescript-eslint/*'],
2023-07-17 09:33:22 +02:00
matchUpdateTypes: ['patch', 'minor'],
2024-12-25 10:58:47 +05:30
groupName: 'eslint (non-major)'
2023-07-17 09:33:22 +02:00
},
2023-12-18 23:02:19 +09:00
{
// Group actions/*-artifact in the same PR
matchManagers: ['github-actions'],
2023-12-19 11:59:43 +01:00
matchPackageNames: [
'actions/download-artifact',
2024-12-25 10:58:47 +05:30
'actions/upload-artifact'
2023-12-19 11:59:43 +01:00
],
2023-12-18 23:02:19 +09:00
matchUpdateTypes: ['major'],
2024-12-25 10:58:47 +05:30
groupName: 'artifact actions (major)'
2023-12-18 23:02:19 +09:00
},
2023-06-06 10:42:23 +02:00
{
// Update @types/* packages every week, with one grouped PR
2024-08-14 08:53:12 +02:00
matchManagers: ['npm'],
matchPackageNames: '@types/*',
2023-06-06 10:42:23 +02:00
matchUpdateTypes: ['patch', 'minor'],
groupName: 'DefinitelyTyped types (non-major)',
extends: ['schedule:weekly'],
2024-12-25 10:58:47 +05:30
addLabels: ['typescript']
2023-06-06 10:42:23 +02:00
},
2023-07-17 09:33:22 +02:00
{
// We want those packages to always have their own PR
matchManagers: ['npm'],
matchPackageNames: [
2024-12-25 10:58:47 +05:30
'typescript'
2023-07-17 09:33:22 +02:00
],
2024-12-25 10:58:47 +05:30
groupName: null // We don't want them to belong to any group
2023-07-17 09:33:22 +02:00
},
2024-03-21 06:35:12 -04:00
{
// Group all RuboCop packages with `rubocop` in the same PR
matchManagers: ['bundler'],
2024-08-14 08:53:12 +02:00
matchPackageNames: ['rubocop', 'rubocop-*'],
2024-03-21 06:35:12 -04:00
matchUpdateTypes: ['patch', 'minor'],
2024-12-25 10:58:47 +05:30
groupName: 'RuboCop (non-major)'
2024-03-21 06:35:12 -04:00
},
{
// Group all RSpec packages with `rspec` in the same PR
matchManagers: ['bundler'],
2024-08-14 08:53:12 +02:00
matchPackageNames: ['rspec', 'rspec-*'],
2024-03-21 06:35:12 -04:00
matchUpdateTypes: ['patch', 'minor'],
2024-12-25 10:58:47 +05:30
groupName: 'RSpec (non-major)'
2024-03-21 06:35:12 -04:00
},
2024-05-10 18:33:10 +02:00
{
// Group all opentelemetry-ruby packages in the same PR
matchManagers: ['bundler'],
2024-08-14 08:53:12 +02:00
matchPackageNames: ['opentelemetry-*'],
2024-05-10 18:33:10 +02:00
matchUpdateTypes: ['patch', 'minor'],
2024-12-25 10:58:47 +05:30
groupName: 'opentelemetry-ruby (non-major)'
2024-05-10 18:33:10 +02:00
},
2023-06-06 18:53:43 +02:00
// Add labels depending on package manager
{ matchManagers: ['npm', 'nvm'], addLabels: ['javascript'] },
{ matchManagers: ['bundler', 'ruby-version'], addLabels: ['ruby'] },
{ matchManagers: ['docker-compose', 'dockerfile'], addLabels: ['docker'] },
2024-12-25 10:58:47 +05:30
{ matchManagers: ['github-actions'], addLabels: ['github_actions'] }
]
2023-06-06 10:42:23 +02:00
}