38 lines
1.2 KiB
Bash
Executable File
38 lines
1.2 KiB
Bash
Executable File
#!/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 ==="
|