k3s/scripts/build-tests-sonobuoy

73 lines
2.3 KiB
Bash
Executable File

#!/bin/bash
set -e
cd $(dirname $0)/..
REPO="k3s-int-tests"
OUTFILE="./dist/artifacts/k3s-int-tests.yaml"
# Compile all integration tests and containerize them
mkdir -p dist/artifacts
# Integration tests under /pkg
PKG_TO_TEST=$(find ./pkg/ -type f -name "*_int_test.go" | sed -r 's|/[^/]+$||' |sort -u)
for i in $PKG_TO_TEST; do
name=$(echo "${i##*/}")
echo $name
go test -c -v -ldflags "-X 'github.com/k3s-io/k3s/tests/integration.existingServer=True'" -o dist/artifacts/k3s-integration-$name.test $i -run Integration
done
# Integration tests under /tests
PKG_TO_TEST=$(find ./tests/integration -type f -name "*_int_test.go" | sed -r 's|/[^/]+$||' |sort -u)
for i in $PKG_TO_TEST; do
name=$(echo "${i##*/}")
echo $name
go test -c -v -ldflags "-X 'github.com/k3s-io/k3s/tests/integration.existingServer=True'" -o dist/artifacts/k3s-integration-$name.test $i -run Integration
done
docker build -f ./tests/integration/Dockerfile.test -t $REPO .
docker save $REPO -o ./dist/artifacts/$REPO.tar
sudo mkdir -p /var/lib/rancher/k3s/agent/images
sudo mv ./dist/artifacts/$REPO.tar /var/lib/rancher/k3s/agent/images/
# If k3s is already running, attempt to import the image
if [[ "$(pgrep k3s | wc -l)" -gt 0 ]]; then
sudo ./dist/artifacts/k3s ctr images import /var/lib/rancher/k3s/agent/images/$REPO.tar
fi
# Cleanup compiled tests
rm dist/artifacts/k3s-integration-*
# Generate the sonobuoy plugin and inject the necessary
# podSpec and volume mount modifications
PODSPEC=\
' hostNetwork: true
volumes:
- name: var-k3s
hostPath:
path: /var/lib/rancher/k3s/
type: Directory
- name: etc-k3s
hostPath:
path: /etc/rancher/k3s/
type: Directory'
VOLMOUNTS=\
' - mountPath: /var/lib/rancher/k3s/
name: var-k3s
- mountPath: /etc/rancher/k3s/
name: etc-k3s'
sonobuoy gen plugin \
--format=junit \
--image ${REPO} \
--show-default-podspec \
--name k3s-int \
--type job \
--cmd ./test-runner.sh \
--env KUBECONFIG=/etc/rancher/k3s/k3s.yaml \
> $OUTFILE
awk -v PS="$PODSPEC" '/podSpec:/{print;print PS;next}1' $OUTFILE > ./dist/artifacts/temp.yaml
mv ./dist/artifacts/temp.yaml $OUTFILE
awk -v VM="$VOLMOUNTS" '/volumeMounts:/{print;print VM;next}1' $OUTFILE > ./dist/artifacts/temp.yaml
mv ./dist/artifacts/temp.yaml $OUTFILE