2dac4a69fd
精确锁定 SpacetimeDB Rust crate 并更新依赖锁文件 使用 2.6.0 CLI 重新生成 Rust bindings 对齐容器镜像、server provision 与本地版本校验 更新运维文档、项目记忆与 SpacetimeDB skills 版本口径
87 lines
2.8 KiB
Bash
Executable File
87 lines
2.8 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
REPO_ROOT="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")/.." && pwd)"
|
|
TMP_ROOT="$(mktemp -d)"
|
|
trap 'rm -rf "${TMP_ROOT}"' EXIT
|
|
|
|
WORK_DIR="${TMP_ROOT}/workspace"
|
|
FAKE_BIN_DIR="${TMP_ROOT}/fake-bin"
|
|
TARGET_BIN_DIR="${TMP_ROOT}/target-bin"
|
|
SPACETIME_ROOT_DIR="${TMP_ROOT}/stdb"
|
|
OUTPUT_LOG="${TMP_ROOT}/prepare.log"
|
|
|
|
mkdir -p \
|
|
"${WORK_DIR}" \
|
|
"${FAKE_BIN_DIR}" \
|
|
"${TARGET_BIN_DIR}" \
|
|
"${SPACETIME_ROOT_DIR}/bin/current"
|
|
|
|
cat >"${FAKE_BIN_DIR}/curl" <<'EOF'
|
|
#!/usr/bin/env bash
|
|
echo "curl should not be called when target tools are already ready" >&2
|
|
exit 97
|
|
EOF
|
|
cat >"${FAKE_BIN_DIR}/wget" <<'EOF'
|
|
#!/usr/bin/env bash
|
|
echo "wget should not be called when target tools are already ready" >&2
|
|
exit 97
|
|
EOF
|
|
chmod +x "${FAKE_BIN_DIR}/curl" "${FAKE_BIN_DIR}/wget"
|
|
|
|
cat >"${TARGET_BIN_DIR}/otelcol-contrib" <<'EOF'
|
|
#!/usr/bin/env bash
|
|
echo "otelcol-contrib version 0.151.0"
|
|
EOF
|
|
chmod +x "${TARGET_BIN_DIR}/otelcol-contrib"
|
|
|
|
cat >"${SPACETIME_ROOT_DIR}/bin/current/spacetimedb-cli" <<'EOF'
|
|
#!/usr/bin/env bash
|
|
echo "spacetimedb-cli 2.6.0"
|
|
EOF
|
|
cat >"${SPACETIME_ROOT_DIR}/bin/current/spacetimedb-standalone" <<'EOF'
|
|
#!/usr/bin/env bash
|
|
echo "spacetimedb-standalone 2.6.0"
|
|
EOF
|
|
chmod +x \
|
|
"${SPACETIME_ROOT_DIR}/bin/current/spacetimedb-cli" \
|
|
"${SPACETIME_ROOT_DIR}/bin/current/spacetimedb-standalone"
|
|
|
|
if ! (
|
|
cd "${WORK_DIR}"
|
|
PATH="${FAKE_BIN_DIR}:${PATH}" \
|
|
WORKSPACE="${WORK_DIR}" \
|
|
PROVISION_TOOLS_DIR="provision-tools" \
|
|
PROVISION_DOWNLOADS_DIR="downloads" \
|
|
PROVISION_TOOLS_TMP_PARENT="${WORK_DIR}/.tmp/server-provision-tools" \
|
|
PROVISION_REQUIRE_LOCAL_DOWNLOADS="true" \
|
|
OTELCOL_TARGET_BIN="${TARGET_BIN_DIR}/otelcol-contrib" \
|
|
OTELCOL_VERSION="0.151.0" \
|
|
SPACETIME_ROOT="${SPACETIME_ROOT_DIR}" \
|
|
SPACETIME_EXPECTED_VERSION="2.6.0" \
|
|
"${REPO_ROOT}/scripts/prepare-server-provision-tools.sh" \
|
|
>"${OUTPUT_LOG}" 2>&1
|
|
); then
|
|
echo "[check-server-provision-tools] prepare-server-provision-tools.sh 执行失败。" >&2
|
|
cat "${OUTPUT_LOG}" >&2
|
|
exit 1
|
|
fi
|
|
|
|
grep -q "复用目标机已有 otelcol-contrib" "${OUTPUT_LOG}"
|
|
grep -q "复用目标机已有 SpacetimeDB 安装" "${OUTPUT_LOG}"
|
|
grep -q "otelcol-contrib 0.151.0 target existing" "${WORK_DIR}/provision-tools/MANIFEST.txt"
|
|
grep -q "spacetime target existing" "${WORK_DIR}/provision-tools/MANIFEST.txt"
|
|
|
|
test -x "${WORK_DIR}/provision-tools/otelcol-contrib"
|
|
test -x "${WORK_DIR}/provision-tools/spacetime/spacetime"
|
|
test -x "${WORK_DIR}/provision-tools/spacetime/bin/current/spacetimedb-cli"
|
|
test -x "${WORK_DIR}/provision-tools/spacetime/bin/current/spacetimedb-standalone"
|
|
|
|
if grep -q "下载 " "${OUTPUT_LOG}"; then
|
|
echo "[check-server-provision-tools] 已有目标机工具时不应进入下载分支。" >&2
|
|
cat "${OUTPUT_LOG}" >&2
|
|
exit 1
|
|
fi
|
|
|
|
echo "[check-server-provision-tools] OK"
|