Renovate 39.160+ constructs incorrect Pulls API URL in Forgejo subfolder install #34082
Unanswered
FieldofClay
asked this question in
Request Help
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
How are you running Renovate?
Self-hosted Renovate
If you're self-hosting Renovate, tell us which platform (GitHub, GitLab, etc) and which version of Renovate.
Forgejo, renovate 39.160
Please tell us more about your question or problem
My Renovate configuration has been working fine until version 39.160. Since then, a request Renovate makes to look up pull requests on the API fails with an error. This issue started occurring after #34022 was merged. Rolling back to 39.159 resolves the problem.
In the logs, I can see that Renovate correctly identifies the API endpoint for my Forgejo server:
https://domain.name/forgejo/api/v1
However, shortly after, it makes a request with a duplicated subfolder, leading to an incorrect URL:
https://domain.name/forgejo/forgejo/api/v1/repos/FieldOfClay/repo/pulls?page=2&sort=recentupdate&state=all
This results in a failed request.
Logs (if relevant)
Logs
DEBUG: Using RE2 regex engine
DEBUG: Parsing configs
DEBUG: Checking for config file in /opt/renovate/config.json
DEBUG: Converting GITHUB_COM_TOKEN into a global host rule
DEBUG: File config
"config": {
"repositories": [
"FieldOfClay/repo"
],
"kubernetes": {
"fileMatch": [".+deployment\.yaml$", ".+cronjob\.yaml$", ".+db\.yaml$"]
},
"argocd": {"fileMatch": ["apps/.+\.yaml$"]},
"docker-compose": {
"fileMatch": [
"(^|/)(?:docker-)?compose[^/]\.ya?ml$",
"compose\.ya?ml.j2$"
]
},
"helm-values": {"fileMatch": ["(^|/)values\.ya?ml$", "apps/.+\.yaml$"]}
}
DEBUG: CLI config
"config": {}
DEBUG: Env config
"config": {
"hostRules": [
{"hostType": "github", "matchHost": "github.com", "token": ""}
],
"baseDir": "/tmp/renovate/",
"platform": "gitea",
"endpoint": "https://domain.name/forgejo/api/v1",
"token": "",
"autodiscover": false,
"gitAuthor": "Renovate Bot [email protected]"
}
DEBUG: Combined config
"config": {
"repositories": [
"FieldOfClay/repo"
],
"kubernetes": {
"fileMatch": [".+deployment\.yaml$", ".+cronjob\.yaml$", ".+db\.yaml$"]
},
"argocd": {"fileMatch": ["apps/.+\.yaml$"]},
"docker-compose": {
"fileMatch": [
"(^|/)(?:docker-)?compose[^/]\.ya?ml$",
"compose\.ya?ml.j2$"
]
},
"helm-values": {"fileMatch": ["(^|/)values\.ya?ml$", "apps/.+\.yaml$"]},
"hostRules": [
{"hostType": "github", "matchHost": "github.com", "token": ""}
],
"baseDir": "/tmp/renovate/",
"platform": "gitea",
"endpoint": "https://domain.name/forgejo/api/v1",
"token": "",
"autodiscover": false,
"gitAuthor": "Renovate Bot [email protected]"
}
DEBUG: Adding trailing slash to endpoint
DEBUG: Enabling forkProcessing while in non-autodiscover mode
DEBUG: Enabling onboardingNoDeps while in non-autodiscover mode
DEBUG: Found valid git version: 2.48.1
DEBUG: Setting global hostRules
DEBUG: Adding token authentication for github.com (hostType=github) to hostRules
DEBUG: hostRules: authentication already set for domain.name
DEBUG: Using queue: host=domain.name, concurrency=16
DEBUG: Forgejo version: 10.0.0+gitea-1.22.0
DEBUG: Using configured gitAuthor (Renovate Bot [email protected])
DEBUG: Adding token authentication for domain.name (hostType=gitea) to hostRules
DEBUG: Using configured 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: Adding token authentication for github.com (hostType=github) to hostRules
DEBUG: Adding token authentication for domain.name (hostType=gitea) to hostRules
DEBUG: validatePresets()
DEBUG: Reinitializing hostRules for repo
DEBUG: Clearing hostRules
DEBUG: Adding token authentication for github.com (hostType=github) to hostRules
DEBUG: Adding token authentication for domain.name (hostType=gitea) to hostRules
INFO: Repository started (repository=FieldOfClay/repo)
"renovateVersion": "39.160.1"
DEBUG: Using localDir: /tmp/renovate/repos/gitea/FieldOfClay/repo (repository=FieldOfClay/repo)
DEBUG: PackageFiles.clear() - Package files deleted (repository=FieldOfClay/repo)
DEBUG: hostRules: applying Bearer authentication for domain.name (repository=FieldOfClay/repo)
DEBUG: Using queue: host=domain.name, concurrency=16 (repository=FieldOfClay/repo)
DEBUG: FieldOfClay/repo default branch = main (repository=FieldOfClay/repo)
DEBUG: Using HTTP URL: https://domain.name/forgejo/FieldOfClay/repo.git (repository=FieldOfClay/repo)
DEBUG: Resetting npmrc (repository=FieldOfClay/repo)
DEBUG: Resetting npmrc (repository=FieldOfClay/repo)
DEBUG: checkOnboarding() (repository=FieldOfClay/repo)
DEBUG: isOnboarded() (repository=FieldOfClay/repo)
DEBUG: findPr(renovate/configure, Configure Renovate, !open) (repository=FieldOfClay/repo)
DEBUG: GET https://domain.name/forgejo/forgejo/api/v1/repos/FieldOfClay/repo/pulls?page=2&sort=recentupdate&state=all = (code=ERR_NON_2XX_3XX_RESPONSE, statusCode=401 retryCount=0, duration=42) (repository=FieldOfClay/repo)
ERROR: Repository has unknown error (repository=FieldOfClay/repo)
"err": {
"name": "HTTPError",
"code": "ERR_NON_2XX_3XX_RESPONSE",
"timings": {
"start": 1738906720388,
"socket": 1738906720388,
"lookup": 1738906720388,
"connect": 1738906720388,
"secureConnect": 1738906720388,
"upload": 1738906720388,
"response": 1738906720429,
"end": 1738906720430,
"phases": {
"wait": 0,
"dns": 0,
"tcp": 0,
"tls": 0,
"request": 0,
"firstByte": 41,
"download": 1,
"total": 42
}
},
"message": "Response code 401 (Unauthorized)",
"stack": "HTTPError: Response code 401 (Unauthorized)\n at Request. (/usr/local/renovate/node_modules/.pnpm/[email protected]/node_modules/got/dist/source/as-promise/index.js:118:42)\n at processTicksAndRejections (node:internal/process/task_queues:105:5)",
"options": {
"headers": {
"user-agent": "RenovateBot/39.160.1 (https://github.com/renovatebot/renovate)",
"accept": "application/json",
"authorization": "***********",
"accept-encoding": "gzip, deflate, br"
},
"url": "https://domain.name/forgejo/forgejo/api/v1/repos/FieldOfClay/repo/pulls?page=2&sort=recentupdate&state=all",
"hostType": "gitea",
"username": "",
"password": "",
"method": "GET",
"http2": false
},
"response": {
"statusCode": 401,
"statusMessage": "Unauthorized",
"body": "<a href="https://auth.domain.name/?rd=https%3A%2F%2Fdomain.name%2Fforgejo%2Fforgejo%2Fapi%2Fv1%2Frepos%2FFieldOfClay%2Frepo%2Fpulls%3Fpage%3D2%26sort%3Drecentupdate%26state%3Dall&rm=GET\">401 Unauthorized",
"headers": {
"content-length": "200",
"content-type": "text/html; charset=utf-8",
"date": "Fri, 07 Feb 2025 05:38:40 GMT",
"location": "https://auth.domain.name/?rd=https%3A%2F%2Fdomain.name%2Fforgejo%2Fforgejo%2Fapi%2Fv1%2Frepos%2FFieldOfClay%2Frepo%2Fpulls%3Fpage%3D2%26sort%3Drecentupdate%26state%3Dall&rm=GET",
"permissions-policy": "accelerometer=(), autoplay=(), camera=(), display-capture=(), geolocation=(), gyroscope=(), keyboard-map=(), magnetometer=(), microphone=(), midi=(), payment=(), picture-in-picture=(), screen-wake-lock=(), sync-xhr=(), xr-spatial-tracking=(), interest-cohort=()",
"referrer-policy": "strict-origin-when-cross-origin",
"set-cookie": [
"authelia_session=F61aPWJvUrTnxOUS1zqt18LHOxb9RWDQ; expires=Fri, 07 Feb 2025 06:38:40 GMT; domain=domain.name; path=/; HttpOnly; secure; SameSite=Lax"
],
"x-content-type-options": "nosniff",
"x-dns-prefetch-control": "off",
"x-frame-options": "DENY"
},
"httpVersion": "1.1",
"retryCount": 0
}
}
Beta Was this translation helpful? Give feedback.
All reactions