diff --git a/lib/datasource/docker/index.js b/lib/datasource/docker/index.js index 15426cbb4c9600c2e6f1823b89cbd8ed5f9b2e13..5672436dc64a9071dae64e51f6406cf3781c6fe2 100644 --- a/lib/datasource/docker/index.js +++ b/lib/datasource/docker/index.js @@ -11,8 +11,14 @@ module.exports = { getPkgReleases, }; -function massageRegistry(input, registryUrls) { - let registry = input; +function getRegistryRepository(lookupName, registryUrls) { + let registry; + const split = lookupName.split('/'); + if (split.length > 1 && split[0].includes('.')) { + [registry] = split; + split.shift(); + } + let repository = split.join('/'); if (!registry && is.nonEmptyArray(registryUrls)) { [registry] = registryUrls; } @@ -22,16 +28,13 @@ function massageRegistry(input, registryUrls) { if (!registry.match('^https?://')) { registry = `https://${registry}`; } - return registry; -} - -function getRepository(pkgName, registry) { - // The implicit prefix only applies to Docker Hub, not other registries - if (!registry || registry === 'docker.io') { - return pkgName.includes('/') ? pkgName : `library/${pkgName}`; + if (registry.endsWith('.docker.io') && !repository.includes('/')) { + repository = 'library/' + repository; } - - return pkgName; + return { + registry, + repository, + }; } async function getAuthHeaders(registry, repository) { @@ -187,10 +190,9 @@ async function getManifestResponse(registry, repository, tag) { */ async function getDigest(config, newValue) { - const { dockerRegistry, depName } = config; - logger.debug(`getDigest(${dockerRegistry}, ${depName}, ${newValue})`); - const registry = massageRegistry(dockerRegistry, config.registryUrls); - const repository = getRepository(depName, dockerRegistry); + const { registryUrls, depName } = config; + const { registry, repository } = getRegistryRepository(depName, registryUrls); + logger.debug(`getDigest(${registry}, ${repository}, ${newValue})`); const newTag = newValue || 'latest'; try { const cacheNamespace = 'datasource-docker-digest'; @@ -320,9 +322,10 @@ async function getTags(registry, repository) { */ async function getPkgReleases(purl, config = {}) { - const { lookupName, qualifiers } = purl; - const registry = massageRegistry(qualifiers.registry, config.registryUrls); - const repository = getRepository(lookupName, qualifiers.registry); + const { registry, repository } = getRegistryRepository( + purl.lookupName, + config.registryUrls + ); const tags = await getTags(registry, repository); if (!tags) { return null; diff --git a/lib/manager/ansible/extract.js b/lib/manager/ansible/extract.js index 3790bea0181a5bf63ee3a94373e774d1f418e459..a99778ff138e0ab7c2397ddde159e9578777f028 100644 --- a/lib/manager/ansible/extract.js +++ b/lib/manager/ansible/extract.js @@ -13,9 +13,8 @@ function extractPackageFile(content) { if (match) { const currentFrom = match[1]; const dep = getDep(currentFrom); - logger.info( + logger.debug( { - dockerRegistry: dep.dockerRegistry, depName: dep.depName, currentValue: dep.currentValue, currentDigest: dep.currentDigest, diff --git a/lib/manager/bundler/artifacts.js b/lib/manager/bundler/artifacts.js index 6b786f00fb5c1cb822e55284c36528b45828b774..86b3eee06e60419f38a7c3a3a95e2d2df744e38a 100644 --- a/lib/manager/bundler/artifacts.js +++ b/lib/manager/bundler/artifacts.js @@ -82,7 +82,6 @@ async function getArtifacts( logger.debug('Found ruby compatibility'); const rubyReleases = await getPkgReleases({ lookupName: 'renovate/ruby', - qualifiers: {}, }); if (rubyReleases && rubyReleases.releases) { let versions = rubyReleases.releases.map(release => release.version); diff --git a/lib/manager/circleci/extract.js b/lib/manager/circleci/extract.js index 8edb8295b15465047f57b399efceb714fc4d02b1..50620f78deead174ec0bab028e8fb980187622af 100644 --- a/lib/manager/circleci/extract.js +++ b/lib/manager/circleci/extract.js @@ -45,7 +45,6 @@ function extractPackageFile(content) { const dep = getDep(currentFrom); logger.debug( { - dockerRegistry: dep.dockerRegistry, depName: dep.depName, currentValue: dep.currentValue, currentDigest: dep.currentDigest, diff --git a/lib/manager/docker-compose/extract.js b/lib/manager/docker-compose/extract.js index e235d46c8aa89265dee80cf0645ae6cca6abbd19..3d0913667bc52f94f565b934e2fc669c482f7882 100644 --- a/lib/manager/docker-compose/extract.js +++ b/lib/manager/docker-compose/extract.js @@ -13,9 +13,8 @@ function extractPackageFile(content) { if (match) { const currentFrom = match[1]; const dep = getDep(currentFrom); - logger.info( + logger.debug( { - dockerRegistry: dep.dockerRegistry, depName: dep.depName, currentValue: dep.currentValue, currentDigest: dep.currentDigest, diff --git a/lib/manager/dockerfile/extract.js b/lib/manager/dockerfile/extract.js index fc61e2fec71ecc0ca8135e1d7d55a52715c5d0ed..79934fc344bc2d27ff614e033bd611bd548e4f87 100644 --- a/lib/manager/dockerfile/extract.js +++ b/lib/manager/dockerfile/extract.js @@ -1,41 +1,25 @@ module.exports = { splitImageParts, - getPurl, getDep, extractPackageFile, }; function splitImageParts(currentFrom) { - let dockerRegistry; if (currentFrom.includes('${')) { return { skipReason: 'contains-variable', }; } - const split = currentFrom.split('/'); - if (split.length > 1 && split[0].includes('.')) { - [dockerRegistry] = split; - split.shift(); - } - const currentDepTagDigest = split.join('/'); - const [currentDepTag, currentDigest] = currentDepTagDigest.split('@'); + const [currentDepTag, currentDigest] = currentFrom.split('@'); const [depName, currentValue] = currentDepTag.split(':'); - return { - dockerRegistry, + const dep = { depName, currentDigest, - currentDepTagDigest, + currentFrom, currentDepTag, currentValue, }; -} - -function getPurl(dockerRegistry, depName) { - let purl = `pkg:docker/${depName}`; - if (dockerRegistry) { - purl += `?registry=${dockerRegistry}`; - } - return purl; + return dep; } function getDep(currentFrom) { @@ -43,8 +27,7 @@ function getDep(currentFrom) { ...splitImageParts(currentFrom), currentFrom, }; - const purl = getPurl(dep.dockerRegistry, dep.depName); - dep.purl = purl; + dep.purl = `pkg:docker/${dep.depName}`; if ( dep.depName && (dep.depName === 'node' || dep.depName.endsWith('/node')) && diff --git a/lib/manager/dockerfile/update.js b/lib/manager/dockerfile/update.js index 378155567947768ff0ee9a55f49c8cd0cd449fa4..23b8b19b13d1ad562a0bbb7b7c47d932491f6441 100644 --- a/lib/manager/dockerfile/update.js +++ b/lib/manager/dockerfile/update.js @@ -4,9 +4,8 @@ module.exports = { }; function getNewFrom(upgrade) { - const { dockerRegistry, depName, newValue, newDigest } = upgrade; - let newFrom = dockerRegistry ? `${dockerRegistry}/` : ''; - newFrom += `${depName}`; + const { depName, newValue, newDigest } = upgrade; + let newFrom = depName; if (newValue) { newFrom += `:${newValue}`; } diff --git a/lib/manager/kubernetes/extract.js b/lib/manager/kubernetes/extract.js index db8be07ceecd2ae5909980d2a63c444c645e7023..0bcf24aebabbe6db86d96265aa79db121536ac82 100644 --- a/lib/manager/kubernetes/extract.js +++ b/lib/manager/kubernetes/extract.js @@ -20,9 +20,8 @@ function extractPackageFile(content) { if (match) { const currentFrom = match[1]; const dep = getDep(currentFrom); - logger.info( + logger.debug( { - dockerRegistry: dep.dockerRegistry, depName: dep.depName, currentValue: dep.currentValue, currentDigest: dep.currentDigest, diff --git a/test/datasource/__snapshots__/docker.spec.js.snap b/test/datasource/__snapshots__/docker.spec.js.snap index f0cf96944117ab182207d93279962407bf73b5d9..f4fec2c48a3271073329ee3afa0cfba240c1c80b 100644 --- a/test/datasource/__snapshots__/docker.spec.js.snap +++ b/test/datasource/__snapshots__/docker.spec.js.snap @@ -189,7 +189,7 @@ exports[`api/docker getPkgReleases adds no library/ prefix for other registries } `; -exports[`api/docker getPkgReleases uses custom registry 1`] = ` +exports[`api/docker getPkgReleases uses custom registry in depName 1`] = ` [MockFunction] { "calls": Array [ Array [ @@ -199,7 +199,7 @@ exports[`api/docker getPkgReleases uses custom registry 1`] = ` }, ], Array [ - "https://registry.company.com/v2/library/node/tags/list?n=10000", + "https://registry.company.com/v2/node/tags/list?n=10000", Object { "headers": Object {}, "json": true, @@ -228,3 +228,22 @@ exports[`api/docker getPkgReleases uses custom registry 1`] = ` ], } `; + +exports[`api/docker getPkgReleases uses custom registry with registryUrls 1`] = ` +Array [ + Array [ + "https://registry.company.com/v2/", + Object { + "throwHttpErrors": false, + }, + ], + Array [ + "https://registry.company.com/v2/node/tags/list?n=10000", + Object { + "headers": Object {}, + "json": true, + "timeout": 10000, + }, + ], +] +`; diff --git a/test/datasource/docker.spec.js b/test/datasource/docker.spec.js index 5e3ae5de43ffefeb459112436196160f2b1de7c7..4304a5da6739f6abe863c0ff23192558609ff510 100644 --- a/test/datasource/docker.spec.js +++ b/test/datasource/docker.spec.js @@ -153,7 +153,7 @@ describe('api/docker', () => { const res = await getPkgReleases({ purl: 'pkg:docker/node' }); expect(res).toBe(null); }); - it('uses custom registry', async () => { + it('uses custom registry with registryUrls', async () => { const tags = ['1.0.0']; got.mockReturnValueOnce({ headers: {}, @@ -164,6 +164,21 @@ describe('api/docker', () => { }; const res = await getPkgReleases({ ...config, purl: 'pkg:docker/node' }); expect(res.releases).toHaveLength(1); + expect(got.mock.calls).toMatchSnapshot(); + expect(got.mock.calls[0][0].startsWith(config.registryUrls[0])).toBe( + true + ); + }); + it('uses custom registry in depName', async () => { + const tags = ['1.0.0']; + got.mockReturnValueOnce({ + headers: {}, + }); + got.mockReturnValueOnce({ headers: {}, body: { tags } }); + const res = await getPkgReleases({ + purl: 'pkg:docker/registry.company.com/node', + }); + expect(res.releases).toHaveLength(1); expect(got).toMatchSnapshot(); }); it('adds library/ prefix for Docker Hub (implicit)', async () => { @@ -191,7 +206,7 @@ describe('api/docker', () => { got.mockReturnValueOnce({ headers: {}, body: { token: 'some-token ' } }); got.mockReturnValueOnce({ headers: {}, body: { tags } }); const res = await getPkgReleases({ - purl: 'pkg:docker/node?registry=docker.io', + purl: 'pkg:docker/docker.io/node', }); expect(res.releases).toHaveLength(1); expect(got).toMatchSnapshot(); @@ -207,7 +222,7 @@ describe('api/docker', () => { got.mockReturnValueOnce({ headers: {}, body: { token: 'some-token ' } }); got.mockReturnValueOnce({ headers: {}, body: { tags } }); const res = await getPkgReleases({ - purl: 'pkg:docker/kubernetes-dashboard-amd64?registry=k8s.gcr.io', + purl: 'pkg:docker/k8s.gcr.io/kubernetes-dashboard-amd64', }); expect(res.releases).toHaveLength(1); expect(got).toMatchSnapshot(); diff --git a/test/manager/ansible/__snapshots__/extract.spec.js.snap b/test/manager/ansible/__snapshots__/extract.spec.js.snap index 93cee343450bf934aa0f0df5b689d3bdc1118680..d3bc173b3703f7a6e879a209739ffe22a8162c98 100644 --- a/test/manager/ansible/__snapshots__/extract.spec.js.snap +++ b/test/manager/ansible/__snapshots__/extract.spec.js.snap @@ -4,108 +4,90 @@ exports[`lib/manager/ansible/extract extractPackageFile() extracts multiple imag Array [ Object { "currentDepTag": "busybox", - "currentDepTagDigest": "busybox", "currentDigest": undefined, "currentFrom": "busybox", "currentValue": undefined, "depName": "busybox", - "dockerRegistry": undefined, "lineNumber": 4, "purl": "pkg:docker/busybox", "versionScheme": "docker", }, Object { "currentDepTag": "redis", - "currentDepTagDigest": "redis", "currentDigest": undefined, "currentFrom": "redis", "currentValue": undefined, "depName": "redis", - "dockerRegistry": undefined, "lineNumber": 11, "purl": "pkg:docker/redis", "versionScheme": "docker", }, Object { "currentDepTag": "someuser/appimage", - "currentDepTagDigest": "someuser/appimage", "currentDigest": undefined, "currentFrom": "someuser/appimage", "currentValue": undefined, "depName": "someuser/appimage", - "dockerRegistry": undefined, "lineNumber": 23, "purl": "pkg:docker/someuser/appimage", "versionScheme": "docker", }, Object { "currentDepTag": "ubuntu:14.04", - "currentDepTagDigest": "ubuntu:14.04", "currentDigest": undefined, "currentFrom": "ubuntu:14.04", "currentValue": "14.04", "depName": "ubuntu", - "dockerRegistry": undefined, "lineNumber": 40, "purl": "pkg:docker/ubuntu", "versionScheme": "docker", }, Object { "currentDepTag": "someuser/anotherappimage", - "currentDepTagDigest": "someuser/anotherappimage", "currentDigest": undefined, "currentFrom": "someuser/anotherappimage", "currentValue": undefined, "depName": "someuser/anotherappimage", - "dockerRegistry": undefined, "lineNumber": 52, "purl": "pkg:docker/someuser/anotherappimage", "versionScheme": "docker", }, Object { "currentDepTag": "busybox", - "currentDepTagDigest": "busybox", "currentDigest": undefined, "currentFrom": "busybox", "currentValue": undefined, "depName": "busybox", - "dockerRegistry": undefined, "lineNumber": 64, "purl": "pkg:docker/busybox", "versionScheme": "docker", }, Object { "currentDepTag": "postgres:latest", - "currentDepTagDigest": "postgres:latest", "currentDigest": undefined, "currentFrom": "postgres:latest", "currentValue": "latest", "depName": "postgres", - "dockerRegistry": undefined, "lineNumber": 76, "purl": "pkg:docker/postgres", "versionScheme": "docker", }, Object { "currentDepTag": "ubuntu:14.04", - "currentDepTagDigest": "ubuntu:14.04", "currentDigest": undefined, "currentFrom": "ubuntu:14.04", "currentValue": "14.04", "depName": "ubuntu", - "dockerRegistry": undefined, "lineNumber": 83, "purl": "pkg:docker/ubuntu", "versionScheme": "docker", }, Object { "currentDepTag": "ubuntu:14.04", - "currentDepTagDigest": "ubuntu:14.04", "currentDigest": undefined, "currentFrom": "ubuntu:14.04", "currentValue": "14.04", "depName": "ubuntu", - "dockerRegistry": undefined, "lineNumber": 96, "purl": "pkg:docker/ubuntu", "versionScheme": "docker", @@ -117,48 +99,40 @@ exports[`lib/manager/ansible/extract extractPackageFile() extracts multiple imag Array [ Object { "currentDepTag": "sameersbn/gitlab:11.5.1", - "currentDepTagDigest": "sameersbn/gitlab:11.5.1", "currentDigest": undefined, "currentFrom": "sameersbn/gitlab:11.5.1", "currentValue": "11.5.1", "depName": "sameersbn/gitlab", - "dockerRegistry": undefined, "lineNumber": 8, "purl": "pkg:docker/sameersbn/gitlab", "versionScheme": "docker", }, Object { "currentDepTag": "sameersbn/postgresql:10", - "currentDepTagDigest": "sameersbn/postgresql:10", "currentDigest": undefined, "currentFrom": "sameersbn/postgresql:10", "currentValue": "10", "depName": "sameersbn/postgresql", - "dockerRegistry": undefined, "lineNumber": 30, "purl": "pkg:docker/sameersbn/postgresql", "versionScheme": "docker", }, Object { "currentDepTag": "sameersbn/redis:4.0.9-1", - "currentDepTagDigest": "sameersbn/redis:4.0.9-1", "currentDigest": undefined, "currentFrom": "sameersbn/redis:4.0.9-1", "currentValue": "4.0.9-1", "depName": "sameersbn/redis", - "dockerRegistry": undefined, "lineNumber": 38, "purl": "pkg:docker/sameersbn/redis", "versionScheme": "docker", }, Object { "currentDepTag": "registry:2.6.2", - "currentDepTagDigest": "registry:2.6.2", "currentDigest": undefined, "currentFrom": "registry:2.6.2", "currentValue": "2.6.2", "depName": "registry", - "dockerRegistry": undefined, "lineNumber": 43, "purl": "pkg:docker/registry", "versionScheme": "docker", diff --git a/test/manager/circleci/__snapshots__/extract.spec.js.snap b/test/manager/circleci/__snapshots__/extract.spec.js.snap index fb2c713e3dfe3d6161151a5d06e2aebd38e96a5e..0d497009738f1241a12a09f9bb8bb73c8547ec3f 100644 --- a/test/manager/circleci/__snapshots__/extract.spec.js.snap +++ b/test/manager/circleci/__snapshots__/extract.spec.js.snap @@ -5,52 +5,44 @@ Array [ Object { "commitMessageTopic": "Node.js", "currentDepTag": "node", - "currentDepTagDigest": "node", "currentDigest": undefined, "currentFrom": "node", "currentValue": undefined, "depName": "node", "depType": "docker", - "dockerRegistry": undefined, "lineNumber": 12, "purl": "pkg:docker/node", }, Object { "commitMessageTopic": "Node.js", "currentDepTag": "node:4", - "currentDepTagDigest": "node:4", "currentDigest": undefined, "currentFrom": "node:4", "currentValue": "4", "depName": "node", "depType": "docker", - "dockerRegistry": undefined, "lineNumber": 57, "purl": "pkg:docker/node", }, Object { "commitMessageTopic": "Node.js", "currentDepTag": "node:6", - "currentDepTagDigest": "node:6", "currentDigest": undefined, "currentFrom": "node:6", "currentValue": "6", "depName": "node", "depType": "docker", - "dockerRegistry": undefined, "lineNumber": 61, "purl": "pkg:docker/node", }, Object { "commitMessageTopic": "Node.js", "currentDepTag": "node:8.9.0", - "currentDepTagDigest": "node:8.9.0", "currentDigest": undefined, "currentFrom": "node:8.9.0", "currentValue": "8.9.0", "depName": "node", "depType": "docker", - "dockerRegistry": undefined, "lineNumber": 65, "purl": "pkg:docker/node", }, @@ -91,73 +83,61 @@ Array [ }, Object { "currentDepTag": "python:3.7", - "currentDepTagDigest": "python:3.7@sha256:3870d35b962a943df72d948580fc66ceaaee1c4fbd205930f32e0f0760eb1077", "currentDigest": "sha256:3870d35b962a943df72d948580fc66ceaaee1c4fbd205930f32e0f0760eb1077", "currentFrom": "python:3.7@sha256:3870d35b962a943df72d948580fc66ceaaee1c4fbd205930f32e0f0760eb1077", "currentValue": "3.7", "depName": "python", "depType": "docker", - "dockerRegistry": undefined, "lineNumber": 20, "purl": "pkg:docker/python", }, Object { "currentDepTag": "python:3.7", - "currentDepTagDigest": "python:3.7@sha256:3870d35b962a943df72d948580fc66ceaaee1c4fbd205930f32e0f0760eb1077", "currentDigest": "sha256:3870d35b962a943df72d948580fc66ceaaee1c4fbd205930f32e0f0760eb1077", "currentFrom": "python:3.7@sha256:3870d35b962a943df72d948580fc66ceaaee1c4fbd205930f32e0f0760eb1077", "currentValue": "3.7", "depName": "python", "depType": "docker", - "dockerRegistry": undefined, "lineNumber": 27, "purl": "pkg:docker/python", }, Object { "currentDepTag": "python:3.7", - "currentDepTagDigest": "python:3.7@sha256:3870d35b962a943df72d948580fc66ceaaee1c4fbd205930f32e0f0760eb1077", "currentDigest": "sha256:3870d35b962a943df72d948580fc66ceaaee1c4fbd205930f32e0f0760eb1077", "currentFrom": "python:3.7@sha256:3870d35b962a943df72d948580fc66ceaaee1c4fbd205930f32e0f0760eb1077", "currentValue": "3.7", "depName": "python", "depType": "docker", - "dockerRegistry": undefined, "lineNumber": 34, "purl": "pkg:docker/python", }, Object { "currentDepTag": "python:3.7", - "currentDepTagDigest": "python:3.7@sha256:3870d35b962a943df72d948580fc66ceaaee1c4fbd205930f32e0f0760eb1077", "currentDigest": "sha256:3870d35b962a943df72d948580fc66ceaaee1c4fbd205930f32e0f0760eb1077", "currentFrom": "python:3.7@sha256:3870d35b962a943df72d948580fc66ceaaee1c4fbd205930f32e0f0760eb1077", "currentValue": "3.7", "depName": "python", "depType": "docker", - "dockerRegistry": undefined, "lineNumber": 41, "purl": "pkg:docker/python", }, Object { "currentDepTag": "pypy:3-6", - "currentDepTagDigest": "pypy:3-6@sha256:eb6325b75c1c70b4992eaa1bdd29e24e5f14d5324b4714a49f3e67783473214b", "currentDigest": "sha256:eb6325b75c1c70b4992eaa1bdd29e24e5f14d5324b4714a49f3e67783473214b", "currentFrom": "pypy:3-6@sha256:eb6325b75c1c70b4992eaa1bdd29e24e5f14d5324b4714a49f3e67783473214b", "currentValue": "3-6", "depName": "pypy", "depType": "docker", - "dockerRegistry": undefined, "lineNumber": 50, "purl": "pkg:docker/pypy", }, Object { "currentDepTag": "python:3.7", - "currentDepTagDigest": "python:3.7@sha256:3870d35b962a943df72d948580fc66ceaaee1c4fbd205930f32e0f0760eb1077", "currentDigest": "sha256:3870d35b962a943df72d948580fc66ceaaee1c4fbd205930f32e0f0760eb1077", "currentFrom": "python:3.7@sha256:3870d35b962a943df72d948580fc66ceaaee1c4fbd205930f32e0f0760eb1077", "currentValue": "3.7", "depName": "python", "depType": "docker", - "dockerRegistry": undefined, "lineNumber": 57, "purl": "pkg:docker/python", }, diff --git a/test/manager/docker-compose/__snapshots__/extract.spec.js.snap b/test/manager/docker-compose/__snapshots__/extract.spec.js.snap index 5b5ebf67d1de03167141941365f81bd84ff9f6dd..156383802ab5563748eac4c22f3561d00f2beac7 100644 --- a/test/manager/docker-compose/__snapshots__/extract.spec.js.snap +++ b/test/manager/docker-compose/__snapshots__/extract.spec.js.snap @@ -3,80 +3,66 @@ exports[`lib/manager/docker-compose/extract extractPackageFile() extracts multiple image lines 1`] = ` Array [ Object { - "currentDepTag": "something/redis:alpine", - "currentDepTagDigest": "something/redis:alpine", + "currentDepTag": "quay.io/something/redis:alpine", "currentDigest": undefined, "currentFrom": "quay.io/something/redis:alpine", "currentValue": "alpine", - "depName": "something/redis", - "dockerRegistry": "quay.io", + "depName": "quay.io/something/redis", "lineNumber": 4, - "purl": "pkg:docker/something/redis?registry=quay.io", + "purl": "pkg:docker/quay.io/something/redis", }, Object { "commitMessageTopic": "Node.js", "currentDepTag": "node:10.0.0", - "currentDepTagDigest": "node:10.0.0", "currentDigest": undefined, "currentFrom": "node:10.0.0", "currentValue": "10.0.0", "depName": "node", - "dockerRegistry": undefined, "lineNumber": 18, "purl": "pkg:docker/node", }, Object { "currentDepTag": "postgres:9.4.0", - "currentDepTagDigest": "postgres:9.4.0", "currentDigest": undefined, "currentFrom": "postgres:9.4.0", "currentValue": "9.4.0", "depName": "postgres", - "dockerRegistry": undefined, "lineNumber": 21, "purl": "pkg:docker/postgres", }, Object { "currentDepTag": "dockersamples/examplevotingapp_vote:before", - "currentDepTagDigest": "dockersamples/examplevotingapp_vote:before", "currentDigest": undefined, "currentFrom": "dockersamples/examplevotingapp_vote:before", "currentValue": "before", "depName": "dockersamples/examplevotingapp_vote", - "dockerRegistry": undefined, "lineNumber": 31, "purl": "pkg:docker/dockersamples/examplevotingapp_vote", }, Object { "currentDepTag": "dockersamples/examplevotingapp_result:before", - "currentDepTagDigest": "dockersamples/examplevotingapp_result:before", "currentDigest": undefined, "currentFrom": "dockersamples/examplevotingapp_result:before", "currentValue": "before", "depName": "dockersamples/examplevotingapp_result", - "dockerRegistry": undefined, "lineNumber": 46, "purl": "pkg:docker/dockersamples/examplevotingapp_result", }, Object { "currentDepTag": "dockersamples/examplevotingapp_worker", - "currentDepTagDigest": "dockersamples/examplevotingapp_worker", "currentDigest": undefined, "currentFrom": "dockersamples/examplevotingapp_worker", "currentValue": undefined, "depName": "dockersamples/examplevotingapp_worker", - "dockerRegistry": undefined, "lineNumber": 62, "purl": "pkg:docker/dockersamples/examplevotingapp_worker", }, Object { "currentDepTag": "dockersamples/visualizer:stable", - "currentDepTagDigest": "dockersamples/visualizer:stable", "currentDigest": undefined, "currentFrom": "dockersamples/visualizer:stable", "currentValue": "stable", "depName": "dockersamples/visualizer", - "dockerRegistry": undefined, "lineNumber": 79, "purl": "pkg:docker/dockersamples/visualizer", }, diff --git a/test/manager/docker-compose/update.spec.js b/test/manager/docker-compose/update.spec.js index 722abdcf4fef2f6c3f50373396b8fb9ee23e8873..3dd320f1129f03c8422528401d63f59ce013920c 100644 --- a/test/manager/docker-compose/update.spec.js +++ b/test/manager/docker-compose/update.spec.js @@ -22,8 +22,7 @@ describe('manager/docker-compose/update', () => { it('returns same', () => { const upgrade = { lineNumber: 4, - dockerRegistry: 'quay.io', - depName: 'something/redis', + depName: 'quay.io/something/redis', newValue: 'alpine', }; const res = dcUpdate.updateDependency(yamlFile, upgrade); diff --git a/test/manager/dockerfile/__snapshots__/extract.spec.js.snap b/test/manager/dockerfile/__snapshots__/extract.spec.js.snap index ae694e3aab35723db6bb5f24144afea5568a9386..02ff907d545a51199c7e3052ade417f0cf3d3d43 100644 --- a/test/manager/dockerfile/__snapshots__/extract.spec.js.snap +++ b/test/manager/dockerfile/__snapshots__/extract.spec.js.snap @@ -5,12 +5,10 @@ Array [ Object { "commitMessageTopic": "Node.js", "currentDepTag": "node:8.11.3-alpine", - "currentDepTagDigest": "node:8.11.3-alpine@sha256:d743b4141b02fcfb8beb68f92b4cd164f60ee457bf2d053f36785bf86de16b0d", "currentDigest": "sha256:d743b4141b02fcfb8beb68f92b4cd164f60ee457bf2d053f36785bf86de16b0d", "currentFrom": "node:8.11.3-alpine@sha256:d743b4141b02fcfb8beb68f92b4cd164f60ee457bf2d053f36785bf86de16b0d", "currentValue": "8.11.3-alpine", "depName": "node", - "dockerRegistry": undefined, "fromPrefix": "FROM", "fromSuffix": "AS node", "lineNumber": 2, @@ -18,12 +16,10 @@ Array [ }, Object { "currentDepTag": "buildkite/puppeteer:1.1.1", - "currentDepTagDigest": "buildkite/puppeteer:1.1.1", "currentDigest": undefined, "currentFrom": "buildkite/puppeteer:1.1.1", "currentValue": "1.1.1", "depName": "buildkite/puppeteer", - "dockerRegistry": undefined, "fromPrefix": "FROM", "fromSuffix": "AS puppeteer", "lineNumber": 3, @@ -37,12 +33,10 @@ Array [ Object { "commitMessageTopic": "Node.js", "currentDepTag": "node:6.12.3", - "currentDepTagDigest": "node:6.12.3", "currentDigest": undefined, "currentFrom": "node:6.12.3", "currentValue": "6.12.3", "depName": "node", - "dockerRegistry": undefined, "fromPrefix": "FROM", "fromSuffix": "as frontend", "lineNumber": 0, @@ -50,12 +44,10 @@ Array [ }, Object { "currentDepTag": "python:3.6-slim", - "currentDepTagDigest": "python:3.6-slim", "currentDigest": undefined, "currentFrom": "python:3.6-slim", "currentValue": "3.6-slim", "depName": "python", - "dockerRegistry": undefined, "fromPrefix": "FROM", "fromSuffix": "", "lineNumber": 4, @@ -67,17 +59,15 @@ Array [ exports[`lib/manager/dockerfile/extract extractPackageFile() handles COPY --from 1`] = ` Array [ Object { - "currentDepTag": "k8s-skaffold/skaffold:v0.11.0", - "currentDepTagDigest": "k8s-skaffold/skaffold:v0.11.0", + "currentDepTag": "gcr.io/k8s-skaffold/skaffold:v0.11.0", "currentDigest": undefined, "currentFrom": "gcr.io/k8s-skaffold/skaffold:v0.11.0", "currentValue": "v0.11.0", - "depName": "k8s-skaffold/skaffold", - "dockerRegistry": "gcr.io", + "depName": "gcr.io/k8s-skaffold/skaffold", "fromPrefix": "COPY --from=", "fromSuffix": "/usr/bin/skaffold /usr/bin/skaffold", "lineNumber": 1, - "purl": "pkg:docker/k8s-skaffold/skaffold?registry=gcr.io", + "purl": "pkg:docker/gcr.io/k8s-skaffold/skaffold", }, ] `; @@ -85,18 +75,15 @@ Array [ exports[`lib/manager/dockerfile/extract extractPackageFile() handles abnoral spacing 1`] = ` Array [ Object { - "commitMessageTopic": "Node.js", - "currentDepTag": "node:8.7.0", - "currentDepTagDigest": "node:8.7.0", + "currentDepTag": "registry.allmine.info:5005/node:8.7.0", "currentDigest": undefined, "currentFrom": "registry.allmine.info:5005/node:8.7.0", - "currentValue": "8.7.0", - "depName": "node", - "dockerRegistry": "registry.allmine.info:5005", + "currentValue": "5005/node", + "depName": "registry.allmine.info", "fromPrefix": "FROM", "fromSuffix": "", "lineNumber": 0, - "purl": "pkg:docker/node?registry=registry.allmine.info:5005", + "purl": "pkg:docker/registry.allmine.info", }, ] `; @@ -105,12 +92,10 @@ exports[`lib/manager/dockerfile/extract extractPackageFile() handles calico/node Array [ Object { "currentDepTag": "calico/node", - "currentDepTagDigest": "calico/node", "currentDigest": undefined, "currentFrom": "calico/node", "currentValue": undefined, "depName": "calico/node", - "dockerRegistry": undefined, "fromPrefix": "FROM", "fromSuffix": "", "lineNumber": 0, @@ -124,12 +109,10 @@ Array [ Object { "commitMessageTopic": "Node.js", "currentDepTag": "node", - "currentDepTagDigest": "node", "currentDigest": undefined, "currentFrom": "node", "currentValue": undefined, "depName": "node", - "dockerRegistry": undefined, "fromPrefix": "FROM", "fromSuffix": "", "lineNumber": 3, @@ -142,17 +125,15 @@ exports[`lib/manager/dockerfile/extract extractPackageFile() handles custom host Array [ Object { "commitMessageTopic": "Node.js", - "currentDepTag": "node:8", - "currentDepTagDigest": "node:8", + "currentDepTag": "registry2.something.info/node:8", "currentDigest": undefined, "currentFrom": "registry2.something.info/node:8", "currentValue": "8", - "depName": "node", - "dockerRegistry": "registry2.something.info", + "depName": "registry2.something.info/node", "fromPrefix": "FROM", "fromSuffix": "", "lineNumber": 0, - "purl": "pkg:docker/node?registry=registry2.something.info", + "purl": "pkg:docker/registry2.something.info/node", }, ] `; @@ -161,17 +142,15 @@ exports[`lib/manager/dockerfile/extract extractPackageFile() handles custom host Array [ Object { "commitMessageTopic": "Node.js", - "currentDepTag": "node:8-alpine", - "currentDepTagDigest": "node:8-alpine", + "currentDepTag": "registry2.something.info/node:8-alpine", "currentDigest": undefined, "currentFrom": "registry2.something.info/node:8-alpine", "currentValue": "8-alpine", - "depName": "node", - "dockerRegistry": "registry2.something.info", + "depName": "registry2.something.info/node", "fromPrefix": "FROM", "fromSuffix": "", "lineNumber": 0, - "purl": "pkg:docker/node?registry=registry2.something.info", + "purl": "pkg:docker/registry2.something.info/node", }, ] `; @@ -180,17 +159,15 @@ exports[`lib/manager/dockerfile/extract extractPackageFile() handles custom host Array [ Object { "commitMessageTopic": "Node.js", - "currentDepTag": "someaccount/node:8", - "currentDepTagDigest": "someaccount/node:8", + "currentDepTag": "registry2.something.info/someaccount/node:8", "currentDigest": undefined, "currentFrom": "registry2.something.info/someaccount/node:8", "currentValue": "8", - "depName": "someaccount/node", - "dockerRegistry": "registry2.something.info", + "depName": "registry2.something.info/someaccount/node", "fromPrefix": "FROM", "fromSuffix": "", "lineNumber": 0, - "purl": "pkg:docker/someaccount/node?registry=registry2.something.info", + "purl": "pkg:docker/registry2.something.info/someaccount/node", }, ] `; @@ -198,18 +175,15 @@ Array [ exports[`lib/manager/dockerfile/extract extractPackageFile() handles custom hosts with port 1`] = ` Array [ Object { - "commitMessageTopic": "Node.js", - "currentDepTag": "node:8", - "currentDepTagDigest": "node:8", + "currentDepTag": "registry2.something.info:5005/node:8", "currentDigest": undefined, "currentFrom": "registry2.something.info:5005/node:8", - "currentValue": "8", - "depName": "node", - "dockerRegistry": "registry2.something.info:5005", + "currentValue": "5005/node", + "depName": "registry2.something.info", "fromPrefix": "FROM", "fromSuffix": "", "lineNumber": 0, - "purl": "pkg:docker/node?registry=registry2.something.info:5005", + "purl": "pkg:docker/registry2.something.info", }, ] `; @@ -219,12 +193,10 @@ Array [ Object { "commitMessageTopic": "Node.js", "currentDepTag": "node", - "currentDepTagDigest": "node@sha256:eb85fc5b1198f5e1ec025ea07586bdbbf397e7d82df66c90d7511f533517e063", "currentDigest": "sha256:eb85fc5b1198f5e1ec025ea07586bdbbf397e7d82df66c90d7511f533517e063", "currentFrom": "node@sha256:eb85fc5b1198f5e1ec025ea07586bdbbf397e7d82df66c90d7511f533517e063", "currentValue": undefined, "depName": "node", - "dockerRegistry": undefined, "fromPrefix": "FROM", "fromSuffix": "", "lineNumber": 0, @@ -238,12 +210,10 @@ Array [ Object { "commitMessageTopic": "Node.js", "currentDepTag": "node:8.9.0-alpine", - "currentDepTagDigest": "node:8.9.0-alpine", "currentDigest": undefined, "currentFrom": "node:8.9.0-alpine", "currentValue": "8.9.0-alpine", "depName": "node", - "dockerRegistry": undefined, "fromPrefix": "FROM", "fromSuffix": "as base", "lineNumber": 0, @@ -257,12 +227,10 @@ Array [ Object { "commitMessageTopic": "Node.js", "currentDepTag": "node", - "currentDepTagDigest": "node", "currentDigest": undefined, "currentFrom": "node", "currentValue": undefined, "depName": "node", - "dockerRegistry": undefined, "fromPrefix": "FROM", "fromSuffix": "", "lineNumber": 0, @@ -276,12 +244,10 @@ Array [ Object { "commitMessageTopic": "Node.js", "currentDepTag": "mynamespace/node:8", - "currentDepTagDigest": "mynamespace/node:8", "currentDigest": undefined, "currentFrom": "mynamespace/node:8", "currentValue": "8", "depName": "mynamespace/node", - "dockerRegistry": undefined, "fromPrefix": "FROM", "fromSuffix": "", "lineNumber": 0, @@ -295,12 +261,10 @@ Array [ Object { "commitMessageTopic": "Node.js", "currentDepTag": "node:8.9.0-alpine", - "currentDepTagDigest": "node:8.9.0-alpine", "currentDigest": undefined, "currentFrom": "node:8.9.0-alpine", "currentValue": "8.9.0-alpine", "depName": "node", - "dockerRegistry": undefined, "fromPrefix": "FROM", "fromSuffix": "", "lineNumber": 0, @@ -314,12 +278,10 @@ Array [ Object { "commitMessageTopic": "Node.js", "currentDepTag": "node:8.9.0", - "currentDepTagDigest": "node:8.9.0@sha256:eb85fc5b1198f5e1ec025ea07586bdbbf397e7d82df66c90d7511f533517e063", "currentDigest": "sha256:eb85fc5b1198f5e1ec025ea07586bdbbf397e7d82df66c90d7511f533517e063", "currentFrom": "node:8.9.0@sha256:eb85fc5b1198f5e1ec025ea07586bdbbf397e7d82df66c90d7511f533517e063", "currentValue": "8.9.0", "depName": "node", - "dockerRegistry": undefined, "fromPrefix": "FROM", "fromSuffix": "", "lineNumber": 0, @@ -333,12 +295,10 @@ Array [ Object { "commitMessageTopic": "Node.js", "currentDepTag": "node", - "currentDepTagDigest": "node", "currentDigest": undefined, "currentFrom": "node", "currentValue": undefined, "depName": "node", - "dockerRegistry": undefined, "fromPrefix": "From", "fromSuffix": "", "lineNumber": 0, @@ -352,12 +312,10 @@ Array [ Object { "commitMessageTopic": "Node.js", "currentDepTag": "node:6.12.3", - "currentDepTagDigest": "node:6.12.3", "currentDigest": undefined, "currentFrom": "node:6.12.3", "currentValue": "6.12.3", "depName": "node", - "dockerRegistry": undefined, "fromPrefix": "FROM", "fromSuffix": "as frontend", "lineNumber": 0, @@ -371,12 +329,10 @@ Array [ Object { "commitMessageTopic": "Node.js", "currentDepTag": "node:6.12.3", - "currentDepTagDigest": "node:6.12.3", "currentDigest": undefined, "currentFrom": "node:6.12.3", "currentValue": "6.12.3", "depName": "node", - "dockerRegistry": undefined, "fromPrefix": "FROM", "fromSuffix": "as frontend", "lineNumber": 0, @@ -390,12 +346,10 @@ Array [ Object { "commitMessageTopic": "Node.js", "currentDepTag": "node:6.12.3", - "currentDepTagDigest": "node:6.12.3", "currentDigest": undefined, "currentFrom": "node:6.12.3", "currentValue": "6.12.3", "depName": "node", - "dockerRegistry": undefined, "fromPrefix": "FROM", "fromSuffix": "as frontend", "lineNumber": 0, diff --git a/test/manager/dockerfile/extract.spec.js b/test/manager/dockerfile/extract.spec.js index 5d385ca3302d2cec37dd80122cdd05e1439e5d8e..f204b8a7c2d2607671451b1f5918f35cb3d59c26 100644 --- a/test/manager/dockerfile/extract.spec.js +++ b/test/manager/dockerfile/extract.spec.js @@ -59,7 +59,6 @@ describe('lib/manager/dockerfile/extract', () => { config ).deps; expect(res).toMatchSnapshot(); - expect(res[0].dockerRegistry).toEqual('registry2.something.info'); }); it('handles custom hosts and suffix', () => { const res = extractPackageFile( @@ -67,7 +66,6 @@ describe('lib/manager/dockerfile/extract', () => { config ).deps; expect(res).toMatchSnapshot(); - expect(res[0].dockerRegistry).toEqual('registry2.something.info'); }); it('handles custom hosts with port', () => { const res = extractPackageFile( @@ -75,12 +73,10 @@ describe('lib/manager/dockerfile/extract', () => { config ).deps; expect(res).toMatchSnapshot(); - expect(res[0].dockerRegistry).toEqual('registry2.something.info:5005'); }); it('handles namespaced images', () => { const res = extractPackageFile('FROM mynamespace/node:8\n', config).deps; expect(res).toMatchSnapshot(); - expect(res[0].dockerRegistry).toBeUndefined(); }); it('handles custom hosts with namespace', () => { const res = extractPackageFile( @@ -88,8 +84,6 @@ describe('lib/manager/dockerfile/extract', () => { config ).deps; expect(res).toMatchSnapshot(); - expect(res[0].dockerRegistry).toEqual('registry2.something.info'); - expect(res[0].depName).toEqual('someaccount/node'); }); it('handles abnoral spacing', () => { const res = extractPackageFile( diff --git a/test/manager/dockerfile/update.spec.js b/test/manager/dockerfile/update.spec.js index afc8fb3424b15e8d3cb3d63a23b32ae231b51789..b528f744c8e5471cfdc10050d8b4540025c4b2ea 100644 --- a/test/manager/dockerfile/update.spec.js +++ b/test/manager/dockerfile/update.spec.js @@ -112,14 +112,14 @@ describe('manager/dockerfile/update', () => { 'FROM scratch\nCOPY --from=gcr.io/k8s-skaffold/skaffold:v0.11.0 /usr/bin/skaffold /usr/bin/skaffold\n'; const upgrade = { lineNumber: 1, - depName: 'k8s-skaffold/skaffold', + depName: 'gcr.io/k8s-skaffold/skaffold', newValue: 'v0.12.0', fromPrefix: 'COPY --from=', fromSuffix: '/usr/bin/skaffold /usr/bin/skaffold', - dockerRegistry: 'gcr.io', }; const res = dockerfile.updateDependency(fileContent, upgrade); expect(res).toMatchSnapshot(); + expect(res.includes(upgrade.newValue)).toBe(true); }); }); }); diff --git a/test/manager/gitlabci/__snapshots__/extract.spec.js.snap b/test/manager/gitlabci/__snapshots__/extract.spec.js.snap index 77865867f0b3cd56a8306cf742478620a56bc202..84f9219e47cbe0f3515a963f8108e3a87c8da1e7 100644 --- a/test/manager/gitlabci/__snapshots__/extract.spec.js.snap +++ b/test/manager/gitlabci/__snapshots__/extract.spec.js.snap @@ -4,61 +4,51 @@ exports[`lib/manager/gitlabci/extract extractPackageFile() extracts multiple ima Array [ Object { "currentDepTag": "hadolint/hadolint:latest", - "currentDepTagDigest": "hadolint/hadolint:latest", "currentDigest": undefined, "currentFrom": "hadolint/hadolint:latest", "currentValue": "latest", "depName": "hadolint/hadolint", "depType": "image", - "dockerRegistry": undefined, "lineNumber": 36, "purl": "pkg:docker/hadolint/hadolint", }, Object { "currentDepTag": "docker:latest", - "currentDepTagDigest": "docker:latest", "currentDigest": undefined, "currentFrom": "docker:latest", "currentValue": "latest", "depName": "docker", "depType": "image", - "dockerRegistry": undefined, "lineNumber": 53, "purl": "pkg:docker/docker", }, Object { "currentDepTag": "docker:dind", - "currentDepTagDigest": "docker:dind", "currentDigest": undefined, "currentFrom": "docker:dind", "currentValue": "dind", "depName": "docker", "depType": "service-image", - "dockerRegistry": undefined, "lineNumber": 55, "purl": "pkg:docker/docker", }, Object { "currentDepTag": "docker:latest", - "currentDepTagDigest": "docker:latest", "currentDigest": undefined, "currentFrom": "docker:latest", "currentValue": "latest", "depName": "docker", "depType": "image", - "dockerRegistry": undefined, "lineNumber": 75, "purl": "pkg:docker/docker", }, Object { "currentDepTag": "docker:dind", - "currentDepTagDigest": "docker:dind", "currentDigest": undefined, "currentFrom": "docker:dind", "currentValue": "dind", "depName": "docker", "depType": "service-image", - "dockerRegistry": undefined, "lineNumber": 77, "purl": "pkg:docker/docker", }, diff --git a/test/manager/kubernetes/__snapshots__/extract.spec.js.snap b/test/manager/kubernetes/__snapshots__/extract.spec.js.snap index 6e59065112b98e41070787dce8590dc8f6bd9384..2812bc45c590fc1a68d004bd4e65a8962fdcf35e 100644 --- a/test/manager/kubernetes/__snapshots__/extract.spec.js.snap +++ b/test/manager/kubernetes/__snapshots__/extract.spec.js.snap @@ -3,15 +3,13 @@ exports[`lib/manager/kubernetes/extract extractPackageFile() extracts image line in a YAML array 1`] = ` Array [ Object { - "currentDepTag": "external_storage/local-volume-provisioner:v2.1.0", - "currentDepTagDigest": "external_storage/local-volume-provisioner:v2.1.0", + "currentDepTag": "quay.io/external_storage/local-volume-provisioner:v2.1.0", "currentDigest": undefined, "currentFrom": "quay.io/external_storage/local-volume-provisioner:v2.1.0", "currentValue": "v2.1.0", - "depName": "external_storage/local-volume-provisioner", - "dockerRegistry": "quay.io", + "depName": "quay.io/external_storage/local-volume-provisioner", "lineNumber": 14, - "purl": "pkg:docker/external_storage/local-volume-provisioner?registry=quay.io", + "purl": "pkg:docker/quay.io/external_storage/local-volume-provisioner", }, ] `; @@ -20,25 +18,21 @@ exports[`lib/manager/kubernetes/extract extractPackageFile() extracts multiple i Array [ Object { "currentDepTag": "nginx:1.7.9", - "currentDepTagDigest": "nginx:1.7.9", "currentDigest": undefined, "currentFrom": "nginx:1.7.9", "currentValue": "1.7.9", "depName": "nginx", - "dockerRegistry": undefined, "lineNumber": 18, "purl": "pkg:docker/nginx", }, Object { - "currentDepTag": "kube-proxy-amd64:v1.11.1", - "currentDepTagDigest": "kube-proxy-amd64:v1.11.1", + "currentDepTag": "k8s.gcr.io/kube-proxy-amd64:v1.11.1", "currentDigest": undefined, "currentFrom": "k8s.gcr.io/kube-proxy-amd64:v1.11.1", "currentValue": "v1.11.1", - "depName": "kube-proxy-amd64", - "dockerRegistry": "k8s.gcr.io", + "depName": "k8s.gcr.io/kube-proxy-amd64", "lineNumber": 46, - "purl": "pkg:docker/kube-proxy-amd64?registry=k8s.gcr.io", + "purl": "pkg:docker/k8s.gcr.io/kube-proxy-amd64", }, ] `; diff --git a/test/manager/kubernetes/update.spec.js b/test/manager/kubernetes/update.spec.js index 2114d9095da5dc7206a880ae5b76a46d0ed77661..8926ce254350098400d656796508493a6b7cdeb4 100644 --- a/test/manager/kubernetes/update.spec.js +++ b/test/manager/kubernetes/update.spec.js @@ -27,8 +27,7 @@ describe('manager/kubernetes/update', () => { it('returns same', () => { const upgrade = { lineNumber: 46, - dockerRegistry: 'k8s.gcr.io', - depName: 'kube-proxy-amd64', + depName: 'k8s.gcr.io/kube-proxy-amd64', newValue: 'v1.11.1', }; const res = dcUpdate.updateDependency(yamlFile, upgrade); @@ -49,8 +48,7 @@ describe('manager/kubernetes/update', () => { it('replaces image inside YAML array', () => { const upgrade = { lineNumber: 14, - dockerRegistry: 'quay.io', - depName: 'external_storage/local-volume-provisioner', + depName: 'quay.io/external_storage/local-volume-provisioner', newValue: 'v2.2.0', }; const res = dcUpdate.updateDependency(arraySyntaxFile, upgrade);