1
0
mirror of https://github.com/firstBitMarksistskaya/jenkins-lib.git synced 2025-03-19 21:37:49 +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

View File

@ -28,19 +28,27 @@ class ConfigurationReader implements Serializable {
return mergeConfigurations(globalConfiguration, jobConfiguration);
}
@NonCPS
private static JobConfiguration mergeConfigurations(
JobConfiguration baseConfiguration,
JobConfiguration configurationToMerge
) {
BeanUtils.describe(configurationToMerge).entrySet().stream()
.filter({ e -> e.getValue() != null })
.filter({ e -> e.getKey() != "class" })
.filter({ e -> e.getKey() != "metaClass" })
.forEach {e ->
BeanUtils.setProperty(baseConfiguration, e.getKey(), e.getValue());
}
def nonMergeableSettings = Arrays.asList("secrets").toSet()
mergeObjects(baseConfiguration, configurationToMerge, nonMergeableSettings);
mergeObjects(baseConfiguration.secrets, configurationToMerge.secrets, Collections.emptySet())
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());
}
}
}

View File

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

View File

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