diff --git a/lib/manager/kubernetes/update.js b/lib/manager/kubernetes/update.js index e6ce219ab198118af6c30325e14df702fa18a755..dc763631a7704298c64f39eae549627c2cb3a704 100644 --- a/lib/manager/kubernetes/update.js +++ b/lib/manager/kubernetes/update.js @@ -10,7 +10,7 @@ function updateDependency(fileContent, upgrade) { logger.debug(`kubernetes.updateDependency(): ${newFrom}`); const lines = fileContent.split('\n'); const lineToChange = lines[upgrade.lineNumber]; - const imageLine = new RegExp(/^(\s*image:\s*'?"?)[^\s'"]+('?"?\s*)$/); + const imageLine = new RegExp(/^(\s*-?\s*image:\s*'?"?)[^\s'"]+('?"?\s*)$/); if (!lineToChange.match(imageLine)) { logger.debug('No image line found'); return null; diff --git a/test/manager/kubernetes/__snapshots__/update.spec.js.snap b/test/manager/kubernetes/__snapshots__/update.spec.js.snap new file mode 100644 index 0000000000000000000000000000000000000000..47e76ca35ebd23c566e4fb9f52ee8224a93ac8a7 --- /dev/null +++ b/test/manager/kubernetes/__snapshots__/update.spec.js.snap @@ -0,0 +1,21 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`manager/kubernetes/update updateDependency replaces image inside YAML array 1`] = ` +"apiVersion: apps/v1 +kind: DaemonSet +metadata: + name: local-volume-provisioner + namespace: kube-system + labels: + app: local-volume-provisioner +spec: + selector: + matchLabels: + app: local-volume-provisioner + template: + spec: + containers: + - image: \\"quay.io/external_storage/local-volume-provisioner:v2.2.0\\" + name: provisioner +" +`; diff --git a/test/manager/kubernetes/update.spec.js b/test/manager/kubernetes/update.spec.js index 36952a90be78a6a82689155c55486652914e68b3..2114d9095da5dc7206a880ae5b76a46d0ed77661 100644 --- a/test/manager/kubernetes/update.spec.js +++ b/test/manager/kubernetes/update.spec.js @@ -6,6 +6,11 @@ const yamlFile = fs.readFileSync( 'utf8' ); +const arraySyntaxFile = fs.readFileSync( + 'test/_fixtures/kubernetes/array-syntax.yaml', + 'utf8' +); + describe('manager/kubernetes/update', () => { describe('updateDependency', () => { it('replaces existing value', () => { @@ -41,5 +46,16 @@ describe('manager/kubernetes/update', () => { const res = dcUpdate.updateDependency(null, null); expect(res).toBe(null); }); + it('replaces image inside YAML array', () => { + const upgrade = { + lineNumber: 14, + dockerRegistry: 'quay.io', + depName: 'external_storage/local-volume-provisioner', + newValue: 'v2.2.0', + }; + const res = dcUpdate.updateDependency(arraySyntaxFile, upgrade); + expect(res).not.toEqual(arraySyntaxFile); + expect(res).toMatchSnapshot(); + }); }); });