Commit 1a2b029e by luoqi

chore(deploy): 部署分支不写死,默认跟随当前 checkout(main=生产/test=测试)

deploy-prod.sh 原写死 git pull origin main。改为 BRANCH=${DEPLOY_BRANCH:-当前分支}:
生产机停 main、测试机停 test 即各自部署对应分支;可用 DEPLOY_BRANCH 覆盖。
拉取改 fetch+checkout+ff-only(有分歧仍失败退出,不静默 reset)。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
parent be9f80e3
Pipeline #3386 failed in 0 seconds
...@@ -11,9 +11,13 @@ ...@@ -11,9 +11,13 @@
# 而本脚本会 git pull 更新自己;不包 main 的话,pull 后 bash 继续按"新文件的字节偏移" # 而本脚本会 git pull 更新自己;不包 main 的话,pull 后 bash 继续按"新文件的字节偏移"
# 读后半段 → 执行旧/错位代码(2026-06-10 实测:验证逻辑跑的是旧版)。 # 读后半段 → 执行旧/错位代码(2026-06-10 实测:验证逻辑跑的是旧版)。
# #
# 分支规约:main=生产 / test=测试。脚本默认部署"本机当前 checkout 的分支"(不写死 main),
# 故生产机停在 main、测试机停在 test 即可;临时切别的分支用 DEPLOY_BRANCH 覆盖。
#
# 用法(服务器上,~/pac): # 用法(服务器上,~/pac):
# bash deploy/deploy-prod.sh # git pull + build + 切换 + 验证 # bash deploy/deploy-prod.sh # 部署当前分支(生产机=main / 测试机=test)
# bash deploy/deploy-prod.sh --no-pull # 跳过 git pull(代码已就位时) # DEPLOY_BRANCH=test bash deploy/deploy-prod.sh # 显式指定分支(首次把某机切到该分支)
# bash deploy/deploy-prod.sh --no-pull # 跳过 git 拉取(代码已就位时)
set -euo pipefail set -euo pipefail
log() { printf '\n\033[1;36m== %s ==\033[0m\n' "$*"; } log() { printf '\n\033[1;36m== %s ==\033[0m\n' "$*"; }
...@@ -30,11 +34,19 @@ main() { ...@@ -30,11 +34,19 @@ main() {
# 语音 ASR 可选(compose profile=asr),默认不部署;要语音助手用 WITH_ASR=1 bash deploy/deploy-prod.sh # 语音 ASR 可选(compose profile=asr),默认不部署;要语音助手用 WITH_ASR=1 bash deploy/deploy-prod.sh
[[ "${WITH_ASR:-0}" == "1" ]] && SERVICES+=(pac-asr) [[ "${WITH_ASR:-0}" == "1" ]] && SERVICES+=(pac-asr)
# 部署哪个分支:规约 main=生产 / test=测试。默认跟随本机当前 checkout 的分支(不写死),
# 故生产机(在 main)自然部署 main、测试机(在 test)自然部署 test;需临时切分支再用 DEPLOY_BRANCH 覆盖。
local BRANCH="${DEPLOY_BRANCH:-$(git rev-parse --abbrev-ref HEAD)}"
if [[ "${1:-}" != "--no-pull" ]]; then if [[ "${1:-}" != "--no-pull" ]]; then
log "git pull --ff-only" log "拉取分支 $BRANCH(fetch + checkout + ff-only)"
git pull --ff-only origin main git fetch origin "$BRANCH"
# 本地没有该分支则从 origin 建跟踪分支;已在则切过去。随后 --ff-only 拉(有分歧即失败退出,不静默 reset)
git checkout "$BRANCH" 2>/dev/null || git checkout -b "$BRANCH" "origin/$BRANCH"
git pull --ff-only origin "$BRANCH"
# pull 可能更新了本脚本(SERVICES 列表/验证逻辑)→ re-exec 新版执行后续步骤, # pull 可能更新了本脚本(SERVICES 列表/验证逻辑)→ re-exec 新版执行后续步骤,
# 否则本轮跑的是 pull 前加载的旧版(2026-06-10 实测:新加的 pac-asr 服务没被 build) # 否则本轮跑的是 pull 前加载的旧版(2026-06-10 实测:新加的 pac-asr 服务没被 build)。
# DEPLOY_BRANCH 经 env 继承给 exec,再算 BRANCH 也一致。
log "re-exec 最新脚本(--no-pull)" log "re-exec 最新脚本(--no-pull)"
exec bash "$0" --no-pull exec bash "$0" --no-pull
fi fi
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment