From c929f8997e58ea5a74eb8bc6ac72ef6b1dab9dd8 Mon Sep 17 00:00:00 2001 From: Dharmik Date: Mon, 29 Sep 2025 15:56:48 -0300 Subject: [PATCH 1/8] Enable YAML merge keys in yamlPlaceholderResolver Signed-off-by: Dharmik --- plugins/catalog-backend/src/processors/PlaceholderProcessor.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/catalog-backend/src/processors/PlaceholderProcessor.ts b/plugins/catalog-backend/src/processors/PlaceholderProcessor.ts index bdbb0433d7..7e55612ac8 100644 --- a/plugins/catalog-backend/src/processors/PlaceholderProcessor.ts +++ b/plugins/catalog-backend/src/processors/PlaceholderProcessor.ts @@ -140,7 +140,7 @@ export async function yamlPlaceholderResolver( let documents: yaml.Document.Parsed[]; try { - documents = yaml.parseAllDocuments(content).filter(d => d); + documents = yaml.parseAllDocuments(content, {merge: true}).filter(d => d); } catch (e) { throw new Error( `Placeholder \$${params.key} failed to parse YAML data at ${params.value}, ${e}`, From abba9db48cd91e9ba3fdc727a612b8cc525d8821 Mon Sep 17 00:00:00 2001 From: Dharmik Date: Mon, 29 Sep 2025 16:36:18 -0300 Subject: [PATCH 2/8] format fix Signed-off-by: Dharmik --- plugins/catalog-backend/src/processors/PlaceholderProcessor.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/catalog-backend/src/processors/PlaceholderProcessor.ts b/plugins/catalog-backend/src/processors/PlaceholderProcessor.ts index 7e55612ac8..acc833947e 100644 --- a/plugins/catalog-backend/src/processors/PlaceholderProcessor.ts +++ b/plugins/catalog-backend/src/processors/PlaceholderProcessor.ts @@ -140,7 +140,7 @@ export async function yamlPlaceholderResolver( let documents: yaml.Document.Parsed[]; try { - documents = yaml.parseAllDocuments(content, {merge: true}).filter(d => d); + documents = yaml.parseAllDocuments(content, { merge: true }).filter(d => d); } catch (e) { throw new Error( `Placeholder \$${params.key} failed to parse YAML data at ${params.value}, ${e}`, From 2d229b243cc3de5383d084cae4190ad117c455e2 Mon Sep 17 00:00:00 2001 From: Dharmik Date: Sat, 4 Oct 2025 18:30:34 -0300 Subject: [PATCH 3/8] changeset and DCO signature Signed-off-by: Dharmik --- .changeset/bright-ears-send.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/bright-ears-send.md diff --git a/.changeset/bright-ears-send.md b/.changeset/bright-ears-send.md new file mode 100644 index 0000000000..d69975ab85 --- /dev/null +++ b/.changeset/bright-ears-send.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-backend': major +--- + +Enable YAML merge keys in yamlPlaceholderResolver From c773f80b4d75fd619ca9433007e30587ebe964d9 Mon Sep 17 00:00:00 2001 From: Dharmik Date: Sat, 4 Oct 2025 18:49:51 -0300 Subject: [PATCH 4/8] changeset and DCO signature Signed-off-by: Dharmik --- .changeset/bright-ears-send.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/bright-ears-send.md b/.changeset/bright-ears-send.md index d69975ab85..5104f2377b 100644 --- a/.changeset/bright-ears-send.md +++ b/.changeset/bright-ears-send.md @@ -1,5 +1,5 @@ --- -'@backstage/plugin-catalog-backend': major +'@backstage/plugin-catalog-backend': minor --- Enable YAML merge keys in yamlPlaceholderResolver From 9d3ec06dfcdaa3ebe1c7ab6643600e0918dcaa8d Mon Sep 17 00:00:00 2001 From: Dharmik Date: Thu, 9 Oct 2025 21:36:52 -0300 Subject: [PATCH 5/8] support configurable Signed-off-by: Dharmik --- .changeset/easy-hands-grow.md | 6 ++++++ .../src/processors/PlaceholderProcessor.ts | 6 +++++- plugins/catalog-node/src/processing/parse.ts | 8 ++++++++ 3 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 .changeset/easy-hands-grow.md diff --git a/.changeset/easy-hands-grow.md b/.changeset/easy-hands-grow.md new file mode 100644 index 0000000000..fc3cfd96e1 --- /dev/null +++ b/.changeset/easy-hands-grow.md @@ -0,0 +1,6 @@ +--- +'@backstage/plugin-catalog-backend': minor +'@backstage/plugin-catalog-node': minor +--- + +Make YAML merge (<<:) support configurable in the Backstage Catalog instead of always being enabled diff --git a/plugins/catalog-backend/src/processors/PlaceholderProcessor.ts b/plugins/catalog-backend/src/processors/PlaceholderProcessor.ts index acc833947e..b1b5493778 100644 --- a/plugins/catalog-backend/src/processors/PlaceholderProcessor.ts +++ b/plugins/catalog-backend/src/processors/PlaceholderProcessor.ts @@ -138,9 +138,13 @@ export async function yamlPlaceholderResolver( params.emit(processingResult.refresh(`url:${url}`)); + // YAML merge support False by default + const enableYamlMerge = false; + const parseOptions = { merge: enableYamlMerge }; + let documents: yaml.Document.Parsed[]; try { - documents = yaml.parseAllDocuments(content, { merge: true }).filter(d => d); + documents = yaml.parseAllDocuments(content, parseOptions).filter(d => d); } catch (e) { throw new Error( `Placeholder \$${params.key} failed to parse YAML data at ${params.value}, ${e}`, diff --git a/plugins/catalog-node/src/processing/parse.ts b/plugins/catalog-node/src/processing/parse.ts index 2ef276d06d..4647dc8afc 100644 --- a/plugins/catalog-node/src/processing/parse.ts +++ b/plugins/catalog-node/src/processing/parse.ts @@ -21,6 +21,10 @@ import { LocationSpec } from '@backstage/plugin-catalog-common'; import { CatalogProcessorResult } from '../api/processor'; import { processingResult } from '../api/processingResult'; +export interface ParseEntityYamlOptions { + enableYamlMerge?: boolean; +} + /** * A helper function that parses a YAML file, properly handling multiple * documents in a single file. @@ -40,12 +44,16 @@ import { processingResult } from '../api/processingResult'; export function* parseEntityYaml( data: string | Buffer, location: LocationSpec, + options?: ParseEntityYamlOptions, ): Iterable { + const parseOptions = { merge: options?.enableYamlMerge ?? false }; + let documents: yaml.Document.Parsed[]; try { documents = yaml .parseAllDocuments( typeof data === 'string' ? data : data.toString('utf8'), + parseOptions, ) .filter(d => d); } catch (e) { From b4137828b4c0b262dc5e925f5f79a44e2e5834bd Mon Sep 17 00:00:00 2001 From: Dharmik Date: Sun, 12 Oct 2025 15:44:38 -0300 Subject: [PATCH 6/8] fix Signed-off-by: Dharmik --- plugins/catalog-backend/src/processors/PlaceholderProcessor.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/catalog-backend/src/processors/PlaceholderProcessor.ts b/plugins/catalog-backend/src/processors/PlaceholderProcessor.ts index b1b5493778..d6de043f91 100644 --- a/plugins/catalog-backend/src/processors/PlaceholderProcessor.ts +++ b/plugins/catalog-backend/src/processors/PlaceholderProcessor.ts @@ -138,7 +138,7 @@ export async function yamlPlaceholderResolver( params.emit(processingResult.refresh(`url:${url}`)); - // YAML merge support False by default + // YAML merge support enabled by default const enableYamlMerge = false; const parseOptions = { merge: enableYamlMerge }; From 8c26af4079cb9a0e9a9fb09b7985e23cc60aab51 Mon Sep 17 00:00:00 2001 From: Dharmik Date: Thu, 23 Oct 2025 19:55:41 -0300 Subject: [PATCH 7/8] update api reports for catalog-node Signed-off-by: Dharmik --- .changeset/twelve-spoons-feel.md | 6 ++++++ plugins/catalog-node/report.api.md | 7 +++++++ plugins/catalog-node/src/processing/index.ts | 2 +- plugins/catalog-node/src/processing/parse.ts | 5 +++++ 4 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 .changeset/twelve-spoons-feel.md diff --git a/.changeset/twelve-spoons-feel.md b/.changeset/twelve-spoons-feel.md new file mode 100644 index 0000000000..c9e41a81c3 --- /dev/null +++ b/.changeset/twelve-spoons-feel.md @@ -0,0 +1,6 @@ +--- +'@backstage/plugin-catalog-backend': minar +'@backstage/plugin-catalog-node': minar +--- + +Enable YAML merge keys in yamlPlaceholderResolver diff --git a/plugins/catalog-node/report.api.md b/plugins/catalog-node/report.api.md index 9a9f91865c..d544bc6757 100644 --- a/plugins/catalog-node/report.api.md +++ b/plugins/catalog-node/report.api.md @@ -313,8 +313,15 @@ export function locationSpecToMetadataName(location: LocationSpec_2): string; export function parseEntityYaml( data: string | Buffer, location: LocationSpec_2, + options?: ParseEntityYamlOptions, ): Iterable; +// @public +export interface ParseEntityYamlOptions { + // (undocumented) + enableYamlMerge?: boolean; +} + // @public (undocumented) export type PlaceholderResolver = ( params: PlaceholderResolverParams, diff --git a/plugins/catalog-node/src/processing/index.ts b/plugins/catalog-node/src/processing/index.ts index 1610e0cb89..00c2551a60 100644 --- a/plugins/catalog-node/src/processing/index.ts +++ b/plugins/catalog-node/src/processing/index.ts @@ -24,4 +24,4 @@ export type { LocationAnalyzer, ScmLocationAnalyzer, } from './types'; -export { parseEntityYaml } from './parse'; +export { parseEntityYaml, type ParseEntityYamlOptions } from './parse'; diff --git a/plugins/catalog-node/src/processing/parse.ts b/plugins/catalog-node/src/processing/parse.ts index 4647dc8afc..5612ef991a 100644 --- a/plugins/catalog-node/src/processing/parse.ts +++ b/plugins/catalog-node/src/processing/parse.ts @@ -21,6 +21,11 @@ import { LocationSpec } from '@backstage/plugin-catalog-common'; import { CatalogProcessorResult } from '../api/processor'; import { processingResult } from '../api/processingResult'; +/** + * Options for parsing entity YAML files. + * + * @public + */ export interface ParseEntityYamlOptions { enableYamlMerge?: boolean; } From 8bef9af5cd5b74c906e5327e83415160e6fe0076 Mon Sep 17 00:00:00 2001 From: Dharmik Date: Thu, 23 Oct 2025 19:59:22 -0300 Subject: [PATCH 8/8] update api reports for catalog-node Signed-off-by: Dharmik --- .changeset/twelve-spoons-feel.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.changeset/twelve-spoons-feel.md b/.changeset/twelve-spoons-feel.md index c9e41a81c3..21298b4e09 100644 --- a/.changeset/twelve-spoons-feel.md +++ b/.changeset/twelve-spoons-feel.md @@ -1,6 +1,6 @@ --- -'@backstage/plugin-catalog-backend': minar -'@backstage/plugin-catalog-node': minar +'@backstage/plugin-catalog-backend': minor +'@backstage/plugin-catalog-node': minor --- Enable YAML merge keys in yamlPlaceholderResolver