From 6fefb268f9ae9a18122ec6b2ee6857b123ed421e Mon Sep 17 00:00:00 2001
From: Michael Kriese <michael.kriese@visualon.de>
Date: Tue, 8 Sep 2020 07:42:00 +0200
Subject: [PATCH] fix(helm-values): update digest if available (#7202)

---
 .../multi_and_nested_image_values.yaml        |  2 +-
 .../__snapshots__/extract.spec.ts.snap        |  6 +++++-
 lib/manager/helm-values/extract.ts            | 19 ++++++++++++++++---
 3 files changed, 22 insertions(+), 5 deletions(-)

diff --git a/lib/manager/helm-values/__fixtures__/multi_and_nested_image_values.yaml b/lib/manager/helm-values/__fixtures__/multi_and_nested_image_values.yaml
index c134c88750..8a6ad738ea 100644
--- a/lib/manager/helm-values/__fixtures__/multi_and_nested_image_values.yaml
+++ b/lib/manager/helm-values/__fixtures__/multi_and_nested_image_values.yaml
@@ -17,7 +17,7 @@ someOtherKey:
   - image:
       registry: docker.io
       repository: bitnami/postgresql
-      tag: 11.5.0-debian-9-r0
+      tag: 11.5.0-debian-9-r0@sha256:4762726f1471ef048dd807afdc0e19265e95ffdcc7cb4a34891f680290022809
       some-non-image-related-key: 'with-some-value'
 
 empty_key:
diff --git a/lib/manager/helm-values/__snapshots__/extract.spec.ts.snap b/lib/manager/helm-values/__snapshots__/extract.spec.ts.snap
index 639a6cd8a3..f9c681f4b9 100644
--- a/lib/manager/helm-values/__snapshots__/extract.spec.ts.snap
+++ b/lib/manager/helm-values/__snapshots__/extract.spec.ts.snap
@@ -8,18 +8,21 @@ Object {
       "currentValue": "11.6.0-debian-9-r0",
       "datasource": "docker",
       "depName": "bitnami/postgresql",
+      "replaceString": "11.6.0-debian-9-r0",
     },
     Object {
       "currentDigest": undefined,
       "currentValue": "0.7.0-debian-9-r12",
       "datasource": "docker",
       "depName": "docker.io/bitnami/postgres-exporter",
+      "replaceString": "0.7.0-debian-9-r12",
     },
     Object {
-      "currentDigest": undefined,
+      "currentDigest": "sha256:4762726f1471ef048dd807afdc0e19265e95ffdcc7cb4a34891f680290022809",
       "currentValue": "11.5.0-debian-9-r0",
       "datasource": "docker",
       "depName": "docker.io/bitnami/postgresql",
+      "replaceString": "11.5.0-debian-9-r0@sha256:4762726f1471ef048dd807afdc0e19265e95ffdcc7cb4a34891f680290022809",
     },
   ],
 }
@@ -33,6 +36,7 @@ Object {
       "currentValue": "1.16.1",
       "datasource": "docker",
       "depName": "nginx",
+      "replaceString": "1.16.1",
     },
   ],
 }
diff --git a/lib/manager/helm-values/extract.ts b/lib/manager/helm-values/extract.ts
index 12814f2213..bdaab75161 100644
--- a/lib/manager/helm-values/extract.ts
+++ b/lib/manager/helm-values/extract.ts
@@ -8,6 +8,20 @@ import {
   matchesHelmValuesDockerHeuristic,
 } from './util';
 
+function getHelmDep({
+  registry,
+  repository,
+  tag,
+}: {
+  registry: string;
+  repository: string;
+  tag: string;
+}): PackageDependency {
+  const dep = getDep(`${registry}${repository}:${tag}`, false);
+  dep.replaceString = tag;
+  return dep;
+}
+
 /**
  * Recursively find all supported dependencies in the yaml object.
  *
@@ -29,8 +43,7 @@ function findDependencies(
       registry = registry ? `${registry}/` : '';
       const repository = String(currentItem.repository);
       const tag = String(currentItem.tag);
-      const currentFrom = `${registry}${repository}:${tag}`;
-      packageDependencies.push(getDep(currentFrom, false));
+      packageDependencies.push(getHelmDep({ repository, tag, registry }));
     } else {
       findDependencies(parsedContent[key], packageDependencies);
     }
@@ -39,7 +52,7 @@ function findDependencies(
 }
 
 export function extractPackageFile(content: string): PackageFile {
-  let parsedContent;
+  let parsedContent: Record<string, unknown> | HelmDockerImageDependency;
   try {
     // a parser that allows extracting line numbers would be preferable, with
     // the current approach we need to match anything we find again during the update
-- 
GitLab