initialising for ci-cd pipeline
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

This commit is contained in:
2026-09-16 11:53:55 +05:30
parent 666979cf22
commit 8e472ac996
48 changed files with 2224 additions and 62 deletions
+59
View File
@@ -0,0 +1,59 @@
#!/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"