Files
kubernetes-dashboard-deploy…/wait-for-deployments.sh
T
feedc0de 9ae5e84d97
Validate and deploy Kubernetes Dashboard / validate (push) Successful in 17s
Validate and deploy Kubernetes Dashboard / deploy (push) Successful in 24s
Fix CI/CD
2026-09-05 18:17:06 +02:00

45 lines
1.4 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
namespace=${NAMESPACE:-kubernetes-dashboard}
timeout_seconds=${DEPLOYMENT_TIMEOUT_SECONDS:-600}
poll_seconds=${DEPLOYMENT_POLL_SECONDS:-5}
if [[ "$#" -eq 0 ]]; then
echo "Usage: wait-for-deployments.sh DEPLOYMENT..." >&2
exit 2
fi
for deployment in "$@"; do
deadline=$((SECONDS + timeout_seconds))
state="not observed"
complete=false
while ((SECONDS < deadline)); do
state=$(kubectl --namespace "${namespace}" get "deployment/${deployment}" \
--output=jsonpath='{.metadata.generation}{"|"}{.status.observedGeneration}{"|"}{.spec.replicas}{"|"}{.status.updatedReplicas}{"|"}{.status.readyReplicas}{"|"}{.status.availableReplicas}{"\n"}')
IFS='|' read -r generation observed desired updated ready available <<< "${state}"
observed=${observed:-0}
desired=${desired:-0}
updated=${updated:-0}
ready=${ready:-0}
available=${available:-0}
if [[ "${observed}" -ge "${generation}" \
&& "${updated}" -eq "${desired}" \
&& "${ready}" -eq "${desired}" \
&& "${available}" -eq "${desired}" ]]; then
echo "deployment/${deployment} is ready (${ready}/${desired})"
complete=true
break
fi
sleep "${poll_seconds}"
done
if [[ "${complete}" != true ]]; then
echo "Timed out waiting for deployment/${deployment}; generation observed desired updated ready available: ${state}" >&2
exit 1
fi
done