89865ec690
upgrade/deploy-production 等分流到 nexus-1panel upgrade;升级完成后提示安装 nx cron。 Co-authored-by: Cursor <cursoragent@cursor.com>
74 lines
2.3 KiB
Bash
74 lines
2.3 KiB
Bash
#!/usr/bin/env bash
|
|
# Run ON production server — 自动识别 Docker / Supervisor
|
|
#
|
|
# Usage (on server):
|
|
# cd /opt/nexus && sudo bash deploy/deploy-on-server.sh
|
|
# cd /www/wwwroot/api.synaglobal.vip && bash deploy/deploy-on-server.sh
|
|
#
|
|
# Optional env:
|
|
# NEXUS_GITEA_TOKEN — if git pull needs auth
|
|
# SKIP_FRONTEND=1 — Supervisor 模式跳过热更新前端 tar
|
|
# NEXUS_DEPLOY_PATH — 覆盖自动检测路径
|
|
|
|
set -euo pipefail
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
|
# shellcheck source=./detect_deploy_runtime.sh
|
|
source "${SCRIPT_DIR}/detect_deploy_runtime.sh"
|
|
|
|
DEPLOY_PATH="$(resolve_nexus_root "${NEXUS_DEPLOY_PATH:-}" 2>/dev/null || true)"
|
|
if [[ -z "$DEPLOY_PATH" ]]; then
|
|
echo "ERROR: cannot resolve Nexus root" >&2
|
|
exit 1
|
|
fi
|
|
cd "${DEPLOY_PATH}"
|
|
|
|
RUNTIME="$(detect_nexus_runtime "$DEPLOY_PATH")"
|
|
PORT="$(nexus_publish_port_for "$DEPLOY_PATH")"
|
|
|
|
echo "═══ Nexus server-side deploy ═══"
|
|
echo "Path: ${DEPLOY_PATH}"
|
|
echo "Runtime: ${RUNTIME}"
|
|
|
|
if [[ -n "${NEXUS_GITEA_TOKEN:-}" ]]; then
|
|
git remote set-url origin "http://admin:${NEXUS_GITEA_TOKEN}@66.154.115.8:3000/admin/Nexus.git"
|
|
fi
|
|
|
|
if [[ "$RUNTIME" == "docker" ]]; then
|
|
echo "▶ Docker upgrade (pull + rebuild)..."
|
|
exec env NEXUS_ROOT="$DEPLOY_PATH" bash "$DEPLOY_PATH/deploy/nexus-1panel.sh" upgrade
|
|
fi
|
|
|
|
echo "▶ git fetch + reset --hard origin/main..."
|
|
git fetch --all
|
|
git reset --hard origin/main
|
|
echo " HEAD: $(git log -1 --oneline)"
|
|
|
|
echo "▶ supervisorctl restart nexus..."
|
|
supervisorctl restart nexus
|
|
|
|
if [[ -f /tmp/nexus-frontend.tar.gz && "${SKIP_FRONTEND:-0}" != "1" ]]; then
|
|
echo "▶ extract /tmp/nexus-frontend.tar.gz..."
|
|
tar xzf /tmp/nexus-frontend.tar.gz -C web/app
|
|
rm -f /tmp/nexus-frontend.tar.gz
|
|
if [[ -f deploy/prune_frontend_assets.py ]]; then
|
|
python3 deploy/prune_frontend_assets.py --dry-run
|
|
python3 deploy/prune_frontend_assets.py
|
|
fi
|
|
supervisorctl restart nexus
|
|
fi
|
|
|
|
sleep 3
|
|
HEALTH=$(curl -s "http://127.0.0.1:${PORT}/health" || true)
|
|
SPA=$(curl -s -o /dev/null -w '%{http_code}' "http://127.0.0.1:${PORT}/app/" || echo "000")
|
|
echo " /health → ${HEALTH}"
|
|
echo " /app/ → ${SPA}"
|
|
|
|
if [[ "${HEALTH}" == "ok" && "${SPA}" == "200" ]]; then
|
|
echo "✓ Server deploy OK"
|
|
suggest_ops_cron "$DEPLOY_PATH"
|
|
else
|
|
echo "✗ Verify failed — check: supervisorctl status nexus" >&2
|
|
exit 1
|
|
fi
|