shinnosuke
4 天以前 6b9a855848ad31bb80fcb4966f85512ae8ec6421
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#!/bin/bash
# 东区人才卡 —— 测试环境:从 Gitblit 拉最新源码,在服务器上重建后台管理端并部署
#
# 用法:bash /data/talent-card/redeploy-admin.sh [分支]      默认 main
#
# 为什么在服务器上构建:这样前端部署不再需要人工走堡垒机网页 SFTP 传包
# (命令通道单次只能带约 4KB,而 dist 有 4.4MB)。服务器出网已开通:
#   * git://120.76.84.145/java/talent-card.git 匿名可读(已验证 ls-remote / clone)
#   * registry.npmmirror.com:443 可达(package-lock.json 的 resolved 就指向它)
#
# 高德 key 等构建期变量放在 /etc/talent-card/admin-build.env(600)——**不要**放进仓库:
# talent-card-admin/.gitignore 里并没有忽略 `.env`,只有 `*.local`。
 
set -euo pipefail
 
BRANCH="${1:-main}"
SRC=/data/talent-card/src
ADMIN=/data/talent-card/admin
ENVFILE=/etc/talent-card/admin-build.env
REPO=git://120.76.84.145/java/talent-card.git
 
if [ ! -d "$SRC/.git" ]; then
  echo "== 首次克隆 $REPO ($BRANCH)"
  git clone --depth 1 --branch "$BRANCH" "$REPO" "$SRC"
else
  echo "== 拉取最新 $BRANCH"
  git -C "$SRC" fetch --depth 1 origin "$BRANCH"
  git -C "$SRC" checkout -B "$BRANCH" "origin/$BRANCH"
fi
echo "   源码版本: $(git -C "$SRC" log --oneline -1)"
 
if [ -f "$ENVFILE" ]; then
  cp "$ENVFILE" "$SRC/talent-card-admin/.env"
  echo "== 已注入构建期变量: $ENVFILE"
else
  echo "== 注意: 没有 $ENVFILE,本次不带高德 key 构建(地图相关页面会报未配置)"
fi
 
cd "$SRC/talent-card-admin"
echo "== npm ci"
npm ci --no-audit --no-fund
echo "== npm run build"
npm run build
 
mkdir -p "$ADMIN"
find "$ADMIN" -mindepth 1 -delete
cp -a "$SRC/talent-card-admin/dist/." "$ADMIN/"
echo "== 已部署到 $ADMIN"
ls -la "$ADMIN"