]> git.immae.eu Git - github/fretlink/ansible-clever.git/blob - files/clever-wait-deploy.sh
98c5c37a4d8bb0f266870a3935f08fd958d260db
[github/fretlink/ansible-clever.git] / files / clever-wait-deploy.sh
1 #!/usr/bin/env bash
2
3 set -ueo pipefail
4
5 VERBOSE=${VERBOSE:-}
6 lastCleverActivity=""
7
8 function cleverActivity {
9 lastCleverActivity=$(clever activity)
10 }
11
12 function ensure {
13 if [ "$?" == "1" ]
14 then
15 echo "✗ Deployment failed!"
16 fi
17 VERBOSE=true
18 verbose
19 }
20
21 trap ensure EXIT ERR
22
23 function deploying {
24 checkStatus "$1" "IN PROGRESS"
25 }
26
27 function deployed {
28 checkStatus "$1" "OK"
29 }
30
31 function inactive {
32 checkStatus "$1" "" "-v"
33 }
34
35 function checkStatus {
36 local commit="$1"
37 local status="$2"
38
39 cleverActivity
40 echo "${lastCleverActivity}" | tail -n1 | grep ${3:+ "${3}"} -q -E "${status}.*DEPLOY.*${commit}"
41 }
42
43 function verbose {
44 if [ -n "${VERBOSE}" ]; then
45 echo -e "\\nLast clever activity:"
46 echo -e "${lastCleverActivity}\\n"
47 fi
48 }
49
50 function check {
51 local commit="$1"
52 local samplingTime=5
53
54 echo "️▫ Waiting for deployment to start..."
55 while inactive "$commit"
56 do
57 verbose
58 sleep $samplingTime
59 done
60
61 # Wait for completion
62 echo "▪ Deployment in progress..."
63 while deploying "$commit"
64 do
65 verbose
66 sleep $samplingTime
67 done
68
69 deployed "$commit"
70 echo "✓ Deployment done."
71 }
72
73 function getHeadRev {
74 local chdir="$1/.git"
75
76 git --git-dir="$chdir" rev-parse HEAD
77 }
78
79 workdir="$(pwd)"
80 check "$(getHeadRev "${workdir}")"