1
0
mirror of https://github.com/firstBitMarksistskaya/jenkins-lib.git synced 2025-03-20 21:38:35 +02:00

Исправлен мерж секретов

This commit is contained in:
Nikita Gryzlov 2020-04-15 14:43:37 +03:00
parent 1a3ee80033
commit 8d9ed2ff08
No known key found for this signature in database
GPG Key ID: C1EAE411FEF0BF2F
3 changed files with 24 additions and 9 deletions
src/ru/pulsar/jenkins/library/configuration
test/unit
groovy/ru/pulsar/jenkins/library/configuration
resources

@ -28,19 +28,27 @@ class ConfigurationReader implements Serializable {
return mergeConfigurations(globalConfiguration, jobConfiguration); return mergeConfigurations(globalConfiguration, jobConfiguration);
} }
@NonCPS
private static JobConfiguration mergeConfigurations( private static JobConfiguration mergeConfigurations(
JobConfiguration baseConfiguration, JobConfiguration baseConfiguration,
JobConfiguration configurationToMerge JobConfiguration configurationToMerge
) { ) {
BeanUtils.describe(configurationToMerge).entrySet().stream() def nonMergeableSettings = Arrays.asList("secrets").toSet()
.filter({ e -> e.getValue() != null })
.filter({ e -> e.getKey() != "class" }) mergeObjects(baseConfiguration, configurationToMerge, nonMergeableSettings);
.filter({ e -> e.getKey() != "metaClass" }) mergeObjects(baseConfiguration.secrets, configurationToMerge.secrets, Collections.emptySet())
.forEach {e ->
BeanUtils.setProperty(baseConfiguration, e.getKey(), e.getValue());
}
return baseConfiguration; return baseConfiguration;
} }
@NonCPS
private static <T extends Object> void mergeObjects(T baseObject, T objectToMerge, Set<String> nonMergeableSettings) {
BeanUtils.describe(objectToMerge).entrySet().stream()
.filter({ e -> e.getValue() != null })
.filter({ e -> e.getKey() != "class" })
.filter({ e -> e.getKey() != "metaClass" })
.filter({ e -> !nonMergeableSettings.contains(e.getKey()) })
.forEach {e ->
BeanUtils.setProperty(baseObject, e.getKey(), e.getValue());
}
}
} }

@ -32,6 +32,10 @@ class ConfigurationReaderTest {
// then // then
assertThat(jobConfiguration.getV8version()).isEqualTo("8.3.14.1944"); assertThat(jobConfiguration.getV8version()).isEqualTo("8.3.14.1944");
assertThat(jobConfiguration.getSonarScannerToolName()).isEqualTo("sonar-scanner"); assertThat(jobConfiguration.getSonarScannerToolName()).isEqualTo("sonar-scanner");
assertThat(jobConfiguration.getSecrets())
.hasFieldOrPropertyWithValue("storage", "1234")
.hasFieldOrPropertyWithValue("storagePath", "UNKNOWN_ID")
;
} }
} }

@ -1,3 +1,6 @@
{ {
"v8version": "8.3.14.1944" "v8version": "8.3.14.1944",
"secrets": {
"storage": "1234"
}
} }