From 949229594b5cfb69812d842583b1b59e5b5f0e62 Mon Sep 17 00:00:00 2001 From: Rhys Arkins <rhys@arkins.net> Date: Wed, 15 May 2019 11:40:58 +0200 Subject: [PATCH] fix(docker): handle host with port correctly Closes #3698 --- lib/manager/dockerfile/extract.js | 13 ++++++++- .../__snapshots__/extract.spec.js.snap | 28 ++++++++++++++++--- test/manager/dockerfile/extract.spec.js | 10 +++++++ 3 files changed, 46 insertions(+), 5 deletions(-) diff --git a/lib/manager/dockerfile/extract.js b/lib/manager/dockerfile/extract.js index b510ea4df6..8496ae72d7 100644 --- a/lib/manager/dockerfile/extract.js +++ b/lib/manager/dockerfile/extract.js @@ -11,7 +11,18 @@ function splitImageParts(currentFrom) { }; } const [currentDepTag, currentDigest] = currentFrom.split('@'); - const [depName, currentValue] = currentDepTag.split(':'); + const depTagSplit = currentDepTag.split(':'); + let depName; + let currentValue; + if ( + depTagSplit.length === 1 || + depTagSplit[depTagSplit.length - 1].includes('/') + ) { + depName = currentDepTag; + } else { + currentValue = depTagSplit.pop(); + depName = depTagSplit.join(':'); + } const dep = { depName, currentDigest, diff --git a/test/manager/dockerfile/__snapshots__/extract.spec.js.snap b/test/manager/dockerfile/__snapshots__/extract.spec.js.snap index 97741eb7d8..c3d4d0f497 100644 --- a/test/manager/dockerfile/__snapshots__/extract.spec.js.snap +++ b/test/manager/dockerfile/__snapshots__/extract.spec.js.snap @@ -122,12 +122,13 @@ Array [ exports[`lib/manager/dockerfile/extract extractPackageFile() handles abnoral spacing 1`] = ` Array [ Object { + "commitMessageTopic": "Node.js", "currentDepTag": "registry.allmine.info:5005/node:8.7.0", "currentDigest": undefined, "currentFrom": "registry.allmine.info:5005/node:8.7.0", - "currentValue": "5005/node", + "currentValue": "8.7.0", "datasource": "docker", - "depName": "registry.allmine.info", + "depName": "registry.allmine.info:5005/node", "depType": "final", "fromPrefix": "FROM", "fromSuffix": "", @@ -228,12 +229,31 @@ Array [ exports[`lib/manager/dockerfile/extract extractPackageFile() handles custom hosts with port 1`] = ` Array [ Object { + "commitMessageTopic": "Node.js", "currentDepTag": "registry2.something.info:5005/node:8", "currentDigest": undefined, "currentFrom": "registry2.something.info:5005/node:8", - "currentValue": "5005/node", + "currentValue": "8", + "datasource": "docker", + "depName": "registry2.something.info:5005/node", + "depType": "final", + "fromPrefix": "FROM", + "fromSuffix": "", + "lineNumber": 0, + }, +] +`; + +exports[`lib/manager/dockerfile/extract extractPackageFile() handles custom hosts with port without tag 1`] = ` +Array [ + Object { + "commitMessageTopic": "Node.js", + "currentDepTag": "registry2.something.info:5005/node", + "currentDigest": undefined, + "currentFrom": "registry2.something.info:5005/node", + "currentValue": undefined, "datasource": "docker", - "depName": "registry2.something.info", + "depName": "registry2.something.info:5005/node", "depType": "final", "fromPrefix": "FROM", "fromSuffix": "", diff --git a/test/manager/dockerfile/extract.spec.js b/test/manager/dockerfile/extract.spec.js index 77dd61b602..5033414b69 100644 --- a/test/manager/dockerfile/extract.spec.js +++ b/test/manager/dockerfile/extract.spec.js @@ -76,6 +76,16 @@ describe('lib/manager/dockerfile/extract', () => { config ).deps; expect(res).toMatchSnapshot(); + expect(res[0].depName).toEqual('registry2.something.info:5005/node'); + expect(res[0].currentValue).toEqual('8'); + }); + it('handles custom hosts with port without tag', () => { + const res = extractPackageFile( + 'FROM registry2.something.info:5005/node\n', + config + ).deps; + expect(res).toMatchSnapshot(); + expect(res[0].depName).toEqual('registry2.something.info:5005/node'); }); it('handles namespaced images', () => { const res = extractPackageFile('FROM mynamespace/node:8\n', config).deps; -- GitLab