From 515cec28cbf3a05a35920a98d02314bc71f5047a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maximilian=20Ga=C3=9F?= <mxey@mxey.net> Date: Mon, 27 Aug 2018 13:16:51 +0200 Subject: [PATCH] fix(kubernetes): support image line in a YAML array (#2434) Renovate did not recognize images where "image" was the first key in the YAML mapping inside the YAMl container list/array --- lib/manager/kubernetes/extract.js | 2 +- test/_fixtures/kubernetes/array-syntax.yaml | 16 ++++++++++++++++ .../__snapshots__/extract.spec.js.snap | 19 +++++++++++++++++++ test/manager/kubernetes/extract.spec.js | 10 ++++++++++ 4 files changed, 46 insertions(+), 1 deletion(-) create mode 100644 test/_fixtures/kubernetes/array-syntax.yaml diff --git a/lib/manager/kubernetes/extract.js b/lib/manager/kubernetes/extract.js index ec22aa478e..a1dc5d09d1 100644 --- a/lib/manager/kubernetes/extract.js +++ b/lib/manager/kubernetes/extract.js @@ -16,7 +16,7 @@ function extractDependencies(content) { } for (const line of content.split('\n')) { - const match = line.match(/^\s*image:\s*'?"?([^\s'"]+)'?"?\s*$/); + const match = line.match(/^\s*-?\s*image:\s*'?"?([^\s'"]+)'?"?\s*$/); if (match) { const currentFrom = match[1]; const dep = getDep(currentFrom); diff --git a/test/_fixtures/kubernetes/array-syntax.yaml b/test/_fixtures/kubernetes/array-syntax.yaml new file mode 100644 index 0000000000..6118eed28e --- /dev/null +++ b/test/_fixtures/kubernetes/array-syntax.yaml @@ -0,0 +1,16 @@ +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.1.0" + name: provisioner diff --git a/test/manager/kubernetes/__snapshots__/extract.spec.js.snap b/test/manager/kubernetes/__snapshots__/extract.spec.js.snap index c19e2109f6..0e7de06d55 100644 --- a/test/manager/kubernetes/__snapshots__/extract.spec.js.snap +++ b/test/manager/kubernetes/__snapshots__/extract.spec.js.snap @@ -1,5 +1,24 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP +exports[`lib/manager/kubernetes/extract extractDependencies() 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", + "currentDigest": undefined, + "currentFrom": "quay.io/external_storage/local-volume-provisioner:v2.1.0", + "currentTag": "v2.1.0", + "currentValue": "v2.1.0", + "depName": "external_storage/local-volume-provisioner", + "dockerRegistry": "quay.io", + "lineNumber": 14, + "purl": "pkg:docker/external_storage/local-volume-provisioner?registry=quay.io", + "tagSuffix": undefined, + "versionScheme": "docker", + }, +] +`; + exports[`lib/manager/kubernetes/extract extractDependencies() extracts multiple image lines 1`] = ` Array [ Object { diff --git a/test/manager/kubernetes/extract.spec.js b/test/manager/kubernetes/extract.spec.js index ef99c9a8d5..de28f6743c 100644 --- a/test/manager/kubernetes/extract.spec.js +++ b/test/manager/kubernetes/extract.spec.js @@ -13,6 +13,11 @@ const kubernetesConfigMapFile = fs.readFileSync( 'utf8' ); +const kubernetesArraySyntaxFile = fs.readFileSync( + 'test/_fixtures/kubernetes/array-syntax.yaml', + 'utf8' +); + const otherYamlFile = fs.readFileSync( 'test/_fixtures/kubernetes/gitlab-ci.yaml', 'utf8' @@ -34,6 +39,11 @@ describe('lib/manager/kubernetes/extract', () => { expect(res.deps).toMatchSnapshot(); expect(res.deps).toHaveLength(2); }); + it('extracts image line in a YAML array', () => { + const res = extractDependencies(kubernetesArraySyntaxFile, config); + expect(res.deps).toMatchSnapshot(); + expect(res.deps).toHaveLength(1); + }); it('ignores non-Kubernetes YAML files', () => { expect(extractDependencies(otherYamlFile, config)).toBe(null); }); -- GitLab