-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathmain.sh
executable file
·30 lines (25 loc) · 1.03 KB
/
main.sh
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
#!/bin/bash
set -e
MAX_ATTEMPTS=${INPUT_MAX_ATTEMPTS:-10000}
source /util.sh
env_check
init_k8s
echo "Using KUBECONFIG=${KUBECONFIG}"
LOCKNAME=$(get_lock_name)
echo "Attempting lock via ${LOCKNAME}."
echo "If you need to override this lock to allow this build to continue, execute:"
echo " kubectl create secret generic $LOCKNAME --from-literal=next_build=$GITHUB_RUN_NUMBER --dry-run -o yaml | kubectl replace -f -"
lock_attempt=1
while :; do
secret_json=$(kubectl get secret $LOCKNAME -o json || echo "nope")
[[ "$secret_json" = "nope" ]] && {
echo "Creating and grabbing initial secret lock"
kubectl create secret generic $LOCKNAME --from-literal=next_build=${GITHUB_RUN_NUMBER}
exit 0
}
next_build=$(jq <<<"$secret_json" -r '.data.next_build' | base64 -d)
[[ $next_build -eq $GITHUB_RUN_NUMBER ]] && { echo "Lock acquired."; exit 0; }
echo "Couldn't get lock ($next_build "'!'"= $GITHUB_RUN_NUMBER). Attempt $lock_attempt / ${MAX_ATTEMPTS}. Sleeping..."
sleep 10
((lock_attempt++))
done