look.sh 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. #!/usr/bin/env bash
  2. # /look —— 一键:验证 → 构建 → 推 feature(源码)+ deploy(产物)→ 服务器拉取 → 上线
  3. # 用法:bash infra/look.sh ["提交说明"]
  4. set -euo pipefail
  5. cd "$(dirname "$0")/.."
  6. MSG="${1:-chore: update}"
  7. SERVER="bigdata@100.64.0.62"
  8. SERVER_DIR="\$HOME/hs-data" # 服务器上 deploy 分支的 clone
  9. URL="http://100.64.0.62:8080/"
  10. echo "==> 1/5 验证 + 构建"
  11. corepack pnpm@10 --filter @hs-data/web test
  12. corepack pnpm@10 --filter @hs-data/web build
  13. echo "==> 2/5 源码 → feature"
  14. git add -A
  15. git diff --cached --quiet || git commit -q -m "$MSG"
  16. git push -q origin feature
  17. echo "==> 3/5 产物 → deploy 分支(worktree 快进推送,无 force)"
  18. git fetch -q origin deploy
  19. WT="../hs-deploy-tmp"
  20. git worktree remove -f "$WT" 2>/dev/null || true
  21. git worktree add -f "$WT" origin/deploy >/dev/null
  22. find "$WT" -mindepth 1 -maxdepth 1 ! -name .git -exec rm -rf {} +
  23. cp -r apps/web/dist/. "$WT"/
  24. (
  25. cd "$WT"
  26. git add -A
  27. git diff --cached --quiet || git commit -q -m "deploy: $MSG"
  28. git push -q origin HEAD:deploy
  29. )
  30. git worktree remove -f "$WT"
  31. echo "==> 4/5 服务器拉取(git pull,非 scp)"
  32. ssh -o BatchMode=yes "$SERVER" "cd $SERVER_DIR && GIT_TERMINAL_PROMPT=0 git pull -q && echo pulled-ok"
  33. echo "==> 5/5 完成 → $URL"