Skip to content

Commit 3e78df2

Browse files
committed
gh-actions: Add test with minikube deployment
1 parent 819cf61 commit 3e78df2

File tree

2 files changed

+129
-1
lines changed

2 files changed

+129
-1
lines changed

.github/workflows/go-build.yaml

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,11 @@
1-
on: [push, pull_request]
1+
on:
2+
push:
3+
paths-ignore:
4+
- '**.md'
5+
pull_request:
6+
paths-ignore:
7+
- '**.md'
8+
workflow_dispatch:
29

310
jobs:
411
build:
@@ -54,3 +61,7 @@ jobs:
5461

5562
- name: Image digest
5663
run: echo ${{ steps.docker_build.outputs.digest }}
64+
65+
- name: Test
66+
run: |
67+
./run-test.sh "ghcr.io/opsboost/iss-operator:latest"

run-test.sh

Lines changed: 117 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,117 @@
1+
#!/usr/bin/env bash
2+
3+
[[ "$TRACE" ]] && set -x
4+
set -eo pipefail
5+
6+
INSTALL_MINIKUBE="1"
7+
ARCH=amd64
8+
9+
pod_running() {
10+
if [ "$(kubectl get pods -A | grep "${1}" | awk '{print $4}')" != "Running" ]; then
11+
echo "1"
12+
else
13+
echo "0"
14+
fi
15+
}
16+
17+
pod_name() {
18+
local name
19+
name=$(kubectl get pods -A | grep "${1}" | awk '{print $2}')
20+
echo "$name"
21+
}
22+
23+
container_name() {
24+
local arr
25+
local name
26+
arr=(${1//:/ })
27+
name=${arr[0]}
28+
arr=(${name//\// })
29+
name=${arr[2]}
30+
echo "$name"
31+
}
32+
33+
minikube_install() {
34+
sudo apt install -y podman curl
35+
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-${ARCH}
36+
curl -LO "https://dl.k8s.io/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/${ARCH}/kubectl.sha256"
37+
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/${ARCH}/kubectl"
38+
echo "$(cat kubectl.sha256) kubectl" | sha256sum --check
39+
sudo install minikube-linux-${ARCH} /usr/local/bin/minikube
40+
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
41+
kubectl version --client
42+
}
43+
44+
minikube_deinstall() {
45+
minikube stop
46+
minikube delete --all
47+
}
48+
49+
check_dependencies() {
50+
for i in "${DEPS[@]}"
51+
do
52+
if [[ -z $(which "${i}") ]]; then
53+
error "Could not find ${i}"
54+
exit 1
55+
fi
56+
done
57+
}
58+
59+
main() {
60+
local image="${1}"
61+
62+
# Get container name
63+
local container
64+
container=$(container_name "${image}")
65+
66+
# Check for minikube
67+
# Install if absent and installation enabled
68+
if [[ -z $(which "minikube") ]]; then
69+
printf "Could not find minikube"
70+
if [ "$INSTALL_MINIKUBE" -eq "1" ]; then
71+
minikube_install
72+
fi
73+
fi
74+
75+
# Check for a running minikube
76+
if minikube status | grep 'Running'; then
77+
printf "minikube is already running.\n"
78+
printf "To continue, stop minikube and restart script\n"
79+
exit 1
80+
fi
81+
82+
# Run minikube
83+
minikube start --driver=podman --container-runtime=cri-o
84+
85+
# Deploy
86+
kubectl create deployment "${container}" --image="${image}"
87+
88+
# Wait for container to come up
89+
sleep 30
90+
kubectl get pods -A -o wide
91+
92+
# Get pod name
93+
local pod
94+
pod=$(pod_name "${container}")
95+
96+
# Show logs
97+
kubectl logs "${pod}"
98+
99+
local r
100+
r=$(pod_running "${pod}")
101+
102+
if [ "$r" -eq 0 ]; then
103+
printf "Deployment successful\n"
104+
else
105+
printf "Deployment failed\n"
106+
local fail=1
107+
fi
108+
109+
# Cleanup
110+
minikube_deinstall
111+
112+
if [ "$fail" -eq "1" ]; then
113+
exit 1
114+
fi
115+
}
116+
117+
main "$@"

0 commit comments

Comments
 (0)