From 33f7751a5be353165602dd5b45317325f17477e2 Mon Sep 17 00:00:00 2001 From: Brad Davidson Date: Wed, 8 May 2024 19:15:51 +0000 Subject: [PATCH] Update CI tests Bump k3s to v1.29.4+k3s1, and add basic sig-api-machinery e2e against sqlite and nats Signed-off-by: Brad Davidson --- scripts/test-conformance | 34 ++++++++++++++++++++++++++++++++++ scripts/test-helpers | 9 ++++++--- scripts/test-runner | 1 + 3 files changed, 41 insertions(+), 3 deletions(-) create mode 100755 scripts/test-conformance diff --git a/scripts/test-conformance b/scripts/test-conformance new file mode 100755 index 00000000..f27e950f --- /dev/null +++ b/scripts/test-conformance @@ -0,0 +1,34 @@ +#!/bin/bash +set -e +cd $(dirname $0)/.. + +# sig-api-machinery e2e tests take about 20 minutes to complete. +# Only run conformance on sqlite and nats, to reduce CI run time. +if [[ "$LABEL" != "sqlite" ]] && [[ "$LABEL" != "nats-embedded" ]]; then + echo "Skipping conformance" + exit +fi + +test-conformance() { + local count=$(inc-count conformance) + local testID=$(basename $TEST_DIR) + local name=$(echo "conformance-$count-$testID" | tee $TEST_DIR/conformance/$count/metadata/name) + local server_name=$(cat $TEST_DIR/servers/1/metadata/name) + local version=$(docker exec $server_name k3s --version | grep -Eo 'v[0-9]+\.[0-9]+\.[0-9]+') + echo "Running conformance tests against $(grep server: $KUBECONFIG)" + # We can't just mount $KUBECONFIG as a volume, because in CI this script is + # also running in a docker container, and the mount will not work. + docker container run \ + --rm -d --name $name \ + --entrypoint /usr/bin/sh \ + -e "KUBECONFIG=/root/.kube/config" \ + -e "E2E_FOCUS=sig-api-machinery" \ + -e "E2E_SKIP=StorageVersionAPI|Slow|Flaky" \ + -e "E2E_EXTRA_ARGS=--ginkgo.fail-fast" \ + registry.k8s.io/conformance:$version \ + -c 'mkdir -p /root/.kube; sleep 36000' + docker cp $KUBECONFIG $name:/root/.kube/config + docker exec $name /usr/local/bin/kubeconformance +} + +test-conformance diff --git a/scripts/test-helpers b/scripts/test-helpers index ff8ba8a8..500e4260 100755 --- a/scripts/test-helpers +++ b/scripts/test-helpers @@ -218,9 +218,10 @@ provision-server() { -p $testPort:6443 \ -e K3S_DEBUG=true \ -e K3S_DATASTORE_ENDPOINT=$K3S_DATASTORE_ENDPOINT \ - ${K3S_IMAGE:-docker.io/rancher/k3s:v1.26.9-k3s1} server \ + ${K3S_IMAGE:-docker.io/rancher/k3s:v1.29.4-k3s1} server \ + --kube-apiserver-arg=feature-gates=WatchList=true \ --disable=coredns,servicelb,traefik,local-storage,metrics-server \ - --disable-agent --disable-scheduler --disable-cloud-controller --disable-kube-proxy --disable-network-policy + --disable-network-policy local ip=$(docker container inspect --format '{{ .NetworkSettings.IPAddress }}' $name | tee $TEST_DIR/servers/$count/metadata/ip) local port=$(docker container inspect --format '{{range $k, $v := .NetworkSettings.Ports}}{{printf "%s\n" $k}}{{end}}' $name | head -n 1 | cut -d/ -f1 | tee $TEST_DIR/servers/$count/metadata/port) @@ -248,7 +249,9 @@ provision-kine() { docker container run \ -d --name $name \ $KINE_ENV \ - $KINE_IMAGE --endpoint $KINE_ENDPOINT + $KINE_IMAGE \ + --watch-progress-notify-interval=5s \ + --endpoint $KINE_ENDPOINT local ip=$(docker container inspect --format '{{.NetworkSettings.IPAddress}}' $name | tee $TEST_DIR/kine/$count/metadata/ip) local port=$(docker container inspect --format '{{range $k, $v := .NetworkSettings.Ports}}{{printf "%s\n" $k}}{{end}}' $name | head -n 1 | cut -d/ -f1 | tee $TEST_DIR/kine/$count/metadata/port) diff --git a/scripts/test-runner b/scripts/test-runner index 0417df8a..ff255c50 100755 --- a/scripts/test-runner +++ b/scripts/test-runner @@ -13,3 +13,4 @@ provision-database $DB_ARGS start-test $@ ./scripts/test-load +./scripts/test-conformance