diff --git a/.githooks/post-receive b/.githooks/post-receive index b9c363b0..11d33965 100755 --- a/.githooks/post-receive +++ b/.githooks/post-receive @@ -8,13 +8,31 @@ # - 实际调用 `pnpm run build`(输出丢,仅记退出码) # - 再后台启 `pnpm run start`(nohup,输出丢,hook 立即返回) -# 准备生产环境变量(从 env-example/.env.production.example 复制 → .env.production) -cp -f env-example/.env.production.example .env.production - -# 日志文件路径(**覆盖**模式:每次推送都生成全新日志) +# 日志文件路径(**覆盖**模式:每次推送都生成全新日志)—— **先**定**义**给后续 echo 用 LOG_FILE="$(git rev-parse --show-toplevel)/logs/post-receive.log" mkdir -p "$(dirname "$LOG_FILE")" +# **根**据**分**支选**择** env-example → .env(test 服**务**器**只**需 .env.local,**不**碰 .env.production) +CURRENT_BRANCH=$(git rev-parse --abbrev-ref HEAD) +echo "=== branch: $CURRENT_BRANCH ===" >> "$LOG_FILE" +case "$CURRENT_BRANCH" in + main) + cp -f env-example/.env.production.example .env.production + echo "=== env: copied .env.production (main → prod) ===" >> "$LOG_FILE" + ;; + test) + cp -f env-example/.env.local.example .env.local + echo "=== env: copied .env.local (test → test) ===" >> "$LOG_FILE" + ;; + dev) + cp -f env-example/.env.development.example .env.local + echo "=== env: copied .env.local (dev → dev) ===" >> "$LOG_FILE" + ;; + *) + echo "=== env: UNKNOWN branch '$CURRENT_BRANCH', skip env copy ===" >> "$LOG_FILE" + ;; +esac + # 元信息头(**首**次写 → 覆盖) { echo "=== post-receive @ $(date -u +%Y-%m-%dT%H:%M:%SZ) ===" @@ -53,10 +71,9 @@ echo "=== stop DONE @ $(date -u +%Y-%m-%dT%H:%M:%SZ) ===" >> "$LOG_FILE" echo "" >> "$LOG_FILE" # pnpm run start → **后台**跑(nohup ... &),long-running 进程 -# **临**时**改**:next 输**出**也**接**到 LOG_FILE(**为**排**查** Server error) -# —— 排**查**完**后**改回 `> /dev/null 2>&1` +# 输出**丢**(> /dev/null 2>&1)—— 真实 next 日志要看 next 自身 stdout/stderr echo "=== start LAUNCH @ $(date -u +%Y-%m-%dT%H:%M:%SZ) ===" >> "$LOG_FILE" -nohup pnpm run start >> "$LOG_FILE" 2>&1 & +nohup pnpm run start > /dev/null 2>&1 & START_PID=$! echo "=== start PID=$START_PID @ $(date -u +%Y-%m-%dT%H:%M:%SZ) ===" >> "$LOG_FILE"