Merge branch 'dev' into test
This commit is contained in:
+27
-23
@@ -6,20 +6,24 @@ export NVM_DIR="$HOME/.nvm"
|
|||||||
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads 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
|
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion
|
||||||
|
|
||||||
GIT_DIR_ABS="$(git rev-parse --absolute-git-dir 2>/dev/null)"
|
# 全局变量统一声明。具体值由各步骤函数写入。
|
||||||
if [ -n "$GIT_DIR_ABS" ] && [ -d "$GIT_DIR_ABS" ]; then
|
REPO_TOPLEVEL=""
|
||||||
REPO_TOPLEVEL="$(cd "$GIT_DIR_ABS/.." && pwd)"
|
LOG_FILE=""
|
||||||
export GIT_DIR="$GIT_DIR_ABS"
|
CURRENT_BRANCH=""
|
||||||
else
|
START_PORT=""
|
||||||
REPO_TOPLEVEL="$(git rev-parse --show-toplevel 2>/dev/null || echo "$PWD")"
|
BUILD_EXIT=0
|
||||||
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() {
|
resolve_repo_context() {
|
||||||
echo "=== sync_worktree: git reset --hard HEAD @ $(date +%Y-%m-%dT%H:%M:%S%z) ==="
|
GIT_DIR_ABS="$(git rev-parse --absolute-git-dir 2>/dev/null)"
|
||||||
git reset --hard HEAD
|
if [ -n "$GIT_DIR_ABS" ] && [ -d "$GIT_DIR_ABS" ]; then
|
||||||
|
REPO_TOPLEVEL="$(cd "$GIT_DIR_ABS/.." && pwd)"
|
||||||
|
export GIT_DIR="$GIT_DIR_ABS"
|
||||||
|
else
|
||||||
|
REPO_TOPLEVEL="$(git rev-parse --show-toplevel 2>/dev/null || echo "$PWD")"
|
||||||
|
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
|
||||||
}
|
}
|
||||||
|
|
||||||
init_log_file() {
|
init_log_file() {
|
||||||
@@ -37,12 +41,11 @@ write_metadata_header() {
|
|||||||
} > "$LOG_FILE"
|
} > "$LOG_FILE"
|
||||||
}
|
}
|
||||||
|
|
||||||
# ============================================================
|
sync_worktree() {
|
||||||
# 3. copy_env_by_branch —— 根据分支选 env-example → .env
|
echo "=== sync_worktree: git reset --hard HEAD @ $(date +%Y-%m-%dT%H:%M:%S%z) ==="
|
||||||
# main 分支 → .env.production(prod 部署)
|
git reset --hard HEAD
|
||||||
# test 分支 → .env.local(test 不碰 .env.production,避免读到 prod 域名)
|
}
|
||||||
# dev 分支 → .env.local(未配远端用途,但保留)
|
|
||||||
# ============================================================
|
|
||||||
copy_env_by_branch() {
|
copy_env_by_branch() {
|
||||||
CURRENT_BRANCH=$(git rev-parse --abbrev-ref HEAD)
|
CURRENT_BRANCH=$(git rev-parse --abbrev-ref HEAD)
|
||||||
echo "=== branch: $CURRENT_BRANCH ===" >> "$LOG_FILE"
|
echo "=== branch: $CURRENT_BRANCH ===" >> "$LOG_FILE"
|
||||||
@@ -131,10 +134,8 @@ stop_existing_next() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
launch_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"
|
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=$!
|
START_PID=$!
|
||||||
echo "=== start PID=$START_PID @ $(date +%Y-%m-%dT%H:%M:%S%z) ===" >> "$LOG_FILE"
|
echo "=== start PID=$START_PID @ $(date +%Y-%m-%dT%H:%M:%S%z) ===" >> "$LOG_FILE"
|
||||||
}
|
}
|
||||||
@@ -150,10 +151,13 @@ log_abort() {
|
|||||||
# main —— 调度所有步骤
|
# main —— 调度所有步骤
|
||||||
# ============================================================
|
# ============================================================
|
||||||
main() {
|
main() {
|
||||||
|
resolve_repo_context
|
||||||
init_log_file
|
init_log_file
|
||||||
sync_worktree # 先同步工作树到新 HEAD(与 git config denyCurrentBranch 配合)
|
|
||||||
write_metadata_header # 先覆盖写元信息(这样 env copy 日志能保留在后面)
|
write_metadata_header # 先覆盖写元信息(这样 env copy 日志能保留在后面)
|
||||||
|
|
||||||
|
sync_worktree # 先同步工作树到新 HEAD(与 git config denyCurrentBranch 配合)
|
||||||
copy_env_by_branch # 追加 env copy 日志
|
copy_env_by_branch # 追加 env copy 日志
|
||||||
|
|
||||||
select_port_by_branch # 根据当前分支决定 next start 端口
|
select_port_by_branch # 根据当前分支决定 next start 端口
|
||||||
|
|
||||||
if ! run_build; then
|
if ! run_build; then
|
||||||
|
|||||||
Reference in New Issue
Block a user