Skip to content
Snippets Groups Projects
Unverified Commit ed538ac3 authored by Michael Kriese's avatar Michael Kriese Committed by GitHub
Browse files

fix(manager/kubernetes): log filename on parse error (#16676)

parent 0cc8e2bb
No related branches found
No related tags found
No related merge requests found
...@@ -9,11 +9,11 @@ const otherYamlFile = Fixtures.get('gitlab-ci.yaml'); ...@@ -9,11 +9,11 @@ const otherYamlFile = Fixtures.get('gitlab-ci.yaml');
describe('modules/manager/kubernetes/extract', () => { describe('modules/manager/kubernetes/extract', () => {
describe('extractPackageFile()', () => { describe('extractPackageFile()', () => {
it('returns null for empty', () => { it('returns null for empty', () => {
expect(extractPackageFile('')).toBeNull(); expect(extractPackageFile('', 'file.yaml')).toBeNull();
}); });
it('returns only API version', () => { it('returns only API version', () => {
const res = extractPackageFile(kubernetesConfigMapFile); const res = extractPackageFile(kubernetesConfigMapFile, 'file.yaml');
expect(res?.deps).toStrictEqual([ expect(res?.deps).toStrictEqual([
{ {
currentValue: 'v1', currentValue: 'v1',
...@@ -23,7 +23,7 @@ describe('modules/manager/kubernetes/extract', () => { ...@@ -23,7 +23,7 @@ describe('modules/manager/kubernetes/extract', () => {
}); });
it('extracts multiple Kubernetes configurations', () => { it('extracts multiple Kubernetes configurations', () => {
const res = extractPackageFile(kubernetesImagesFile); const res = extractPackageFile(kubernetesImagesFile, 'file.yaml');
expect(res?.deps).toStrictEqual([ expect(res?.deps).toStrictEqual([
{ {
autoReplaceStringTemplate: autoReplaceStringTemplate:
...@@ -55,7 +55,7 @@ describe('modules/manager/kubernetes/extract', () => { ...@@ -55,7 +55,7 @@ describe('modules/manager/kubernetes/extract', () => {
}); });
it('extracts image line in a YAML array', () => { it('extracts image line in a YAML array', () => {
const res = extractPackageFile(kubernetesArraySyntaxFile); const res = extractPackageFile(kubernetesArraySyntaxFile, 'file.yaml');
expect(res?.deps).toStrictEqual([ expect(res?.deps).toStrictEqual([
{ {
autoReplaceStringTemplate: autoReplaceStringTemplate:
...@@ -75,7 +75,7 @@ describe('modules/manager/kubernetes/extract', () => { ...@@ -75,7 +75,7 @@ describe('modules/manager/kubernetes/extract', () => {
}); });
it('ignores non-Kubernetes YAML files', () => { it('ignores non-Kubernetes YAML files', () => {
expect(extractPackageFile(otherYamlFile)).toBeNull(); expect(extractPackageFile(otherYamlFile, 'file.yaml')).toBeNull();
}); });
it('handles invalid YAML files', () => { it('handles invalid YAML files', () => {
...@@ -83,7 +83,7 @@ describe('modules/manager/kubernetes/extract', () => { ...@@ -83,7 +83,7 @@ describe('modules/manager/kubernetes/extract', () => {
kind: ConfigMap kind: ConfigMap
< <
`; `;
expect(extractPackageFile(invalidYaml)).toBeNull(); expect(extractPackageFile(invalidYaml, 'file.yaml')).toBeNull();
}); });
}); });
}); });
...@@ -6,7 +6,10 @@ import { getDep } from '../dockerfile/extract'; ...@@ -6,7 +6,10 @@ import { getDep } from '../dockerfile/extract';
import type { PackageDependency, PackageFile } from '../types'; import type { PackageDependency, PackageFile } from '../types';
import type { KubernetesConfiguration } from './types'; import type { KubernetesConfiguration } from './types';
export function extractPackageFile(content: string): PackageFile | null { export function extractPackageFile(
content: string,
fileName: string
): PackageFile | null {
logger.trace('kubernetes.extractPackageFile()'); logger.trace('kubernetes.extractPackageFile()');
const isKubernetesManifest = const isKubernetesManifest =
...@@ -18,7 +21,7 @@ export function extractPackageFile(content: string): PackageFile | null { ...@@ -18,7 +21,7 @@ export function extractPackageFile(content: string): PackageFile | null {
const deps: PackageDependency[] = [ const deps: PackageDependency[] = [
...extractImages(content), ...extractImages(content),
...extractApis(content), ...extractApis(content, fileName),
]; ];
return deps.length ? { deps } : null; return deps.length ? { deps } : null;
...@@ -47,13 +50,13 @@ function extractImages(content: string): PackageDependency[] { ...@@ -47,13 +50,13 @@ function extractImages(content: string): PackageDependency[] {
return deps.filter((dep) => !dep.currentValue?.includes('${')); return deps.filter((dep) => !dep.currentValue?.includes('${'));
} }
function extractApis(content: string): PackageDependency[] { function extractApis(content: string, fileName: string): PackageDependency[] {
let doc: KubernetesConfiguration[] | undefined; let doc: KubernetesConfiguration[] | undefined;
try { try {
doc = loadAll(content) as KubernetesConfiguration[]; doc = loadAll(content) as KubernetesConfiguration[];
} catch (err) { } catch (err) {
logger.debug({ err, content }, 'Failed to parse Kubernetes configuration.'); logger.debug({ err, fileName }, 'Failed to parse Kubernetes manifest.');
return []; return [];
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment