[ops] fix deploy.sh: remove --no-frozen-lockfile flag, use venv for pip install; add post-receive hook script

This commit is contained in:
Hermes CI Fix
2026-07-12 17:29:28 +08:00
parent 4fe4ac635d
commit d90bc73cf5
2 changed files with 46 additions and 1 deletions
+3 -1
View File
@@ -10,7 +10,7 @@ echo ""
# 1. 构建前端
echo "[1/4] 构建前端..."
cd "$SCRIPT_DIR/frontend"
pnpm build --no-frozen-lockfile
pnpm build
echo " ✓ 构建完成"
# 2. 部署前端到 Nginx
@@ -22,7 +22,9 @@ echo " ✓ 部署完成"
# 3. 更新后端依赖
echo "[3/4] 更新后端..."
cd "$SCRIPT_DIR/backend"
source venv/bin/activate
pip install -r requirements.txt --quiet --no-cache-dir
deactivate
echo " ✓ 依赖更新完成"
# 4. 重启后端服务
+43
View File
@@ -0,0 +1,43 @@
#!/bin/bash
# Gitea post-receive hook: 自动部署 cma-management
# 每次 push 到 main 分支后,通过 SSH 到宿主机执行部署
#
# 工作原理:
# 1. 从 stdin 读取 git push 信息 (oldrev newrev refname)
# 2. 检查是否 push 到 main 分支
# 3. 通过 SSH 到宿主机 (172.17.0.1) 执行 git pull + deploy.sh
set -e
HOST="172.17.0.1"
SSH_KEY="/root/.ssh/id_ed25519"
SSH_CMD="ssh -i ${SSH_KEY} -o StrictHostKeyChecking=no -o ConnectTimeout=10 root@${HOST}"
while read oldrev newrev refname; do
# 只处理 main 分支的 push
if [ "$refname" = "refs/heads/main" ]; then
echo "[deploy-hook] 检测到 main 分支推送: ${oldrev:0:8}..${newrev:0:8}"
echo "[deploy-hook] 通过 SSH 连接宿主机执行部署..."
${SSH_CMD} '
echo "[deploy-hook] 进入 cma-management 目录"
cd /root/cma-management || exit 1
echo "[deploy-hook] 拉取最新代码..."
git pull origin main 2>&1
echo "[deploy-hook] 运行部署脚本..."
bash deploy.sh 2>&1
echo "[deploy-hook] 部署完成"
' 2>&1
rc=$?
if [ $rc -eq 0 ]; then
echo "[deploy-hook] ✓ 部署成功"
else
echo "[deploy-hook] ✗ 部署失败 (exit code: $rc)"
exit $rc
fi
fi
done