diff --git a/lib/modules/datasource/docker/common.spec.ts b/lib/modules/datasource/docker/common.spec.ts index 5fbc6da3eab038..3c04dd9da9c1c1 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 78845b8ad66c5d..99945705ce7e7c 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 51f8e4554861f1..bbef484cbd3465 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'];