Merge branch 'dev' into test

This commit is contained in:
2026-06-17 18:44:02 +08:00
+18 -14
View File
@@ -6,6 +6,14 @@ export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion
# 全局变量统一声明。具体值由各步骤函数写入。
REPO_TOPLEVEL=""
LOG_FILE=""
CURRENT_BRANCH=""
START_PORT=""
BUILD_EXIT=0
resolve_repo_context() {
GIT_DIR_ABS="$(git rev-parse --absolute-git-dir 2>/dev/null)"
if [ -n "$GIT_DIR_ABS" ] && [ -d "$GIT_DIR_ABS" ]; then
REPO_TOPLEVEL="$(cd "$GIT_DIR_ABS/.." && pwd)"
@@ -16,10 +24,6 @@ fi
unset GIT_WORK_TREE
cd "$REPO_TOPLEVEL" || { echo "FATAL: cannot cd to $REPO_TOPLEVEL" >&2; exit 1; }
echo "=== REPO_TOPLEVEL=$REPO_TOPLEVEL (GIT_DIR=$GIT_DIR) ===" >&2
sync_worktree() {
echo "=== sync_worktree: git reset --hard HEAD @ $(date +%Y-%m-%dT%H:%M:%S%z) ==="
git reset --hard HEAD
}
init_log_file() {
@@ -37,12 +41,11 @@ write_metadata_header() {
} > "$LOG_FILE"
}
# ============================================================
# 3. copy_env_by_branch —— 根据分支选 env-example → .env
# main 分支 → .env.productionprod 部署)
# test 分支 → .env.localtest 不碰 .env.production,避免读到 prod 域名)
# dev 分支 → .env.local(未配远端用途,但保留)
# ============================================================
sync_worktree() {
echo "=== sync_worktree: git reset --hard HEAD @ $(date +%Y-%m-%dT%H:%M:%S%z) ==="
git reset --hard HEAD
}
copy_env_by_branch() {
CURRENT_BRANCH=$(git rev-parse --abbrev-ref HEAD)
echo "=== branch: $CURRENT_BRANCH ===" >> "$LOG_FILE"
@@ -131,10 +134,8 @@ stop_existing_next() {
}
launch_next() {
# next stdout/stderr 接到 logs/next-server.log(覆盖模式,每次 deploy 重新开始)
NEXT_LOG_FILE="$REPO_TOPLEVEL/logs/next-server.log"
echo "=== start LAUNCH port=$START_PORT @ $(date +%Y-%m-%dT%H:%M:%S%z) ===" >> "$LOG_FILE"
PORT="$START_PORT" nohup pnpm run start > "$NEXT_LOG_FILE" 2>&1 &
PORT="$START_PORT" nohup pnpm run start >> "$LOG_FILE" 2>&1 &
START_PID=$!
echo "=== start PID=$START_PID @ $(date +%Y-%m-%dT%H:%M:%S%z) ===" >> "$LOG_FILE"
}
@@ -150,10 +151,13 @@ log_abort() {
# main —— 调度所有步骤
# ============================================================
main() {
resolve_repo_context
init_log_file
sync_worktree # 先同步工作树到新 HEAD(与 git config denyCurrentBranch 配合)
write_metadata_header # 先覆盖写元信息(这样 env copy 日志能保留在后面)
sync_worktree # 先同步工作树到新 HEAD(与 git config denyCurrentBranch 配合)
copy_env_by_branch # 追加 env copy 日志
select_port_by_branch # 根据当前分支决定 next start 端口
if ! run_build; then