From fcb11ccb346da3d868883884e2831c5e0057b854 Mon Sep 17 00:00:00 2001 From: Michael Kriese <michael.kriese@visualon.de> Date: Tue, 3 Aug 2021 22:08:15 +0200 Subject: [PATCH] fix(kustomize): reject invalid newTag (#11078) --- lib/manager/kustomize/__fixtures__/gitImages.yaml | 2 ++ .../kustomize/__snapshots__/extract.spec.ts.snap | 5 +++++ lib/manager/kustomize/extract.spec.ts | 4 +++- lib/manager/kustomize/extract.ts | 13 +++++++++++-- 4 files changed, 21 insertions(+), 3 deletions(-) diff --git a/lib/manager/kustomize/__fixtures__/gitImages.yaml b/lib/manager/kustomize/__fixtures__/gitImages.yaml index a7538e20b2..6f49be1ce5 100644 --- a/lib/manager/kustomize/__fixtures__/gitImages.yaml +++ b/lib/manager/kustomize/__fixtures__/gitImages.yaml @@ -18,3 +18,5 @@ images: - name: this-lives/on-docker-hub newName: but.this.lives.on.local/private-registry # and therefore we need to check the versions available here newTag: v0.0.4 +- name: nginx + newTag: 2.5 diff --git a/lib/manager/kustomize/__snapshots__/extract.spec.ts.snap b/lib/manager/kustomize/__snapshots__/extract.spec.ts.snap index 572b1f8c06..ec2fc9f816 100644 --- a/lib/manager/kustomize/__snapshots__/extract.spec.ts.snap +++ b/lib/manager/kustomize/__snapshots__/extract.spec.ts.snap @@ -124,5 +124,10 @@ Array [ "replaceString": "v0.0.4", "versioning": "docker", }, + Object { + "currentValue": 2.5, + "depName": "nginx", + "skipReason": "invalid-value", + }, ] `; diff --git a/lib/manager/kustomize/extract.spec.ts b/lib/manager/kustomize/extract.spec.ts index f73775ec6a..f0e15e8959 100644 --- a/lib/manager/kustomize/extract.spec.ts +++ b/lib/manager/kustomize/extract.spec.ts @@ -2,6 +2,7 @@ import { getName, loadFixture } from '../../../test/util'; import * as datasourceDocker from '../../datasource/docker'; import * as datasourceGitTags from '../../datasource/git-tags'; import * as datasourceGitHubTags from '../../datasource/github-tags'; +import { SkipReason } from '../../types'; import * as dockerVersioning from '../../versioning/docker'; import { extractBase, @@ -230,9 +231,10 @@ describe(getName(), () => { it('should extract out image versions', () => { const res = extractPackageFile(gitImages); expect(res.deps).toMatchSnapshot(); - expect(res.deps).toHaveLength(5); + expect(res.deps).toHaveLength(6); expect(res.deps[0].currentValue).toEqual('v0.1.0'); expect(res.deps[1].currentValue).toEqual('v0.0.1'); + expect(res.deps[5].skipReason).toEqual(SkipReason.InvalidValue); }); it('ignores non-Kubernetes empty files', () => { expect(extractPackageFile('')).toBeNull(); diff --git a/lib/manager/kustomize/extract.ts b/lib/manager/kustomize/extract.ts index 265716beb5..12bfb8280c 100644 --- a/lib/manager/kustomize/extract.ts +++ b/lib/manager/kustomize/extract.ts @@ -1,8 +1,10 @@ +import is from '@sindresorhus/is'; import { load } from 'js-yaml'; import * as datasourceDocker from '../../datasource/docker'; import * as datasourceGitTags from '../../datasource/git-tags'; import * as datasourceGitHubTags from '../../datasource/github-tags'; import { logger } from '../../logger'; +import { SkipReason } from '../../types'; import * as dockerVersioning from '../../versioning/docker'; import type { PackageDependency, PackageFile } from '../types'; import type { Image, Kustomize } from './types'; @@ -38,8 +40,15 @@ export function extractBase(base: string): PackageDependency | null { export function extractImage(image: Image): PackageDependency | null { if (image?.name && image.newTag) { const replaceString = image.newTag; - let currentValue; - let currentDigest; + let currentValue: string | undefined; + let currentDigest: string | undefined; + if (!is.string(replaceString)) { + return { + depName: image.newName ?? image.name, + currentValue: replaceString, + skipReason: SkipReason.InvalidValue, + }; + } if (replaceString.startsWith('sha256:')) { currentDigest = replaceString; currentValue = undefined; -- GitLab