11#! /bin/bash
22set -euo pipefail
33
4+ : ${IMAGE_NAME:= ghcr.io/ spinkube/ containerd-shim-spin/ node-installer: dev}
5+
46echo " === Step 1: Create a MiniKube cluster ==="
5- minikube start -p spin- minikube --driver=docker --container-runtime=containerd
7+ minikube start -p minikube --driver=docker --container-runtime=containerd
68
79echo " === Step 2: Create namespace and deploy RuntimeClass ==="
810kubectl create namespace kwasm || true
911kubectl apply -f ../deployments/workloads/runtime.yaml
1012
1113echo " === Step 3: Build and deploy the KWasm node installer ==="
12- if ! docker image inspect ghcr.io/spinkube/containerd-shim-spin/node-installer:dev > /dev/null 2>&1 ; then
14+ if ! docker image inspect $IMAGE_NAME > /dev/null 2>&1 ; then
1315 echo " Building node installer image..."
1416 PLATFORM=$( uname -m)
1517 if [ " $PLATFORM " = " x86_64" ]; then
@@ -23,28 +25,28 @@ if ! docker image inspect ghcr.io/spinkube/containerd-shim-spin/node-installer:d
2325 exit 1
2426 fi
2527
26- PLATFORM=$PLATFORM ARCH=$ARCH IMAGE_NAME=ghcr.io/spinkube/containerd-shim-spin/node-installer:dev make build-dev-installer-image
28+ PLATFORM=$PLATFORM ARCH=$ARCH IMAGE_NAME=$IMAGE_NAME make build-dev-installer-image
2729fi
2830
2931echo " Loading node installer image into MiniKube..."
30- minikube image load ghcr.io/spinkube/containerd-shim-spin/node-installer:dev -p spin- minikube
32+ minikube image load $IMAGE_NAME -p minikube
3133
3234NODE_NAME=$( kubectl get nodes --context=minikube -o jsonpath=' {.items[0].metadata.name}' )
3335cp kwasm-job.yml minikube-kwasm-job.yml
34- sed -i " s/spin-test-control-plane-provision-kwasm/spin- minikube-provision-kwasm/g" minikube-kwasm-job.yml
35- sed -i " s/spin-test-control-plane-provision-kwasm-dev/spin- minikube-provision-kwasm-dev/g" minikube-kwasm-job.yml
36+ sed -i " s/spin-test-control-plane-provision-kwasm/minikube-provision-kwasm/g" minikube-kwasm-job.yml
37+ sed -i " s/spin-test-control-plane-provision-kwasm-dev/minikube-provision-kwasm-dev/g" minikube-kwasm-job.yml
3638sed -i " s/spin-test-control-plane/${NODE_NAME} /g" minikube-kwasm-job.yml
3739
3840echo " Applying KWasm node installer job..."
3941kubectl apply -f ./minikube-kwasm-job.yml
4042
4143echo " Waiting for node installer job to complete..."
42- kubectl wait -n kwasm --for=condition=Ready pod --selector=job-name=spin- minikube-provision-kwasm --timeout=90s || true
43- kubectl wait -n kwasm --for=jsonpath=' {.status.phase}' =Succeeded pod --selector=job-name=spin- minikube-provision-kwasm --timeout=60s
44+ kubectl wait -n kwasm --for=condition=Ready pod --selector=job-name=minikube-provision-kwasm --timeout=90s || true
45+ kubectl wait -n kwasm --for=jsonpath=' {.status.phase}' =Succeeded pod --selector=job-name=minikube-provision-kwasm --timeout=60s
4446
45- if ! kubectl get pods -n kwasm | grep -q " spin- minikube-provision-kwasm.*Completed" ; then
47+ if ! kubectl get pods -n kwasm | grep -q " minikube-provision-kwasm.*Completed" ; then
4648 echo " Node installer job failed!"
47- kubectl logs -n kwasm $( kubectl get pods -n kwasm -o name | grep spin- minikube-provision-kwasm)
49+ kubectl logs -n kwasm $( kubectl get pods -n kwasm -o name | grep minikube-provision-kwasm)
4850 exit 1
4951fi
5052
@@ -62,9 +64,12 @@ echo "Waiting for service to be ready..."
6264sleep 10
6365
6466echo " Testing workload with curl..."
65- minikube service wasm-spin --url -p spin-minikube > service_url.txt
66- SERVICE_URL=$( cat service_url.txt)
67+ PORT=8080
68+ kubectl port-forward service/wasm-spin $PORT :80 &
69+ PORT_FORWARD_PID=$!
70+ sleep 10
6771
72+ SERVICE_URL=" http://localhost:$PORT "
6873MAX_RETRIES=3
6974RETRY_COUNT=0
7075SUCCESS=false
@@ -80,15 +85,17 @@ while [ $RETRY_COUNT -lt $MAX_RETRIES ] && [ "$SUCCESS" = false ]; do
8085 fi
8186done
8287
88+ kill $PORT_FORWARD_PID 2> /dev/null || true
89+
8390if [ " $SUCCESS " = true ]; then
8491 echo " === Integration Test Passed! ==="
85- minikube delete -p spin- minikube
92+ minikube delete -p minikube
8693 exit 0
8794else
8895 echo " === Integration Test Failed! ==="
8996 echo " Could not get a successful response from the workload."
9097 kubectl describe pods
9198 kubectl logs $( kubectl get pods -o name | grep wasm-spin)
92- minikube delete -p spin- minikube
99+ minikube delete -p minikube
93100 exit 1
94101fi
0 commit comments