fix: bundle shared Memind modules for prod release
This commit is contained in:
+28
-3
@@ -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}"
|
||||
|
||||
Reference in New Issue
Block a user