fix: bundle shared Memind modules for prod release

This commit is contained in:
john
2026-07-03 09:43:52 +08:00
parent 65fb8ed2b2
commit ab33ce06f3
+28 -3
View File
@@ -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 "本地构建 dist103 不再执行前端构建)"
@@ -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}"