forked from oferalt-sb/jenkins-workshop
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathreset-workshop.sh
More file actions
executable file
·72 lines (61 loc) · 2.68 KB
/
reset-workshop.sh
File metadata and controls
executable file
·72 lines (61 loc) · 2.68 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#!/usr/bin/env bash
set -e
DOTENV=./.env
DOTENV_EXAMPLE=./.env.example
if test -f "$DOTENV"; then
export $(cat "$DOTENV" | xargs)
else
echo "INFO: Missing .env file, using defaults from ${DOTENV_EXAMPLE}"
export $(cat "$DOTENV_EXAMPLE" | xargs)
fi
if [ "$1" == "cleanup" ]; then
echo "Cleaning Jenkins workshop: '${WORKSHOP_NAME}'..."
minikube delete --profile ${WORKSHOP_NAME}
exit 0
fi
OS="$(uname -s)"
if [ "${OS}" == "Darwin" ]; then
DRIVER="hyperkit"
elif [ "${OS}" == "Linux" ]; then
DRIVER="kvm2"
elif [ "$(expr substr $(uname -s) 1 10)" == "MINGW64_NT" ]; then
echo "Unknown OS type, exiting."
exit 1
fi
echo "Resetting Jenkins workshop: '${WORKSHOP_NAME}'..."
minikube delete --profile ${WORKSHOP_NAME} 2> /dev/null
minikube start \
--driver=${DRIVER} \
--interactive=true \
--cpus=${CPUS} \
--memory=${MEMORY} \
--profile=${WORKSHOP_NAME}
kubectl config use-context ${WORKSHOP_NAME}
NODE_PORT=32000
NODE_IP=$(kubectl get nodes --namespace default -o jsonpath="{.items[0].status.addresses[0].address}")
JENKINS_URL="http://${NODE_IP}:${NODE_PORT}"
echo "Installing Jenkins..."
helm repo add stable https://kubernetes-charts.storage.googleapis.com > /dev/null
helm uninstall ${WORKSHOP_NAME} &> /dev/null || true
helm install --atomic \
--timeout 20m0s \
--version 2.1.0 \
--values values.yaml \
--set "master.nodePort=${NODE_PORT}" \
--set-string "master.containerEnv[0].value=${WORKSHOP_NAME}" \
--set-string "master.containerEnv[1].value=${GITHUB_REPO_NAME}" \
--set-string "master.containerEnv[2].value=${GITHUB_USER_NAME}" \
--set-string "master.containerEnv[3].value=${GITHUB_API_TOKEN}" \
--set-string "master.jenkinsUrl=${JENKINS_URL}" \
${WORKSHOP_NAME} 'stable/jenkins' > /dev/null
ADMIN_PASSWORD="$(kubectl get secret --namespace default ${WORKSHOP_NAME} -o jsonpath='{.data.jenkins-admin-password}' | base64 --decode)"
POD_NAME=$(kubectl get pods --selector=app.kubernetes.io/instance=${WORKSHOP_NAME} -o name)
NGROK_URL="$(kubectl logs ${POD_NAME} -c ngrok | grep 'started tunnel' | tail -1 | sed 's/^.*url=//')"
echo "Done!"
printf "\n\n"
echo "===================================================================================="
echo "Jenkins Admin user URL: ${JENKINS_URL}/login"
echo "Jenkins Admin user name: admin"
echo "Jenkins Admin user password: ${ADMIN_PASSWORD}"
echo "GitHub WebHook URL: (NGROK Channel) ${NGROK_URL}/github-webhook/"
echo "===================================================================================="