Fail to download GitHub preset
In my Renovate configuration, I have some extends from GitHub like:
{
extends: [
'github>camptocamp/gs-renovate-config-preset:base.json5#0.9.0',
'github>camptocamp/gs-renovate-config-preset:group.json5#0.9.0',
'github>camptocamp/gs-renovate-config-preset:ci.json5#0.9.0',
'github>camptocamp/gs-renovate-config-preset:preset.json5#0.9.0',
'github>camptocamp/gs-renovate-config-preset:pre-commit.json5#0.9.0',
'github>camptocamp/gs-renovate-config-preset:docker.json5#0.9.0',
'github>camptocamp/gs-renovate-config-preset:own.json5#0.9.0',
'github>camptocamp/gs-renovate-config-preset:json-schema.json5#0.9.0',
'github>camptocamp/gs-renovate-config-preset:shellcheck.json5#0.9.0',
],
}
I Run renovate-graph --platform=local With the environment variable:
-
RG_LOCAL_PLATFORM:github -
RG_LOCAL_ORGANISATION:mapfish -
RG_LOCAL_REPO:mapfish-print -
RG_GITHUB_APP_ID:397457 -
RG_GITHUB_APP_KEY:-----BEGIN RSA PRIVATE KEY---...<secret> -
RENOVATE_USERNAME:geo-ghci-int[bot] -
RENOVATE_GIT_AUTHOR:"geo-ghci-int[bot] <146321879+geo-ghci-int[bot]@users.noreply.github.com> -
RG_GITHUB_APP_INSTALLATION_ID:146321879
Then I sometimes get the error GitHub failure: rate limit.
Is my application correctly taken in account to get the preset?
Full log:
INFO: Processing renovate-graph data as GitHub App "Geo GHCI int"
DEBUG: Parsing configs
DEBUG: No config file found on disk - skipping
DEBUG: File config
"config": {}
DEBUG: CLI config
"config": {"platform": "local"}
DEBUG: Env config
"config": {
"hostRules": [],
"token": "***********",
"username": "geo-ghci-int[bot]",
"gitAuthor": "geo-ghci-int[bot] <146321879+geo-ghci-int[bot]@users.noreply.github.com>"
}
DEBUG: Combined config
"config": {
"hostRules": [],
"token": "***********",
"username": "geo-ghci-int[bot]",
"gitAuthor": "geo-ghci-int[bot] <146321879+geo-ghci-int[bot]@users.noreply.github.com>",
"platform": "local"
}
DEBUG: Enabling forkProcessing while in non-autodiscover mode
DEBUG: Enabling onboardingNoDeps while in non-autodiscover mode
DEBUG: Found valid git version: 2.43.0
DEBUG: Setting global hostRules
DEBUG: Using configured gitAuthor (geo-ghci-int[bot] <146321879+geo-ghci-int[bot]@users.noreply.github.com>)
DEBUG: Using baseDir: /tmp/renovate
DEBUG: Using cacheDir: /tmp/renovate/cache
DEBUG: Using containerbaseDir: /tmp/renovate/cache/containerbase
DEBUG: Initializing Renovate internal cache into /tmp/renovate/cache/renovate/renovate-cache-v1
DEBUG: Commits limit = null
DEBUG: Setting global hostRules
DEBUG: validatePresets()
DEBUG: validatePresets()
DEBUG: PackageFiles.clear() - Package files deleted
DEBUG: Resetting npmrc
DEBUG: Resetting npmrc
DEBUG: checkOnboarding()
DEBUG: isOnboarded()
DEBUG: Repo is onboarded
DEBUG: Got file list using git
DEBUG: Found .github/renovate.json5 config file
DEBUG: Repository config
"fileName": ".github/renovate.json5",
"config": {
"extends": [
"github>camptocamp/gs-renovate-config-preset:base.json5#0.9.0",
"github>camptocamp/gs-renovate-config-preset:group.json5#0.9.0",
"github>camptocamp/gs-renovate-config-preset:stabilization-branches.json5#0.9.0",
"github>camptocamp/gs-renovate-config-preset:preset.json5#0.9.0",
"github>camptocamp/gs-renovate-config-preset:ci.json5#0.9.0",
"github>camptocamp/gs-renovate-config-preset:pre-commit.json5#0.9.0",
"github>camptocamp/gs-renovate-config-preset:docker.json5#0.9.0",
"github>camptocamp/gs-renovate-config-preset:own.json5#0.9.0",
"github>camptocamp/gs-renovate-config-preset:json-schema.json5#0.9.0",
"github>camptocamp/gs-renovate-config-preset:shellcheck.json5#0.9.0"
],
"baseBranches": ["3.28", "3.29", "3.30", "3.31", "master"],
"customManagers": [
{
"fileMatch": ["^build.gradle$", ".*/build.gradle$"],
"matchStrings": [
"toolVersion = \"(?<currentValue>.*)\" // (?<depName>.*)"
],
"datasourceTemplate": "maven",
"customType": "regex"
}
],
"packageRules": [
{
"matchDatasources": ["docker"],
"versioning": "regex:^(?<major>\\d+)\\.(?<minor>\\d+)(\\.(?<patch>\\d+))?(-(?<compatibility>.*))$",
"matchDepNames": ["gradle", "tomcat"]
},
{
"matchUpdateTypes": ["major"],
"groupName": "gradle",
"automerge": true,
"matchDepNames": ["gradle"]
},
{
"matchDatasources": ["docker"],
"matchUpdateTypes": ["major", "minor"],
"groupName": "geoserver",
"automerge": true,
"matchDepNames": ["camptocamp/geoserver"]
},
{
"matchUpdateTypes": ["major"],
"groupName": "spring",
"automerge": true,
"matchPackageNames": [
"/^org\\.springframework:.*/",
"/^org\\.springframework\\.security:.*/"
]
},
{
"matchUpdateTypes": ["major"],
"groupName": "jasperreports",
"automerge": true,
"matchPackageNames": ["/^net\\.sf\\.jasperreports:.*/"]
},
{
"matchUpdateTypes": ["major"],
"groupName": "slf4j",
"automerge": true,
"matchPackageNames": ["/^org\\.slf4j:.*/"]
},
{
"matchUpdateTypes": ["major"],
"groupName": "metrics",
"automerge": true,
"matchPackageNames": ["/^io\\.dropwizard\\.metrics:.*/"]
},
{
"matchUpdateTypes": ["major"],
"groupName": "geotools",
"automerge": true,
"matchPackageNames": ["/^org\\.geotools\\..*/", "/^org\\.geotools:.*/"]
},
{
"matchUpdateTypes": ["major"],
"groupName": "logback",
"automerge": true,
"matchPackageNames": ["/^ch\\.qos\\.logback:.*/"]
},
{
"matchUpdateTypes": ["major"],
"groupName": "batik",
"automerge": true,
"matchPackageNames": ["/^org\\.apache\\.xmlgraphics:batik\\-.*/"]
},
{
"matchUpdateTypes": ["major", "minor"],
"dependencyDashboardApproval": true,
"matchDepNames": ["spotbugs", "gradle"]
},
{
"matchUpdateTypes": ["major", "minor"],
"dependencyDashboardApproval": true,
"matchPackageNames": ["/^com\\.github\\.spotbugs:spotbugs\\-.*/"]
},
{
"groupName": "spotbugs",
"matchPackageNames": [
"/^com\\.github\\.spotbugs:spotbugs\\-.*/",
"/^spotbugs.*/"
]
},
{
"matchBaseBranches": ["/^[0-9]+\\.[0-9]+$/"],
"matchUpdateTypes": [
"major",
"minor",
"pin",
"digest",
"lockFileMaintenance",
"rollback",
"bump"
],
"enabled": false
},
{
"matchBaseBranches": ["/^[0-9]+\\.[0-9]+$/"],
"minimumReleaseAge": "7 days"
},
{
"matchBaseBranches": ["/^3.2[2-9]$/", "/^3.30$/"],
"matchPackageNames": ["com.puppycrawl.tools:checkstyle", "checkstyle"],
"enabled": false
},
{
"automerge": true,
"groupName": "geotools",
"separateMultipleMinor": true,
"matchPackageNames": ["/^org\\.geotools\\..*/", "/^org\\.geotools:.*/"]
},
{"matchFileNames": [".github/workflows/rebuild.yaml"], "enabled": false}
]
}
DEBUG: migrateAndValidate()
DEBUG: No config migration necessary
DEBUG: hostRules: no authentication for api.github.com
DEBUG: Using queue: host=api.github.com, concurrency=16
DEBUG: GET https://api.github.com/repos/camptocamp/gs-renovate-config-preset/contents/base.json5?ref=0.9.0 = (code=ERR_NON_2XX_3XX_RESPONSE, statusCode=403 retryCount=0, duration=42)
DEBUG: GitHub failure: rate limit
"err": {
"name": "HTTPError",
"code": "ERR_NON_2XX_3XX_RESPONSE",
"timings": {
"start": 1742414881692,
"socket": 1742414881696,
"lookup": 1742414881704,
"connect": 1742414881712,
"secureConnect": 1742414881723,
"upload": 1742414881723,
"response": 1742414881731,
"end": 1742414881734,
"phases": {
"wait": 4,
"dns": 8,
"tcp": 8,
"tls": 11,
"request": 0,
"firstByte": 8,
"download": 3,
"total": 42
}
},
"message": "Response code 403 (rate limit exceeded)",
"stack": "HTTPError: Response code 403 (rate limit exceeded)\n at Request.<anonymous> (/app/node_modules/got/dist/source/as-promise/index.js:118:42)\n at process.processTicksAndRejections (node:internal/process/task_queues:105:5)",
"options": {
"headers": {
"user-agent": "RenovateBot/39.191.4 (https://github.com/renovatebot/renovate)",
"accept": "application/json, application/vnd.github.v3+json",
"accept-encoding": "gzip, deflate, br"
},
"url": "https://api.github.com/repos/camptocamp/gs-renovate-config-preset/contents/base.json5?ref=0.9.0",
"hostType": "github",
"username": "",
"password": "",
"method": "GET",
"http2": false
},
"response": {
"statusCode": 403,
"statusMessage": "rate limit exceeded",
"body": {
"message": "API rate limit exceeded for 20.203.218.140. (But here's the good news: Authenticated requests get a higher rate limit. Check out the documentation for more details.)",
"documentation_url": "https://docs.github.com/rest/overview/resources-in-the-rest-api#rate-limiting"
},
"headers": {
"date": "Wed, 19 Mar 2025 20:08:01 GMT",
"server": "Varnish",
"strict-transport-security": "max-age=31536000; includeSubdomains; preload",
"x-content-type-options": "nosniff",
"x-frame-options": "deny",
"x-xss-protection": "1; mode=block",
"content-security-policy": "default-src 'none'; style-src 'unsafe-inline'",
"access-control-allow-origin": "*",
"access-control-expose-headers": "ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-RateLimit-Used, X-RateLimit-Resource, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, Deprecation, Sunset",
"content-type": "application/json; charset=utf-8",
"referrer-policy": "origin-when-cross-origin, strict-origin-when-cross-origin",
"x-github-media-type": "github.v3; format=json",
"x-ratelimit-limit": "60",
"x-ratelimit-remaining": "0",
"x-ratelimit-reset": "1742415966",
"x-ratelimit-resource": "core",
"x-ratelimit-used": "60",
"content-length": "280",
"x-github-request-id": "70F9:311DF1:6DCC6:71C4B:67DB2421"
},
"httpVersion": "1.1",
"retryCount": 0
}
}
DEBUG: Preset file base.json5 not found in camptocamp/gs-renovate-config-preset
DEBUG: Preset fetch error
"preset": "github>camptocamp/gs-renovate-config-preset:base.json5#0.9.0",
"err": {
"message": "dep not found",
"stack": "Error: dep not found\n at fetchJSONFile (/app/node_modules/renovate/dist/config/presets/github/index.js:32:15)\n at process.processTicksAndRejections (node:internal/process/task_queues:105:5)\n at async fetchPreset (/app/node_modules/renovate/dist/config/presets/util.js:43:23)\n at async getPreset (/app/node_modules/renovate/dist/config/presets/index.js:87:24)\n at async fetchPreset (/app/node_modules/renovate/dist/config/presets/index.js:181:16)\n at async Object.resolveConfigPresets (/app/node_modules/renovate/dist/config/presets/index.js:140:39)\n at async mergeRenovateConfig (/app/node_modules/renovate/dist/workers/repository/init/merge.js:213:61)\n at async getRepoConfig (/app/node_modules/renovate/dist/workers/repository/init/config.js:13:14)\n at async initRepo (/app/node_modules/renovate/dist/workers/repository/init/index.js:48:14)\n at async renovateRepo (/app/node_modules/@jamietanna/renovate-graph/dist/vendored-renovate-workers.js:94:14)\n at async retrievePackageDataForRepo (/app/node_modules/@jamietanna/renovate-graph/dist/index.js:80:24)\n at async discoverAndProcessThroughGitHubAppWithCallback (/app/node_modules/@jamietanna/renovate-graph/dist/index.js:234:41)\n at async discoverAndProcessThroughGitHubApp (/app/node_modules/@jamietanna/renovate-graph/dist/index.js:200:12)\n at async /app/node_modules/@jamietanna/renovate-graph/dist/executable.js:56:9"
}
INFO: Throwing preset error
"validationError": "Cannot find preset's package (github>camptocamp/gs-renovate-config-preset:base.json5#0.9.0)"
ERROR: Failed to read repository information for "mapfish/mapfish-print": Error: config-validation
"error": {
"name": "Error",
"message": "config-validation",
"stack": "Error: config-validation\n at fetchPreset (/app/node_modules/renovate/dist/config/presets/index.js:191:23)\n at process.processTicksAndRejections (node:internal/process/task_queues:105:5)\n at async Object.resolveConfigPresets (/app/node_modules/renovate/dist/config/presets/index.js:140:39)\n at async mergeRenovateConfig (/app/node_modules/renovate/dist/workers/repository/init/merge.js:213:61)\n at async getRepoConfig (/app/node_modules/renovate/dist/workers/repository/init/config.js:13:14)\n at async initRepo (/app/node_modules/renovate/dist/workers/repository/init/index.js:48:14)\n at async renovateRepo (/app/node_modules/@jamietanna/renovate-graph/dist/vendored-renovate-workers.js:94:14)\n at async retrievePackageDataForRepo (/app/node_modules/@jamietanna/renovate-graph/dist/index.js:80:24)\n at async discoverAndProcessThroughGitHubAppWithCallback (/app/node_modules/@jamietanna/renovate-graph/dist/index.js:234:41)\n at async discoverAndProcessThroughGitHubApp (/app/node_modules/@jamietanna/renovate-graph/dist/index.js:200:12)\n at async /app/node_modules/@jamietanna/renovate-graph/dist/executable.js:56:9"
}
DEBUG: defaultWritePackageDataCallback called for local/mapfish/mapfish-print
"key": {"platform": "local", "organisation": "mapfish", "repo": "mapfish-print"}
ERROR: defaultWritePackageDataCallback was called for local/mapfish/mapfish-print, but there was an error: Error: config-validation
"key": {"platform": "local", "organisation": "mapfish", "repo": "mapfish-print"},
"error": {
"validationError": "Cannot find preset's package (github>camptocamp/gs-renovate-config-preset:base.json5#0.9.0)",
"message": "config-validation",
"stack": "Error: config-validation\n at fetchPreset (/app/node_modules/renovate/dist/config/presets/index.js:191:23)\n at process.processTicksAndRejections (node:internal/process/task_queues:105:5)\n at async Object.resolveConfigPresets (/app/node_modules/renovate/dist/config/presets/index.js:140:39)\n at async mergeRenovateConfig (/app/node_modules/renovate/dist/workers/repository/init/merge.js:213:61)\n at async getRepoConfig (/app/node_modules/renovate/dist/workers/repository/init/config.js:13:14)\n at async initRepo (/app/node_modules/renovate/dist/workers/repository/init/index.js:48:14)\n at async renovateRepo (/app/node_modules/@jamietanna/renovate-graph/dist/vendored-renovate-workers.js:94:14)\n at async retrievePackageDataForRepo (/app/node_modules/@jamietanna/renovate-graph/dist/index.js:80:24)\n at async discoverAndProcessThroughGitHubAppWithCallback (/app/node_modules/@jamietanna/renovate-graph/dist/index.js:234:41)\n at async discoverAndProcessThroughGitHubApp (/app/node_modules/@jamietanna/renovate-graph/dist/index.js:200:12)\n at async /app/node_modules/@jamietanna/renovate-graph/dist/executable.js:56:9"
}
ERROR: config-validation
"error": {
"validationError": "Cannot find preset's package (github>camptocamp/gs-renovate-config-preset:base.json5#0.9.0)",
"message": "config-validation",
"stack": "Error: config-validation\n at fetchPreset (/app/node_modules/renovate/dist/config/presets/index.js:191:23)\n at process.processTicksAndRejections (node:internal/process/task_queues:105:5)\n at async Object.resolveConfigPresets (/app/node_modules/renovate/dist/config/presets/index.js:140:39)\n at async mergeRenovateConfig (/app/node_modules/renovate/dist/workers/repository/init/merge.js:213:61)\n at async getRepoConfig (/app/node_modules/renovate/dist/workers/repository/init/config.js:13:14)\n at async initRepo (/app/node_modules/renovate/dist/workers/repository/init/index.js:48:14)\n at async renovateRepo (/app/node_modules/@jamietanna/renovate-graph/dist/vendored-renovate-workers.js:94:14)\n at async retrievePackageDataForRepo (/app/node_modules/@jamietanna/renovate-graph/dist/index.js:80:24)\n at async discoverAndProcessThroughGitHubAppWithCallback (/app/node_modules/@jamietanna/renovate-graph/dist/index.js:234:41)\n at async discoverAndProcessThroughGitHubApp (/app/node_modules/@jamietanna/renovate-graph/dist/index.js:200:12)\n at async /app/node_modules/@jamietanna/renovate-graph/dist/executable.js:56:9"
}