From 4c21322ada67d70d7c85f2df2ac2540b2ef6a524 Mon Sep 17 00:00:00 2001 From: Rhys Arkins <rhys@arkins.net> Date: Thu, 21 Nov 2019 08:18:30 +0100 Subject: [PATCH] fix(docker): detect local registries without FQDN (#4837) Closes #4836 --- lib/datasource/docker/index.ts | 9 ++++++--- test/datasource/__snapshots__/docker.spec.ts.snap | 7 +++++++ test/datasource/docker.spec.ts | 6 ++++++ 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/lib/datasource/docker/index.ts b/lib/datasource/docker/index.ts index 65fe046632..815f7af94d 100644 --- a/lib/datasource/docker/index.ts +++ b/lib/datasource/docker/index.ts @@ -15,10 +15,13 @@ import { PkgReleaseConfig, ReleaseResult } from '../common'; const ecrRegex = /\d+\.dkr\.ecr\.([-a-z0-9]+)\.amazonaws\.com/; -function getRegistryRepository(lookupName: string, registryUrls: string[]) { +export function getRegistryRepository( + lookupName: string, + registryUrls: string[] +) { let registry: string; const split = lookupName.split('/'); - if (split.length > 1 && split[0].includes('.')) { + if (split.length > 1 && (split[0].includes('.') || split[0].includes(':'))) { [registry] = split; split.shift(); } @@ -33,7 +36,7 @@ function getRegistryRepository(lookupName: string, registryUrls: string[]) { registry = `https://${registry}`; } const opts = hostRules.find({ url: registry }); - if (opts.insecureRegistry) { + if (opts && opts.insecureRegistry) { registry = registry.replace('https', 'http'); } if (registry.endsWith('.docker.io') && !repository.includes('/')) { diff --git a/test/datasource/__snapshots__/docker.spec.ts.snap b/test/datasource/__snapshots__/docker.spec.ts.snap index 90e322975c..88b83ee46b 100644 --- a/test/datasource/__snapshots__/docker.spec.ts.snap +++ b/test/datasource/__snapshots__/docker.spec.ts.snap @@ -396,3 +396,10 @@ exports[`api/docker getPkgReleases uses lower tag limit for ECR deps 1`] = ` ], } `; + +exports[`api/docker getRegistryRepository handles local registries 1`] = ` +Object { + "registry": "https://registry:5000", + "repository": "org/package", +} +`; diff --git a/test/datasource/docker.spec.ts b/test/datasource/docker.spec.ts index 1140f1e22a..8d32c136c4 100644 --- a/test/datasource/docker.spec.ts +++ b/test/datasource/docker.spec.ts @@ -12,6 +12,12 @@ jest.mock('../../lib/util/got'); jest.mock('../../lib/util/host-rules'); describe('api/docker', () => { + describe('getRegistryRepository', () => { + it('handles local registries', () => { + const res = docker.getRegistryRepository('registry:5000/org/package', []); + expect(res).toMatchSnapshot(); + }); + }); describe('getDigest', () => { beforeEach(() => { jest.resetAllMocks(); -- GitLab