From ab33ce06f380d570d68c6acd7548048a060e6479 Mon Sep 17 00:00:00 2001 From: john Date: Fri, 3 Jul 2026 09:43:52 +0800 Subject: [PATCH] fix: bundle shared Memind modules for prod release --- scripts/release-prod.sh | 31 ++++++++++++++++++++++++++++--- 1 file changed, 28 insertions(+), 3 deletions(-) diff --git a/scripts/release-prod.sh b/scripts/release-prod.sh index 029e20f..330b5be 100755 --- a/scripts/release-prod.sh +++ b/scripts/release-prod.sh @@ -20,12 +20,14 @@ TMP_DIR="$(mktemp -d "${TMPDIR:-/tmp}/memindadm-release.XXXXXX")" BUNDLE_PATH="${TMP_DIR}/memind-adm-${RELEASE_ID}.tar.gz" MANIFEST_PATH="${TMP_DIR}/memind-adm-${RELEASE_ID}.manifest.txt" SHA_PATH="${TMP_DIR}/memind-adm-${RELEASE_ID}.sha256" +MEMIND_SRC="${TEST_MEMIND_ROOT:-${ROOT}/../test-memind}" +MEMIND_LIB="${ROOT}/memind-lib" DRY_RUN=0 SKIP_BUILD=0 AUTO_YES=0 cleanup() { - rm -rf "${TMP_DIR}" + rm -rf "${TMP_DIR}" "${MEMIND_LIB}" } trap cleanup EXIT @@ -80,6 +82,7 @@ need_cmd() { need_cmd ssh need_cmd scp +need_cmd rsync need_cmd tar need_cmd shasum @@ -98,7 +101,6 @@ fi say "本地预检查" ssh -o BatchMode=yes -o ConnectTimeout=15 "${HOST}" "echo release-ssh-ok" >/dev/null ssh -o BatchMode=yes "${HOST}" "test -d '${APP_DIR}' && test -f '${APP_DIR}/package.json'" >/dev/null -ssh -o BatchMode=yes "${HOST}" "MEMIND_LIB_ROOT=\$(grep -E '^MEMIND_LIB_ROOT=' '${APP_DIR}/.env' | tail -1 | cut -d= -f2-); test -n \"\${MEMIND_LIB_ROOT}\" && test -f \"\${MEMIND_LIB_ROOT}/user-auth.mjs\"" >/dev/null if [[ "${SKIP_BUILD}" -ne 1 ]]; then say "本地构建 dist(103 不再执行前端构建)" @@ -113,6 +115,29 @@ fi exit 1 } +[[ -d "${MEMIND_SRC}" ]] || { + echo "缺少 Memind 共享模块源: ${MEMIND_SRC}" >&2 + exit 1 +} + +say "打包 Memind 共享模块到 memind-lib" +rm -rf "${MEMIND_LIB}" +mkdir -p "${MEMIND_LIB}" +rsync -a \ + --prune-empty-dirs \ + --exclude '.git/' \ + --exclude 'node_modules/' \ + --include '*/' \ + --include '*.mjs' \ + --include '*.json' \ + --include '*.js' \ + --exclude '*' \ + "${MEMIND_SRC}/" "${MEMIND_LIB}/" +[[ -f "${MEMIND_LIB}/user-auth.mjs" ]] || { + echo "memind-lib 缺少 user-auth.mjs" >&2 + exit 1 +} + if [[ "${AUTO_YES}" -ne 1 && "${DRY_RUN}" -ne 1 ]]; then say "发布确认" echo "目标主机: ${HOST}" @@ -215,7 +240,7 @@ done [[ -d "${RELEASE_DIR}/dist" ]] || { echo "release bundle missing dist/" >&2; exit 1; } [[ ! -d "${RELEASE_DIR}/src" ]] || { echo "release bundle must not contain src/" >&2; exit 1; } -[[ ! -d "${RELEASE_DIR}/memind-lib" ]] || { echo "release bundle must not contain bundled memind-lib/" >&2; exit 1; } +[[ -f "${RELEASE_DIR}/memind-lib/user-auth.mjs" ]] || { echo "release bundle missing memind-lib/user-auth.mjs" >&2; exit 1; } say "安装运行依赖" cd "${RELEASE_DIR}"