From ab7f6793649f80d4443bc25dccfd6fce9e5e5962 Mon Sep 17 00:00:00 2001 From: Matthew Dawson <github@mjdsystems.ca> Date: Mon, 17 Jul 2023 14:06:20 -0400 Subject: [PATCH] fix(datasource/helm): Skip helm charts with no listed versions (#23223) --- .../helm/__fixtures__/index_emptypackage.yaml | 19 +++++++++++++++++++ lib/modules/datasource/helm/index.spec.ts | 18 ++++++++++++++++++ lib/modules/datasource/helm/index.ts | 3 +++ 3 files changed, 40 insertions(+) create mode 100644 lib/modules/datasource/helm/__fixtures__/index_emptypackage.yaml diff --git a/lib/modules/datasource/helm/__fixtures__/index_emptypackage.yaml b/lib/modules/datasource/helm/__fixtures__/index_emptypackage.yaml new file mode 100644 index 0000000000..fef501521b --- /dev/null +++ b/lib/modules/datasource/helm/__fixtures__/index_emptypackage.yaml @@ -0,0 +1,19 @@ +apiVersion: v1 +entries: + aerospike: [] + ambassador: + - apiVersion: v1 + appVersion: 0.70.1 + created: 2019-06-02T08:56:36.119470813Z + description: A Helm chart for Datawire Ambassador + digest: 880002d74accfc9dab1debcc78c134fb4989e73ff84b137ce7aa92bf4d726297 + engine: gotpl + home: https://www.getambassador.io/ + icon: https://www.getambassador.io/images/logo.png + name: ambassador + sources: + - https://github.com/datawire/ambassador + - https://github.com/prometheus/statsd_exporter + urls: + - https://charts.helm.sh/stable/packages/ambassador-2.7.0.tgz + version: 2.7.0 diff --git a/lib/modules/datasource/helm/index.spec.ts b/lib/modules/datasource/helm/index.spec.ts index c4dc79ae96..7a272957dc 100644 --- a/lib/modules/datasource/helm/index.spec.ts +++ b/lib/modules/datasource/helm/index.spec.ts @@ -167,6 +167,24 @@ describe('modules/datasource/helm/index', () => { expect(releases).toMatchSnapshot(); }); + it('returns list of versions for other packages if one packages has no versions', async () => { + httpMock + .scope('https://example-repository.com') + .get('/index.yaml') + .reply(200, Fixtures.get('index_emptypackage.yaml')); + const releases = await getPkgReleases({ + datasource: HelmDatasource.id, + packageName: 'ambassador', + registryUrls: ['https://example-repository.com'], + }); + expect(releases).toMatchObject({ + homepage: 'https://www.getambassador.io/', + registryUrl: 'https://example-repository.com', + sourceUrl: 'https://github.com/datawire/ambassador', + releases: expect.toBeArrayOfSize(1), + }); + }); + it('adds trailing slash to subdirectories', async () => { httpMock .scope('https://example-repository.com') diff --git a/lib/modules/datasource/helm/index.ts b/lib/modules/datasource/helm/index.ts index 8fcf881eda..6d8e2ef4c0 100644 --- a/lib/modules/datasource/helm/index.ts +++ b/lib/modules/datasource/helm/index.ts @@ -60,6 +60,9 @@ export class HelmDatasource extends Datasource { } const result: HelmRepositoryData = {}; for (const [name, releases] of Object.entries(doc.entries)) { + if (releases.length === 0) { + continue; + } const latestRelease = releases[0]; const sourceUrl = findSourceUrl(latestRelease); result[name] = { -- GitLab