thread-master/deploy/scripts/restart.sh

38 lines
1.2 KiB
Bash
Executable File
Raw Permalink 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
# 只重編 + 重啟 gateway / worker / web不動 infra、不清資料、不 migrate
# 流程:殺舊 process → 確認埠釋放 → build → 起新的
set -euo pipefail
# shellcheck source=_common.sh
source "$(cd "$(dirname "$0")" && pwd)/_common.sh"
load_env
GATEWAY_PORT="${GATEWAY_PORT:-8888}"
WEB_PORT="${WEB_PORT:-5173}"
log "=== restart apps (keep data) ==="
log "1/3 stop old gateway / worker / web…"
set +e
"$DEPLOY_DIR/scripts/stop.sh"
stop_rc=$?
set -e
if [[ "$stop_rc" -ne 0 ]] || port_in_use "$GATEWAY_PORT"; then
leftovers="$(pids_on_port "$GATEWAY_PORT" | tr -s ' ')"
# 再掃一次 cmdline 給使用者可複製的 sudo
more="$(pids_by_cmdline_substr "bin/gateway" "gateway.yaml") $(pids_by_cmdline_substr "bin/worker" "gateway.yaml")"
all="$(echo "$leftovers $more" | tr -s ' ' '\n' | grep -E '^[0-9]+$' | sort -u | tr '\n' ' ')"
die "舊 process 沒殺乾淨,埠 :${GATEWAY_PORT} 仍被佔。請先:
sudo kill -9 ${all:-$(echo "$leftovers")}
make -C deploy restart"
fi
log "2/3 build…"
"$DEPLOY_DIR/scripts/build.sh"
log "3/3 start fresh…"
# start 內會再 stop 一次(雙保險)
"$DEPLOY_DIR/scripts/start.sh"
"$DEPLOY_DIR/scripts/status.sh" || true
log "=== restart done ==="