From 3df6cd6201a40d37f99bfdee64513a80956e511b Mon Sep 17 00:00:00 2001
From: Michael Kriese <michael.kriese@visualon.de>
Date: Wed, 10 Jan 2024 21:50:24 +0100
Subject: [PATCH] fix(datasource/docker): map `registry-1.docker.io` to
 `index.docker.io` (#26585)

---
 lib/modules/datasource/docker/common.spec.ts |  8 ++++
 lib/modules/datasource/docker/common.ts      |  7 ++--
 lib/modules/datasource/docker/index.spec.ts  | 41 ++++++++++++++++++++
 3 files changed, 52 insertions(+), 4 deletions(-)

diff --git a/lib/modules/datasource/docker/common.spec.ts b/lib/modules/datasource/docker/common.spec.ts
index 5fbc6da3ea..3c04dd9da9 100644
--- a/lib/modules/datasource/docker/common.spec.ts
+++ b/lib/modules/datasource/docker/common.spec.ts
@@ -102,6 +102,14 @@ describe('modules/datasource/docker/common', () => {
           registryHost: 'https://index.docker.io',
         },
       },
+      {
+        name: 'registry-1.docker.io/bitnamicharts/cert-manager',
+        url: 'https://index.docker.io',
+        res: {
+          dockerRepository: 'bitnamicharts/cert-manager',
+          registryHost: 'https://index.docker.io',
+        },
+      },
     ])('($name, $url)', ({ name, url, res }) => {
       expect(getRegistryRepository(name, url)).toStrictEqual(res);
     });
diff --git a/lib/modules/datasource/docker/common.ts b/lib/modules/datasource/docker/common.ts
index 78845b8ad6..99945705ce 100644
--- a/lib/modules/datasource/docker/common.ts
+++ b/lib/modules/datasource/docker/common.ts
@@ -299,10 +299,9 @@ export function getRegistryRepository(
     dockerRepository = `${trimTrailingSlash(path)}/${dockerRepository}`;
   }
 
-  registryHost = registryHost.replace(
-    'https://docker.io',
-    'https://index.docker.io',
-  );
+  registryHost = registryHost
+    .replace('https://docker.io', 'https://index.docker.io')
+    .replace('https://registry-1.docker.io', 'https://index.docker.io');
 
   const opts = hostRules.find({
     hostType: dockerDatasourceId,
diff --git a/lib/modules/datasource/docker/index.spec.ts b/lib/modules/datasource/docker/index.spec.ts
index 51f8e45548..bbef484cbd 100644
--- a/lib/modules/datasource/docker/index.spec.ts
+++ b/lib/modules/datasource/docker/index.spec.ts
@@ -1787,6 +1787,47 @@ describe('modules/datasource/docker/index', () => {
       });
     });
 
+    it('Uses Docker Hub tags for registry-1.docker.io', async () => {
+      process.env.RENOVATE_X_DOCKER_HUB_TAGS = 'true';
+      httpMock
+        .scope(dockerHubUrl)
+        .get('/library/node/tags?page_size=1000')
+        .reply(200, {
+          next: `${dockerHubUrl}/library/node/tags?page=2&page_size=1000`,
+          results: [
+            {
+              name: '1.0.0',
+              tag_last_pushed: '2021-01-01T00:00:00.000Z',
+              digest: 'aaa',
+            },
+          ],
+        })
+        .get('/library/node/tags?page=2&page_size=1000')
+        .reply(200, {
+          results: [
+            {
+              name: '0.9.0',
+              tag_last_pushed: '2020-01-01T00:00:00.000Z',
+              digest: 'bbb',
+            },
+          ],
+        });
+      const res = await getPkgReleases({
+        datasource: DockerDatasource.id,
+        packageName: 'registry-1.docker.io/library/node',
+      });
+      expect(res?.releases).toMatchObject([
+        {
+          version: '0.9.0',
+          releaseTimestamp: '2020-01-01T00:00:00.000Z',
+        },
+        {
+          version: '1.0.0',
+          releaseTimestamp: '2021-01-01T00:00:00.000Z',
+        },
+      ]);
+    });
+
     it('adds library/ prefix for Docker Hub (implicit)', async () => {
       process.env.RENOVATE_X_DOCKER_HUB_TAGS = 'true';
       const tags = ['1.0.0'];
-- 
GitLab