diff --git a/lib/manager/dockerfile/extract.js b/lib/manager/dockerfile/extract.js index b510ea4df65c755c679303ee5d823cfd77624aee..8496ae72d71e8b9bbba5c7442495d8baee217b8b 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 97741eb7d8fe12970749b727cf483ea31af99016..c3d4d0f497f1e60c83ff6fcba6dcd8a3d905945c 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 77dd61b602a13e123013674de17af2fe8eec9ee9..5033414b69c27aa03f4edc4700c5dcfbefcf9bd1 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;