From af7bd08c8b5e159e8a1b6eb97e04b0236c8ce431 Mon Sep 17 00:00:00 2001
From: Christoph Obexer <cobexer@gmail.com>
Date: Mon, 29 Mar 2021 20:41:44 +0200
Subject: [PATCH] fix: helm: add support for "alias:" repositories (#9316)

---
 .../__snapshots__/extract.spec.ts.snap                |  7 +++++++
 lib/manager/helm-requirements/extract.spec.ts         |  4 ++++
 lib/manager/helm-requirements/extract.ts              |  8 +++++---
 lib/manager/helmv3/__snapshots__/extract.spec.ts.snap |  7 +++++++
 lib/manager/helmv3/extract.spec.ts                    |  4 ++++
 lib/manager/helmv3/extract.ts                         | 11 ++++++++---
 6 files changed, 35 insertions(+), 6 deletions(-)

diff --git a/lib/manager/helm-requirements/__snapshots__/extract.spec.ts.snap b/lib/manager/helm-requirements/__snapshots__/extract.spec.ts.snap
index 50e5657e88..1e6908d617 100644
--- a/lib/manager/helm-requirements/__snapshots__/extract.spec.ts.snap
+++ b/lib/manager/helm-requirements/__snapshots__/extract.spec.ts.snap
@@ -33,6 +33,13 @@ Object {
         "https://my-registry.gcr.io/",
       ],
     },
+    Object {
+      "currentValue": "1.0.0",
+      "depName": "example",
+      "registryUrls": Array [
+        "https://registry.example.com/",
+      ],
+    },
   ],
 }
 `;
diff --git a/lib/manager/helm-requirements/extract.spec.ts b/lib/manager/helm-requirements/extract.spec.ts
index b2bf6c8775..36cd773fd9 100644
--- a/lib/manager/helm-requirements/extract.spec.ts
+++ b/lib/manager/helm-requirements/extract.spec.ts
@@ -93,11 +93,15 @@ describe('lib/manager/helm-requirements/extract', () => {
         - name: redis
           version: 0.9.0
           repository: '@placeholder'
+        - name: example
+          version: 1.0.0
+          repository: alias:longalias
       `;
       const fileName = 'requirements.yaml';
       const result = extractPackageFile(content, fileName, {
         aliases: {
           placeholder: 'https://my-registry.gcr.io/',
+          longalias: 'https://registry.example.com/',
         },
       });
       expect(result).not.toBeNull();
diff --git a/lib/manager/helm-requirements/extract.ts b/lib/manager/helm-requirements/extract.ts
index 11363a61a7..4ea6d08a76 100644
--- a/lib/manager/helm-requirements/extract.ts
+++ b/lib/manager/helm-requirements/extract.ts
@@ -44,9 +44,11 @@ export function extractPackageFile(
     }
 
     res.registryUrls = [dep.repository];
-    if (dep.repository.startsWith('@')) {
-      const repoWithAtRemoved = dep.repository.slice(1);
-      const alias = config.aliases[repoWithAtRemoved];
+    if (dep.repository.startsWith('@') || dep.repository.startsWith('alias:')) {
+      const repoWithPrefixRemoved = dep.repository.slice(
+        dep.repository[0] === '@' ? 1 : 6
+      );
+      const alias = config.aliases[repoWithPrefixRemoved];
       if (alias) {
         res.registryUrls = [alias];
         return res;
diff --git a/lib/manager/helmv3/__snapshots__/extract.spec.ts.snap b/lib/manager/helmv3/__snapshots__/extract.spec.ts.snap
index 424bf34f10..a1f566e5e2 100644
--- a/lib/manager/helmv3/__snapshots__/extract.spec.ts.snap
+++ b/lib/manager/helmv3/__snapshots__/extract.spec.ts.snap
@@ -34,6 +34,13 @@ Object {
         "https://my-registry.gcr.io/",
       ],
     },
+    Object {
+      "currentValue": "1.0.0",
+      "depName": "example",
+      "registryUrls": Array [
+        "https://registry.example.com/",
+      ],
+    },
   ],
   "packageFileVersion": "0.1.0",
 }
diff --git a/lib/manager/helmv3/extract.spec.ts b/lib/manager/helmv3/extract.spec.ts
index c4e402ead3..48bad50e84 100644
--- a/lib/manager/helmv3/extract.spec.ts
+++ b/lib/manager/helmv3/extract.spec.ts
@@ -73,11 +73,15 @@ describe('lib/manager/helm-requirements/extract', () => {
         - name: redis
           version: 0.9.0
           repository: '@placeholder'
+        - name: example
+          version: 1.0.0
+          repository: alias:longalias
       `;
       const fileName = 'Chart.yaml';
       const result = await extractPackageFile(content, fileName, {
         aliases: {
           placeholder: 'https://my-registry.gcr.io/',
+          longalias: 'https://registry.example.com/',
         },
       });
       expect(result).not.toBeNull();
diff --git a/lib/manager/helmv3/extract.ts b/lib/manager/helmv3/extract.ts
index b15c4018e0..3150934684 100644
--- a/lib/manager/helmv3/extract.ts
+++ b/lib/manager/helmv3/extract.ts
@@ -58,9 +58,14 @@ export async function extractPackageFile(
     };
     if (dep.repository) {
       res.registryUrls = [dep.repository];
-      if (dep.repository.startsWith('@')) {
-        const repoWithAtRemoved = dep.repository.slice(1);
-        const alias = config.aliases[repoWithAtRemoved];
+      if (
+        dep.repository.startsWith('@') ||
+        dep.repository.startsWith('alias:')
+      ) {
+        const repoWithPrefixRemoved = dep.repository.slice(
+          dep.repository[0] === '@' ? 1 : 6
+        );
+        const alias = config.aliases[repoWithPrefixRemoved];
         if (alias) {
           res.registryUrls = [alias];
           return res;
-- 
GitLab