Skip to content
Snippets Groups Projects
Unverified Commit 70dc1c42 authored by Rhys Arkins's avatar Rhys Arkins Committed by GitHub
Browse files

feat(docker): preserve registry in depName (#3133)

parent b794c9ec
No related branches found
No related tags found
No related merge requests found
Showing
with 104 additions and 221 deletions
......@@ -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;
if (registry.endsWith('.docker.io') && !repository.includes('/')) {
repository = 'library/' + repository;
}
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}`;
}
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;
......
......@@ -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,
......
......@@ -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);
......
......@@ -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,
......
......@@ -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,
......
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')) &&
......
......@@ -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}`;
}
......
......@@ -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,
......
......@@ -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,
},
],
]
`;
......@@ -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();
......
......@@ -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",
......
......@@ -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",
},
......
......@@ -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",
},
......
......@@ -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);
......
......@@ -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,
......
......@@ -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(
......
......@@ -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);
});
});
});
......@@ -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",
},
......
......@@ -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",
},
]
`;
......@@ -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);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment