From 6c5d9f2f61d2dcb7647211796ea9696e00734a62 Mon Sep 17 00:00:00 2001 From: Oliver Nocon <33484802+OliverNocon@users.noreply.github.com> Date: Thu, 2 May 2019 22:09:15 +0200 Subject: [PATCH] Pipelines - extend init conditions (#676) extends init condition with condition `configKeys` This condition allows to specify a list of configuration keys which if any key is set will activate the respective step & stage --- .../PiperInitRunStageConfigurationTest.groovy | 60 +++++++++++++++++++ vars/piperInitRunStageConfiguration.groovy | 11 ++++ 2 files changed, 71 insertions(+) diff --git a/test/groovy/templates/PiperInitRunStageConfigurationTest.groovy b/test/groovy/templates/PiperInitRunStageConfigurationTest.groovy index eb3b27cfd..88fb79bb5 100644 --- a/test/groovy/templates/PiperInitRunStageConfigurationTest.groovy +++ b/test/groovy/templates/PiperInitRunStageConfigurationTest.groovy @@ -209,6 +209,66 @@ steps: {} } + @Test + void testConditionConfigKeys() { + helper.registerAllowedMethod('libraryResource', [String.class], {s -> + if(s == 'testDefault.yml') { + return ''' +stages: + testStage1: + stepConditions: + firstStep: + configKeys: + - myKey1_1 + - myKey1_2 + testStage2: + stepConditions: + secondStep: + configKeys: + - myKey2_1 + testStage3: + stepConditions: + thirdStep: + configKeys: + - myKey3_1 +''' + } else { + return ''' +general: {} +steps: {} +''' + } + }) + + nullScript.commonPipelineEnvironment.configuration = [ + general: [myKey1_1: 'myVal1_1'], + stages: [:], + steps: [thirdStep: [myKey3_1: 'myVal3_1']] + ] + + jsr.step.piperInitRunStageConfiguration( + script: nullScript, + juStabUtils: utils, + stageConfigResource: 'testDefault.yml' + ) + + assertThat(nullScript.commonPipelineEnvironment.configuration.runStage.keySet(), + allOf( + containsInAnyOrder( + 'testStage1', + 'testStage3' + ), + hasSize(2) + ) + ) + + assertThat(nullScript.commonPipelineEnvironment.configuration.runStep.testStage1.firstStep, is(true)) + assertThat(nullScript.commonPipelineEnvironment.configuration.runStep.testStage2?.secondStep, is(false)) + assertThat(nullScript.commonPipelineEnvironment.configuration.runStep.testStage3.thirdStep, is(true)) + + } + + @Test void testConditionFilePattern() { helper.registerAllowedMethod('libraryResource', [String.class], {s -> diff --git a/vars/piperInitRunStageConfiguration.groovy b/vars/piperInitRunStageConfiguration.groovy index d23b5c274..05f4d815e 100644 --- a/vars/piperInitRunStageConfiguration.groovy +++ b/vars/piperInitRunStageConfiguration.groovy @@ -72,6 +72,17 @@ void call(Map parameters = [:]) { stepActive = true } break + case 'configKeys': + if (condition.getValue() instanceof List) { + condition.getValue().each {configKey -> + if (script.commonPipelineEnvironment.getStepConfiguration(step.getKey(), currentStage)?.get(configKey)) { + stepActive = true + } + } + } else if (script.commonPipelineEnvironment.getStepConfiguration(step.getKey(), currentStage)?.get(condition.getValue())) { + stepActive = true + } + break case 'filePatternFromConfig': def conditionValue=script.commonPipelineEnvironment.getStepConfiguration(step.getKey(), currentStage)?.get(condition.getValue()) if (conditionValue && findFiles(glob: conditionValue)) {