#!/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"
|