Files
ERP-core/deploy/on-hold/scripts/deploy-frontend.sh
T
ImanThiyanga 8e472ac996
CI/CD - ERP Core / scripts (pull_request) Failing after 12m21s
CI/CD - ERP Core / e2e-typecheck (pull_request) Failing after 13m13s
CI/CD - ERP Core / frontend (pull_request) Failing after 14m5s
CI/CD - ERP Core / backend (pull_request) Failing after 14m57s
CI/CD - ERP Core / detect (pull_request) Failing after 13m42s
CI/CD - ERP Core / Build & Deploy (pull_request) Failing after 12m47s
CI/CD - ERP Core / ci-ok (pull_request) Failing after 14m58s
initialising for ci-cd pipeline
2026-09-16 11:53:55 +05:30

60 lines
2.1 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/usr/bin/env bash
# deploy.yml › frontend — replace the environment's web container with erp-web:<FRONTEND_HASH>
# and wait for it to serve /login. On failure the previously deployed image is started again
# and the job fails.
# shellcheck source=common.sh
source "$(dirname "${BASH_SOURCE[0]}")/common.sh"
: "${ERP_ENV:?ERP_ENV is required}" "${FRONTEND_HASH:?FRONTEND_HASH is required}"
load_env "$ERP_ENV"
is_rollback="${IS_ROLLBACK:-false}"
docker image inspect "$WEB_IMAGE_REPO:$FRONTEND_HASH" >/dev/null 2>&1 ||
fail "image $WEB_IMAGE_REPO:$FRONTEND_HASH not found (pruned?)"
start_web() {
docker rm -f "$WEB_CONTAINER" >/dev/null 2>&1 || true
docker run -d --name "$WEB_CONTAINER" \
-p "127.0.0.1:$WEB_PORT:3000" \
--memory=512m --cpus=1 \
--restart unless-stopped \
--label "erp.env=$ERP_ENV" \
"$WEB_IMAGE_REPO:$1" >/dev/null
}
wait_web() {
local deadline=$((SECONDS + 30))
while ((SECONDS < deadline)); do
if curl -fsS --max-time 5 -o /dev/null "http://127.0.0.1:$WEB_PORT/login" 2>/dev/null; then return 0; fi
if [[ "$(docker inspect -f '{{.State.Running}}' "$WEB_CONTAINER" 2>/dev/null)" != true ]]; then
warn "$WEB_CONTAINER is not running"
return 1
fi
sleep 2
done
warn "$WEB_CONTAINER did not serve /login within 30s"
return 1
}
previous="$(read_state frontend)"
log "deploying frontend $FRONTEND_HASH to $ERP_ENV (previous: ${previous:-none})"
start_web "$FRONTEND_HASH"
if wait_web; then
write_state frontend "$FRONTEND_HASH"
if [[ "$is_rollback" == true ]]; then result=rollback; else result=deployed; fi
record_history frontend "$FRONTEND_HASH" "$result"
log "✅ frontend $FRONTEND_HASH is serving on $ERP_ENV"
exit 0
fi
docker logs --tail 80 "$WEB_CONTAINER" || true
record_history frontend "$FRONTEND_HASH" failed
if [[ -n "$previous" && "$previous" != "$FRONTEND_HASH" ]] &&
docker image inspect "$WEB_IMAGE_REPO:$previous" >/dev/null 2>&1; then
warn "restoring previous frontend $previous"
start_web "$previous"
wait_web || warn "the previous frontend is not serving either — investigate now"
fi
fail "frontend deploy of $FRONTEND_HASH to $ERP_ENV failed"