From 9c2aa659eef83ae7237cd87c2af9442da04357c0 Mon Sep 17 00:00:00 2001 From: Mattia Dal Ben Date: Tue, 14 Apr 2026 16:35:29 +0200 Subject: [PATCH] ci: improve pipeline parameters defaults handling --- vars/continuousIntegrationPipeline.groovy | 5 ++++- vars/deepMerge.groovy | 12 ++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 vars/deepMerge.groovy diff --git a/vars/continuousIntegrationPipeline.groovy b/vars/continuousIntegrationPipeline.groovy index 1050858..a57195a 100644 --- a/vars/continuousIntegrationPipeline.groovy +++ b/vars/continuousIntegrationPipeline.groovy @@ -34,7 +34,10 @@ def call(Map pipelineParams = [:]) { sonar: [ enable: false, projectKey: null, tokenId: null, exclusions: "tests/**/*,**/*.xml,**/*.yml", testExclusions: "**/*" ], pushArtifacts: true ] - pipelineParams = defaultParameters << pipelineParams + pipelineParams = deepMerge(defaultParameters, pipelineParams) + + // Pretty print the final pipeline parameters + echo "Pipeline parameters: ${groovy.json.JsonOutput.prettyPrint(groovy.json.JsonOutput.toJson(pipelineParams))}" stage ("Pipeline parameters check") { // Print effective pipeline parameters for debugging diff --git a/vars/deepMerge.groovy b/vars/deepMerge.groovy new file mode 100644 index 0000000..743e565 --- /dev/null +++ b/vars/deepMerge.groovy @@ -0,0 +1,12 @@ +// Nested maps merger +def call(Map defaults, Map overrides) { + def result = [:] + defaults + overrides.each { k, v -> + if (result[k] instanceof Map && v instanceof Map) { + result[k] = deepMerge(result[k] as Map, v as Map) + } else { + result[k] = v + } + } + return result +}