-
Notifications
You must be signed in to change notification settings - Fork 62
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
2 changed files
with
172 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |