Skip to content

Commit

Permalink
Move all of the kubectl version selection code out to the github acti…
Browse files Browse the repository at this point in the history
…ons definition

All kind versions will be tested with the default kubectl version (currently 1.22.17), as well as the version that corresponds to the k8s version.
  • Loading branch information
jervi committed Jan 30, 2024
1 parent d81f2f8 commit c1fdec7
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 46 deletions.
33 changes: 21 additions & 12 deletions .github/workflows/integration-tests-kubernetes.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,17 +9,26 @@ jobs:
it-test-kubernetes:
strategy:
matrix:
kubernetes-image:
# Consider updating the kubectl version mapping in KubernetesCluster.java when adding new kubernetes versions
- "kindest/node:v1.29.0@sha256:eaa1450915475849a73a9227b8f201df25e55e268e5d619312131292e324d570"
- "kindest/node:v1.28.0@sha256:b7a4cad12c197af3ba43202d3efe03246b3f0793f162afb40a33c923952d5b31"
- "kindest/node:v1.27.3@sha256:3966ac761ae0136263ffdb6cfd4db23ef8a83cba8a463690e98317add2c9ba72"
- "kindest/node:v1.26.6@sha256:6e2d8b28a5b601defe327b98bd1c2d1930b49e5d8c512e1895099e4504007adb"
- "kindest/node:v1.25.11@sha256:227fa11ce74ea76a0474eeefb84cb75d8dad1b08638371ecf0e86259b35be0c8"
- "kindest/node:v1.24.15@sha256:7db4f8bea3e14b82d12e044e25e34bd53754b7f2b0e9d56df21774e6f66a70ab"
- "kindest/node:v1.23.17@sha256:59c989ff8a517a93127d4a536e7014d28e235fb3529d9fba91b3951d461edfdb"
- "kindest/node:v1.22.17@sha256:f5b2e5698c6c9d6d0adc419c0deae21a425c07d81bbf3b6a6834042f25d4fba2"
- "kindest/node:v1.21.14@sha256:8a4e9bb3f415d2bb81629ce33ef9c76ba514c14d707f9797a01e3216376ba093"
kubectl-version:
- 1.22.17
include:
- kubernetes-image: "kindest/node:v1.29.0@sha256:eaa1450915475849a73a9227b8f201df25e55e268e5d619312131292e324d570"
kubectl-version: 1.29.1
- kubernetes-image: "kindest/node:v1.28.0@sha256:b7a4cad12c197af3ba43202d3efe03246b3f0793f162afb40a33c923952d5b31"
kubectl-version: 1.28.6
- kubernetes-image: "kindest/node:v1.27.3@sha256:3966ac761ae0136263ffdb6cfd4db23ef8a83cba8a463690e98317add2c9ba72"
kubectl-version: 1.27.10
- kubernetes-image: "kindest/node:v1.26.6@sha256:6e2d8b28a5b601defe327b98bd1c2d1930b49e5d8c512e1895099e4504007adb"
kubectl-version: 1.26.13
- kubernetes-image: "kindest/node:v1.25.11@sha256:227fa11ce74ea76a0474eeefb84cb75d8dad1b08638371ecf0e86259b35be0c8"
kubectl-version: 1.25.16
- kubernetes-image: "kindest/node:v1.24.15@sha256:7db4f8bea3e14b82d12e044e25e34bd53754b7f2b0e9d56df21774e6f66a70ab"
kubectl-version: 1.24.17
- kubernetes-image: "kindest/node:v1.23.17@sha256:59c989ff8a517a93127d4a536e7014d28e235fb3529d9fba91b3951d461edfdb"
kubectl-version: 1.23.17
- kubernetes-image: "kindest/node:v1.22.17@sha256:f5b2e5698c6c9d6d0adc419c0deae21a425c07d81bbf3b6a6834042f25d4fba2"
- kubernetes-image: "kindest/node:v1.21.14@sha256:8a4e9bb3f415d2bb81629ce33ef9c76ba514c14d707f9797a01e3216376ba093"
kubectl-version: 1.21.14
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
Expand Down Expand Up @@ -49,4 +58,4 @@ jobs:
- name: Kubernetes Provider Integration Tests
run: |
version=$(echo '${{ matrix.kubernetes-image }}' | grep -o 'v[0-9]*\.[0-9]*')
./gradlew --build-cache :clouddriver-kubernetes:integrationTest -Pkubernetes-image=${{ matrix.kubernetes-image }} -Pkubernetes-version=${version}
./gradlew --build-cache :clouddriver-kubernetes:integrationTest -Pkubernetes-image=${{ matrix.kubernetes-image }} -Pkubectl-version=${{ matrix.kubectl-version }} -Pkubernetes-version=${version}
1 change: 1 addition & 0 deletions clouddriver-kubernetes/clouddriver-kubernetes.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -126,6 +126,7 @@ task integrationTest(type: Test) {

environment "IT_BUILD_HOME", "$project.buildDir/it"
environment "IMAGE", project.getProperties().get("kubernetes-image")
environment "KUBECTL_VERSION", project.getProperties().get("kubectl-version")
environment "KUBERNETES_VERSION", project.getProperties().get("kubernetes-version")
useJUnitPlatform()

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,14 +42,13 @@
import java.util.Map;
import java.util.Optional;
import java.util.concurrent.TimeUnit;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.springframework.util.FileCopyUtils;

public class KubernetesCluster {

private static KubernetesCluster INSTANCE;
private static final String IMAGE = System.getenv("IMAGE");
private static final String KUBECTL_VERSION = System.getenv("KUBECTL_VERSION");
private static final String KIND_VERSION = "0.20.0";
private static final Path IT_BUILD_HOME = Paths.get(System.getenv("IT_BUILD_HOME"));
private static final Path KUBECFG_PATH = Paths.get(IT_BUILD_HOME.toString(), "kubecfg.yml");
Expand Down Expand Up @@ -162,7 +161,7 @@ private void downloadDependencies() throws IOException {
if (!kubectl.toFile().exists()) {
String url =
String.format(
"https://cdn.dl.k8s.io/release/v%s/bin/%s/%s/kubectl", getKubectlVersion(), os, arch);
"https://cdn.dl.k8s.io/release/v%s/bin/%s/%s/kubectl", KUBECTL_VERSION, os, arch);
System.out.println("Downloading kubectl from " + url);
downloadFile(kubectl, url);
}
Expand Down Expand Up @@ -209,35 +208,4 @@ private String runKindCmd(String args) throws IOException, InterruptedException
.isEqualTo(0);
return output;
}

/**
* Returns the kubectl version to use for the given kubernetes version. This is used to download
* the correct kubectl binary for the cluster.
*
* @return The kubectl version to use.
*/
private static String getKubectlVersion() {
Pattern pattern = Pattern.compile("v([0-9]*\\.[0-9]*)");
Matcher matcher = pattern.matcher(IMAGE);
matcher.find();
String kubernetesVersion = matcher.group(1);

Map<String, String> kubectlVersionMap =
Map.of(
"1.21", "1.21.14",
"1.22", "1.22.17",
"1.23", "1.23.17",
"1.24", "1.24.17",
"1.25", "1.25.16",
"1.26", "1.26.12",
"1.27", "1.27.9",
"1.28", "1.28.5",
"1.29", "1.29.0");

String kubectlVersion = kubectlVersionMap.getOrDefault(kubernetesVersion, "1.29.0");

System.out.println(
"Using kubectl version " + kubectlVersion + " for kubernetes version " + matcher.group(1));
return kubectlVersion;
}
}

0 comments on commit c1fdec7

Please sign in to comment.