fix: avoid production spacetimedb port conflict

This commit is contained in:
2026-05-03 00:49:36 +08:00
parent 019c8a2b03
commit 96f13bdfed
11 changed files with 50 additions and 16 deletions

View File

@@ -5,10 +5,11 @@ set -euo pipefail
usage() {
cat <<'EOF'
用法:
./scripts/deploy/production-stdb-publish.sh --source-dir build/<version> --database <database> [--server local] [--clear-database]
./scripts/deploy/production-stdb-publish.sh --source-dir build/<version> --database <database> [--server-url http://127.0.0.1:3101] [--server local] [--clear-database]
说明:
进入维护模式,校验 spacetime_module.wasm.sha256并在生产实例本机执行 spacetime publish。
默认使用 http://127.0.0.1:3101避免与部署机本机 Git/Web 服务的 3000 端口冲突。
失败时保留维护模式。
EOF
}
@@ -36,6 +37,7 @@ SCRIPT_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)"
SOURCE_DIR=""
DATABASE=""
SERVER_ALIAS="local"
SERVER_URL="http://127.0.0.1:3101"
CLEAR_DATABASE=0
DEPLOY_COMPLETED=0
@@ -55,6 +57,11 @@ while [[ $# -gt 0 ]]; do
;;
--server)
SERVER_ALIAS="${2:?缺少 --server 的值}"
SERVER_URL=""
shift 2
;;
--server-url)
SERVER_URL="${2:?缺少 --server-url 的值}"
shift 2
;;
--clear-database)
@@ -106,16 +113,25 @@ echo "[production-stdb-publish] 校验 wasm"
PUBLISH_ARGS=(
publish
"${DATABASE}"
--server "${SERVER_ALIAS}"
--bin-path "${SOURCE_DIR}/spacetime_module.wasm"
--yes
)
if [[ -n "${SERVER_URL}" ]]; then
PUBLISH_ARGS+=(--server "${SERVER_URL}")
else
PUBLISH_ARGS+=(--server "${SERVER_ALIAS}")
fi
if [[ "${CLEAR_DATABASE}" -eq 1 ]]; then
PUBLISH_ARGS+=(--clear-database)
fi
echo "[production-stdb-publish] 发布 SpacetimeDB module: ${DATABASE} -> ${SERVER_ALIAS}"
if [[ -n "${SERVER_URL}" ]]; then
echo "[production-stdb-publish] 发布 SpacetimeDB module: ${DATABASE} -> ${SERVER_URL}"
else
echo "[production-stdb-publish] 发布 SpacetimeDB module: ${DATABASE} -> ${SERVER_ALIAS}"
fi
spacetime "${PUBLISH_ARGS[@]}"
"${SCRIPT_DIR}/maintenance-off.sh"