86 lines
2.8 KiB
Bash
Executable File
86 lines
2.8 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Deploy explorer-monorepo live site from the Gitea-staged Phoenix workspace.
|
|
#
|
|
# phoenix-deploy-api stages non-Proxmox repos in PHOENIX_DEPLOY_WORKSPACE. The
|
|
# explorer deploy scripts expect the repo to live as PHOENIX_REPO_ROOT/explorer-monorepo
|
|
# because the API deploy bundles Proxmox reference docs. This wrapper syncs the staged
|
|
# tree into that layout, then runs the canonical live deploy scripts.
|
|
|
|
set -euo pipefail
|
|
|
|
die() {
|
|
echo "ERROR: $*" >&2
|
|
exit 1
|
|
}
|
|
|
|
PHOENIX_REPO_ROOT="${PHOENIX_REPO_ROOT:-}"
|
|
PHOENIX_DEPLOY_WORKSPACE="${PHOENIX_DEPLOY_WORKSPACE:-}"
|
|
EXPLORER_REPO_DIR="${EXPLORER_REPO_DIR:-${PHOENIX_REPO_ROOT}/explorer-monorepo}"
|
|
|
|
[[ -n "$PHOENIX_REPO_ROOT" ]] || die "PHOENIX_REPO_ROOT is required"
|
|
[[ -d "$PHOENIX_REPO_ROOT" ]] || die "PHOENIX_REPO_ROOT does not exist: $PHOENIX_REPO_ROOT"
|
|
[[ -n "$PHOENIX_DEPLOY_WORKSPACE" ]] || die "PHOENIX_DEPLOY_WORKSPACE is required"
|
|
[[ -d "$PHOENIX_DEPLOY_WORKSPACE" ]] || die "staged workspace missing: $PHOENIX_DEPLOY_WORKSPACE"
|
|
[[ "$EXPLORER_REPO_DIR" != "/" ]] || die "refusing to sync into /"
|
|
|
|
echo "Syncing explorer workspace:"
|
|
echo " from: $PHOENIX_DEPLOY_WORKSPACE"
|
|
echo " to: $EXPLORER_REPO_DIR"
|
|
|
|
mkdir -p "$EXPLORER_REPO_DIR"
|
|
rsync -a --delete \
|
|
--exclude '.git/' \
|
|
--exclude 'node_modules/' \
|
|
--exclude 'frontend/node_modules/' \
|
|
--exclude 'frontend/.next/' \
|
|
--exclude 'backend/bin/' \
|
|
--exclude 'test-results/' \
|
|
"$PHOENIX_DEPLOY_WORKSPACE"/ "$EXPLORER_REPO_DIR"/
|
|
|
|
cd "$EXPLORER_REPO_DIR"
|
|
|
|
FRONTEND_SCRIPT="$EXPLORER_REPO_DIR/scripts/deploy-next-frontend-to-vmid5000.sh"
|
|
if [[ -f "$FRONTEND_SCRIPT" ]] && ! grep -q 'FORCE_REMOTE_PCT' "$FRONTEND_SCRIPT"; then
|
|
python3 - "$FRONTEND_SCRIPT" <<'PY'
|
|
import pathlib
|
|
import sys
|
|
|
|
path = pathlib.Path(sys.argv[1])
|
|
text = path.read_text()
|
|
text = text.replace(
|
|
'FRONTEND_PORT="${FRONTEND_PORT:-3000}"\n',
|
|
'FRONTEND_PORT="${FRONTEND_PORT:-3000}"\nFORCE_REMOTE_PCT="${FORCE_REMOTE_PCT:-0}"\n',
|
|
1,
|
|
)
|
|
text = text.replace(
|
|
'if [[ -f /proc/1/cgroup ]] && grep -q "lxc" /proc/1/cgroup 2>/dev/null; then',
|
|
'if [[ "$FORCE_REMOTE_PCT" != "1" ]] && [[ -f /proc/1/cgroup ]] && grep -q "lxc" /proc/1/cgroup 2>/dev/null; then',
|
|
)
|
|
path.write_text(text)
|
|
PY
|
|
fi
|
|
|
|
export PROXMOX_HOST=192.168.11.12
|
|
export PROXMOX_HOST_R630_02=192.168.11.12
|
|
export EXEC_MODE=pct
|
|
export FORCE_REMOTE_PCT=1
|
|
|
|
if [[ ! -x "$EXPLORER_REPO_DIR/frontend/node_modules/.bin/next" ]]; then
|
|
echo "Installing frontend dependencies with npm ci"
|
|
(
|
|
cd "$EXPLORER_REPO_DIR/frontend"
|
|
npm ci
|
|
)
|
|
fi
|
|
|
|
echo "Deploying static explorer config assets"
|
|
bash scripts/deploy-explorer-config-to-vmid5000.sh
|
|
|
|
echo "Deploying explorer config/API backend"
|
|
bash scripts/deploy-explorer-ai-to-vmid5000.sh
|
|
|
|
echo "Deploying Next frontend"
|
|
bash scripts/deploy-next-frontend-to-vmid5000.sh
|
|
|
|
echo "Explorer live deployment complete."
|