diff --git a/CHANGELOG.md b/CHANGELOG.md
index 4ed5494..69e6dc0 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -8,6 +8,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
+## [2.3.0](https://github.com/cloudogu/ces-build-lib/releases/tag/2.3.0) - 2024-09-11
+### Changed
+- change `k3d.configureComponents` so that `null` values disable single components so they won't be installed.
+This is useful if default components like the blueprint-operator have to be disabled.
+ - Example:
+`k3d.configureComponents(["k8s-minio": ["version": "latest", "helmRepositoryNamespace": "k8s"], "k8s-blueprint-operator": null])`
+
+
## [2.2.1](https://github.com/cloudogu/ces-build-lib/releases/tag/2.2.1) - 2024-05-16
### Fixed
- [#125] K3d setup waits now until all dogus are rolled out and the setup is really done.
diff --git a/README.md b/README.md
index 5bf9c06..f2f77fa 100644
--- a/README.md
+++ b/README.md
@@ -1102,6 +1102,15 @@ try {
// your image name may look like this: k3d-citest-123456/your/image:yourTag-1.2.3-dev
// the image name can be applied to your cluster as usual, f. i. with k3d.kubectl() with a customized K8s resource
}
+
+ stage('configure components'){
+ // add additional components
+ k3d.configureComponents(["k8s-minio" : ["version": "latest", "helmRepositoryNamespace": "k8s"],
+ "k8s-loki" : ["version": "latest", "helmRepositoryNamespace": "k8s"],
+ "k8s-promtail" : ["version": "latest", "helmRepositoryNamespace": "k8s"],
+ "k8s-blueprint-operator": null, // null values will delete components from the config
+ ])
+ }
stage('execute k8s-ces-setup') {
k3d.setup('0.20.0')
diff --git a/pom.xml b/pom.xml
index ae9ebf5..38fa8a2 100644
--- a/pom.xml
+++ b/pom.xml
@@ -19,7 +19,7 @@
com.cloudogu.ces
ces-build-lib
ces-build-lib
- 2.2.1
+ 2.3.0
diff --git a/src/com/cloudogu/ces/cesbuildlib/K3d.groovy b/src/com/cloudogu/ces/cesbuildlib/K3d.groovy
index e6f58cc..eef214c 100644
--- a/src/com/cloudogu/ces/cesbuildlib/K3d.groovy
+++ b/src/com/cloudogu/ces/cesbuildlib/K3d.groovy
@@ -290,8 +290,13 @@ class K3d {
void configureComponents(components = [:]) {
def evals = []
components.each { componentName, componentConfig ->
- componentConfig.each { configKey, configValue ->
- evals << ".components.${componentName}.${configKey} = \\\"${configValue}\\\""
+ def disableComponent=componentConfig == null
+ if (disableComponent) {
+ evals << ".components.${componentName} = null"
+ } else {
+ componentConfig.each { configKey, configValue ->
+ evals << ".components.${componentName}.${configKey} = \\\"${configValue}\\\""
+ }
}
}
diff --git a/test/com/cloudogu/ces/cesbuildlib/K3dTest.groovy b/test/com/cloudogu/ces/cesbuildlib/K3dTest.groovy
index d9e01c1..82455ed 100644
--- a/test/com/cloudogu/ces/cesbuildlib/K3dTest.groovy
+++ b/test/com/cloudogu/ces/cesbuildlib/K3dTest.groovy
@@ -617,14 +617,16 @@ spec:
scriptMock.expectedShRetValueForScript.put("yq -i \".components.k8s-etcd.helmRepositoryNamespace = \\\"k8s\\\"\" k3d_values.yaml", "foo")
scriptMock.expectedShRetValueForScript.put("yq -i \".components.k8s-promtail.version = \\\"1.2.3\\\"\" k3d_values.yaml", "foo")
scriptMock.expectedShRetValueForScript.put("yq -i \".components.k8s-promtail.helmRepositoryNamespace = \\\"test_ns\\\"\" k3d_values.yaml", "foo")
+ scriptMock.expectedShRetValueForScript.put("yq -i \".components.k8s-blueprint-operator = null\" k3d_values.yaml", "foo")
// when
sut.configureComponents(["k8s-etcd" : ["version": "latest", "helmRepositoryNamespace": "k8s"],
- "k8s-promtail": ["version": "1.2.3", "helmRepositoryNamespace": "test_ns"]])
+ "k8s-promtail": ["version": "1.2.3", "helmRepositoryNamespace": "test_ns"],
+ "k8s-blueprint-operator": null])
// then
assertThat(scriptMock.allActualArgs[0].trim()).isEqualTo("whoami".trim())
assertThat(scriptMock.allActualArgs[1].trim()).isEqualTo("cat /etc/passwd | grep jenkins".trim())
- assertThat(scriptMock.allActualArgs[2].trim()).isEqualTo("yq -i \".components.k8s-etcd.version = \\\"latest\\\" | .components.k8s-etcd.helmRepositoryNamespace = \\\"k8s\\\" | .components.k8s-promtail.version = \\\"1.2.3\\\" | .components.k8s-promtail.helmRepositoryNamespace = \\\"test_ns\\\"\" k3d_values.yaml".trim())
+ assertThat(scriptMock.allActualArgs[2].trim()).isEqualTo("yq -i \".components.k8s-etcd.version = \\\"latest\\\" | .components.k8s-etcd.helmRepositoryNamespace = \\\"k8s\\\" | .components.k8s-promtail.version = \\\"1.2.3\\\" | .components.k8s-promtail.helmRepositoryNamespace = \\\"test_ns\\\" | .components.k8s-blueprint-operator = null\" k3d_values.yaml".trim())
}
}