From df1af911d4cf2748e3007d87bf3af72ad1603171 Mon Sep 17 00:00:00 2001
From: Michael Kriese <michael.kriese@visualon.de>
Date: Tue, 4 Feb 2025 09:41:26 +0100
Subject: [PATCH] fix(gitea): allow overriding platform version (#34019)

---
 docs/usage/self-hosted-experimental.md |  2 +-
 lib/modules/platform/gitea/index.ts    | 10 +++++++++-
 2 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/docs/usage/self-hosted-experimental.md b/docs/usage/self-hosted-experimental.md
index a16acf51ba..d7945675aa 100644
--- a/docs/usage/self-hosted-experimental.md
+++ b/docs/usage/self-hosted-experimental.md
@@ -99,7 +99,7 @@ If set to any value, Renovate will download `nupkg` files for determining packag
 
 ## `RENOVATE_X_PLATFORM_VERSION`
 
-Specify this string for Renovate to skip API checks and provide GitLab/Bitbucket server version directly.
+Specify this string for Renovate to skip API checks and provide GitLab/Gitea and Forgejo/Bitbucket server version directly.
 Particularly useful with GitLab's `CI_JOB_TOKEN` to authenticate Renovate or to reduce API calls for Bitbucket.
 
 Read [platform details](modules/platform/gitlab/index.md) to learn why we need the server version on GitLab.
diff --git a/lib/modules/platform/gitea/index.ts b/lib/modules/platform/gitea/index.ts
index 369edaad36..1c8326c541 100644
--- a/lib/modules/platform/gitea/index.ts
+++ b/lib/modules/platform/gitea/index.ts
@@ -212,10 +212,18 @@ const platform: Platform = {
       gitAuthor = `${user.full_name ?? user.username} <${user.email}>`;
       botUserID = user.id;
       botUserName = user.username;
-      defaults.version = await helper.getVersion({ token });
+      // istanbul ignore if: experimental feature
+      if (semver.valid(process.env.RENOVATE_X_PLATFORM_VERSION)) {
+        defaults.version = process.env.RENOVATE_X_PLATFORM_VERSION!;
+      } else {
+        defaults.version = await helper.getVersion({ token });
+      }
       if (defaults.version?.includes('gitea-')) {
         defaults.isForgejo = true;
       }
+      logger.debug(
+        `${defaults.isForgejo ? 'Forgejo' : 'Gitea'} version: ${defaults.version}`,
+      );
     } catch (err) {
       logger.debug(
         { err },
-- 
GitLab