plugin-barman-cloud/renovate.json5
Marco Nenciarini 378c76a526
fix: resolve WAL archiving performance and memory issues (#746)
The barman-cloud plugin experienced significant performance degradation
and memory growth compared to the embedded solution. WAL archiving was
noticeably slower and memory consumption grew over time.

Root cause: The sidecar uses a read-only filesystem which prevents
Python from creating bytecode at runtime. When Python finds missing or
stale bytecode (.pyc files), it attempts to recompile on every
invocation, causing high CPU usage and memory consumption. The previous
approach pre-compiled bytecode in a separate base image, but the
bytecode was marked as stale when copied between Docker stages,
triggering runtime recompilation attempts.

This change eliminates bytecode staleness by ensuring all Python
bytecode is properly compiled in the final image before the sidecar
starts. The image is now fully distroless and based on trixie
(previously it was distroless-based but copied unnecessary files from
the build stage), reducing size from 463MB to 270MB and package count
from 188 to 35, while maintaining zero HIGH/CRITICAL vulnerabilities.

Closes #656 
Closes #711 
Closes #735

Signed-off-by: Marco Nenciarini <marco.nenciarini@enterprisedb.com>
2026-01-29 16:43:55 +01:00

136 lines
3.8 KiB
Plaintext

{
$schema: 'https://docs.renovatebot.com/renovate-schema.json',
extends: [
'config:recommended',
':gitSignOff',
':semanticCommitType(chore)',
':labels(automated,no-issue)',
'customManagers:githubActionsVersions',
':automergeMinor',
':automergeDigest',
],
rebaseWhen: 'never',
prConcurrentLimit: 5,
// Override default ignorePaths to scan test/e2e for emulator image dependencies
// Removed: '**/test/**'
ignorePaths: [
'**/node_modules/**',
'**/bower_components/**',
'**/vendor/**',
'**/examples/**',
'**/__tests__/**',
'**/tests/**',
'**/__fixtures__/**',
],
lockFileMaintenance: {
enabled: true,
},
gomod: {
ignorePaths: [
'dagger/**/go.mod',
],
},
postUpdateOptions: [
'gomodTidy',
],
semanticCommits: 'enabled',
commitBodyTable: true,
customManagers: [
{
customType: 'regex',
managerFilePatterns: [
'/(^|/)Taskfile\\.yml$/',
],
matchStrings: [
'# renovate: datasource=(?<datasource>[a-z-.]+?) depName=(?<depName>[^\\s]+?)(?: (?:lookupName|packageName)=(?<packageName>[^\\s]+?))?(?: versioning=(?<versioning>[^\\s]+?))?(?: extractVersion=(?<extractVersion>[^\\s]+?))?(?: currentValue=(?<currentValue>[^\\s]+?))?\\s+[A-Za-z0-9_]+?_SHA\\s*:\\s*["\']?(?<currentDigest>[a-f0-9]+?)["\']?\\s',
'# renovate: datasource=(?<datasource>[a-z-.]+?) depName=(?<depName>[^\\s]+?)(?: (?:lookupName|packageName)=(?<packageName>[^\\s]+?))?(?: versioning=(?<versioning>[^\\s]+?))?(?: extractVersion=(?<extractVersion>[^\\s]+?))?\\s+[A-Za-z0-9_]+?_VERSION\\s*:\\s*["\']?(?<currentValue>.+?)["\']?\\s',
],
},
{
customType: 'regex',
managerFilePatterns: [
'/\\.go$/',
],
matchStrings: [
'//\\s*renovate:\\s*datasource=(?<datasource>[a-z-.]+?)\\s+depName=(?<depName>[^\\s]+?)(?:\\s+versioning=(?<versioning>[^\\s]+?))?\\s*\\n\\s*//\\s*Version:\\s*(?<currentValue>[^\\s]+?)\\s*\\n\\s*Image:\\s*"[^@]+@(?<currentDigest>sha256:[a-f0-9]+)"',
],
},
{
customType: 'regex',
managerFilePatterns: [
'/(^|/)docs/config\\.yaml$/',
],
matchStrings: [
'# renovate: datasource=(?<datasource>[a-z-.]+?) depName=(?<depName>[^\\s]+?)(?: (?:lookupName|packageName)=(?<packageName>[^\\s]+?))?(?: versioning=(?<versioning>[^\\s]+?))?(?: extractVersion=(?<extractVersion>[^\\s]+?))?\\s+kubernetesVersion:\\s*["\']?(?<currentValue>.+?)["\']?\\s',
],
versioningTemplate: 'regex:(?<major>\\d+)\\.(?<minor>\\d+)',
extractVersionTemplate: '^(?<version>v\\d+\\.\\d+)\\.\\d+$',
},
],
'pip-compile': {
managerFilePatterns: [
'/(^|/)sidecar-requirements\\.txt$/',
],
},
pip_requirements: {
enabled: false,
},
pip_setup: {
enabled: false,
},
packageRules: [
{
matchDatasources: [
'go',
],
matchPackageNames: [
'!/k8s.io/',
],
matchUpdateTypes: [
'minor',
'patch',
'digest',
],
groupName: 'all non-major go dependencies',
},
{
matchDatasources: [
'git-refs',
],
matchPackageNames: [
'https://github.com/cloudnative-pg/daggerverse',
],
matchUpdateTypes: [
'digest',
],
groupName: 'all cloudnative-pg daggerverse dependencies',
},
{
matchDatasources: [
'git-refs',
],
matchPackageNames: [
'https://github.com/sagikazarmark/daggerverse',
],
matchUpdateTypes: [
'digest',
],
groupName: 'all sagikazarmark daggerverse dependencies',
},
{
matchFileNames: [
'web/package.json',
'web/yarn.lock',
],
groupName: 'documentation dependencies',
},
{
matchUpdateTypes: [
'minor',
'patch',
],
matchCurrentVersion: '!/^0/',
},
],
}