Skip to content

Commit

Permalink
adding scripts back
Browse files Browse the repository at this point in the history
  • Loading branch information
maknop committed Oct 22, 2024
1 parent 4cb5e35 commit 7539e4b
Show file tree
Hide file tree
Showing 2 changed files with 172 additions and 0 deletions.
41 changes: 41 additions & 0 deletions ci/minikube_e2e_tests.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
#!/bin/bash

echo "$MINIKUBE_SSH_KEY" > minikube-ssh-ident

set -exv

DOCKER_CONF="$PWD/.docker"
mkdir -p "$DOCKER_CONF"
docker login -u="$QUAY_USER" -p="$QUAY_TOKEN" quay.io

IMG=$IMAGE_NAME:$IMAGE_TAG BASE_IMG=$BASE_IMG make docker-build
IMG=$IMAGE_NAME:$IMAGE_TAG make docker-push

tempid=$(docker create "$IMAGE_NAME:$IMAGE_TAG")
docker cp "${tempid}:/manifest.yaml" .
docker rm $tempid

docker build -f Dockerfile.test --build-arg BASE_IMAGE=${BASE_IMG} -t $CONTAINER_NAME .

set +e
docker run -i \
--name $CONTAINER_NAME \
-v $PWD:/workspace:ro,Z \
-v `$PWD/bin/setup-envtest use -p path`:/bins:ro \
-e IMAGE_NAME=$IMAGE_NAME \
-e IMAGE_TAG=$IMAGE_TAG \
-e QUAY_USER=$QUAY_USER \
-e QUAY_TOKEN=$QUAY_TOKEN \
-e MINIKUBE_HOST=$MINIKUBE_HOST \
-e MINIKUBE_ROOTDIR=$MINIKUBE_ROOTDIR \
-e MINIKUBE_USER=$MINIKUBE_USER \
-e CLOWDER_VERSION=$CLOWDER_VERSION \
$BASE_IMG \
./ci/minikube_e2e_tests_inner.sh
TEST_RESULT=$?

docker cp $CONTAINER_NAME:/container_workspace/artifacts/ $PWD

set -e

exit $TEST_RESULT
131 changes: 131 additions & 0 deletions ci/minikube_e2e_tests_inner.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,131 @@
#!/bin/bash

set -exv

# copy the workspace from the Jenkins job off the ro volume into this container
mkdir /container_workspace
cp -r /workspace/. /container_workspace
cd /container_workspace

mkdir -p /container_workspace/bin
cp /opt/app-root/src/go/bin/* /container_workspace/bin

export KUBEBUILDER_ASSETS=/container_workspace/testbin/bin

curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl.sha256"
echo "$(cat kubectl.sha256) ./kubectl" | sha256sum --check
chmod +x kubectl
mv kubectl /container_workspace/bin
export PATH="/container_workspace/bin:$PATH"



(
set -x; cd "$(mktemp -d)" &&
OS="$(uname | tr '[:upper:]' '[:lower:]')" &&
ARCH="$(uname -m | sed -e 's/x86_64/amd64/' -e 's/\(arm\)\(64\)\?.*/\1\2/' -e 's/aarch64$/arm64/')" &&
KREW="krew-${OS}_${ARCH}" &&
curl -fsSLO "https://github.com/kubernetes-sigs/krew/releases/latest/download/${KREW}.tar.gz" &&
tar zxvf "${KREW}.tar.gz" &&
./"${KREW}" install krew
)

source build/template_check.sh

export PATH="${KREW_ROOT:-$HOME/.krew}/bin:$PATH"
export PATH="/bins:$PATH"

chmod 600 minikube-ssh-ident

ssh -o StrictHostKeyChecking=no $MINIKUBE_USER@$MINIKUBE_HOST -i minikube-ssh-ident "minikube delete"
ssh -o StrictHostKeyChecking=no $MINIKUBE_USER@$MINIKUBE_HOST -i minikube-ssh-ident "minikube start --cpus 6 --disk-size 10GB --memory 16000MB --kubernetes-version=1.28.8 --addons=metrics-server --disable-optimizations"

export MINIKUBE_IP=`ssh -o StrictHostKeyChecking=no $MINIKUBE_USER@$MINIKUBE_HOST -i minikube-ssh-ident "minikube ip"`

scp -o StrictHostKeyChecking=no -i minikube-ssh-ident $MINIKUBE_USER@$MINIKUBE_HOST:$MINIKUBE_ROOTDIR/.minikube/profiles/minikube/client.key ./
scp -i minikube-ssh-ident $MINIKUBE_USER@$MINIKUBE_HOST:$MINIKUBE_ROOTDIR/.minikube/profiles/minikube/client.crt ./
scp -i minikube-ssh-ident $MINIKUBE_USER@$MINIKUBE_HOST:$MINIKUBE_ROOTDIR/.minikube/ca.crt ./

ssh -o ExitOnForwardFailure=yes -f -N -L 127.0.0.1:8444:$MINIKUBE_IP:8443 -i minikube-ssh-ident $MINIKUBE_USER@$MINIKUBE_HOST

cat > kube-config <<- EOM
apiVersion: v1
clusters:
- cluster:
certificate-authority: $PWD/ca.crt
server: https://127.0.0.1:8444
name: 127-0-0-1:8444
contexts:
- context:
cluster: 127-0-0-1:8444
user: remote-minikube
name: remote-minikube
users:
- name: remote-minikube
user:
client-certificate: $PWD/client.crt
client-key: $PWD/client.key
current-context: remote-minikube
kind: Config
preferences: {}
EOM

export PATH="$KUBEBUILDER_ASSETS:$PATH"
export PATH="/root/go/bin:$PATH"

export KUBECONFIG=$PWD/kube-config
export KUBECTL_CMD="kubectl "
$KUBECTL_CMD config use-context remote-minikube
$KUBECTL_CMD get pods --all-namespaces=true

source build/kube_setup.sh

export IMAGE_TAG=`git rev-parse --short=8 HEAD`

$KUBECTL_CMD create namespace clowder-system

mkdir artifacts

cat manifest.yaml > artifacts/manifest.yaml

sed -i "s/clowder:latest/clowder:$IMAGE_TAG/g" manifest.yaml

$KUBECTL_CMD apply -f manifest.yaml --validate=false

## The default generated config isn't quite right for our tests - so we'll create a new one and restart clowder
$KUBECTL_CMD apply -f clowder-config.yaml -n clowder-system
$KUBECTL_CMD delete pod -n clowder-system -l operator-name=clowder

# Wait for operator deployment...
$KUBECTL_CMD rollout status deployment clowder-controller-manager -n clowder-system

$KUBECTL_CMD krew install kuttl

set +e

$KUBECTL_CMD get env
$KUBECTL_CMD get env

source build/run_kuttl.sh --report xml
KUTTL_RESULT=$?
mv kuttl-report.xml artifacts/junit-kuttl.xml

CLOWDER_PODS=$($KUBECTL_CMD get pod -n clowder-system -o jsonpath='{.items[*].metadata.name}')
for pod in $CLOWDER_PODS; do
$KUBECTL_CMD logs $pod -n clowder-system > artifacts/$pod.log
$KUBECTL_CMD logs $pod -n clowder-system | ./parse-controller-logs > artifacts/$pod-parsed-controller-logs.log
done

# Grab the metrics
$KUBECTL_CMD port-forward svc/clowder-controller-manager-metrics-service-non-auth -n clowder-system 8080 &
sleep 5
curl 127.0.0.1:8080/metrics > artifacts/clowder-metrics

STRIMZI_PODS=$($KUBECTL_CMD get pod -n strimzi -o jsonpath='{.items[*].metadata.name}')
for pod in $STRIMZI_PODS; do
$KUBECTL_CMD logs $pod -n strimzi > artifacts/$pod.log
done
set -e

exit $KUTTL_RESULT

0 comments on commit 7539e4b

Please sign in to comment.