ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

宝塔webHook自动拉取代码脚本---前端编译

2026/8/6 8:17:43 拓冰建站 浏览量
宝塔webHook自动拉取代码脚本---前端编译
#!/bin/bash
su - www
echo ""
echo "=========================================="
echo "$(date '+%Y-%m-%d %H:%M:%S') 开始部署"
echo "=========================================="# 定义日志文件
LOG_FILE="/tmp/deploy_financial_vue.log"
echo "日志文件: $LOG_FILE" | tee -a $LOG_FILE# 记录执行用户
echo "当前用户: $(whoami)" | tee -a $LOG_FILE
echo "当前目录: $(pwd)" | tee -a $LOG_FILE# 进入项目目录
TARGET_DIR="/www/wwwroot/vue-project-source/kcy_front"
echo "切换到目录: $TARGET_DIR" | tee -a $LOG_FILEif [ ! -d "$TARGET_DIR" ]; thenecho "错误: 目录不存在 $TARGET_DIR" | tee -a $LOG_FILEexit 1
ficd "$TARGET_DIR"
echo "当前目录: $(pwd)" | tee -a $LOG_FILE# 检查git状态
echo "=== Git 状态 ===" | tee -a $LOG_FILE
git status | tee -a $LOG_FILEecho "=== 远程仓库 ===" | tee -a $LOG_FILE
git remote -v | tee -a $LOG_FILEecho "=== 开始拉取代码 ===" | tee -a $LOG_FILE
# 拉取代码,捕获详细输出
GIT_OUTPUT=$(git pull origin main 2>&1)
GIT_EXIT_CODE=$?echo "Git 退出码: $GIT_EXIT_CODE" | tee -a $LOG_FILE
echo "Git 输出: $GIT_OUTPUT" | tee -a $LOG_FILEif [ $GIT_EXIT_CODE -eq 0 ]; thenecho "✅ Git 拉取成功" | tee -a $LOG_FILE
elseecho "❌ Git 拉取失败" | tee -a $LOG_FILEecho "尝试使用强制拉取..." | tee -a $LOG_FILE# 尝试重置和强制拉取git fetch --all | tee -a $LOG_FILEgit reset --hard origin/main | tee -a $LOG_FILEgit pull origin main | tee -a $LOG_FILE
fi# 检查文件变化
echo "=== 文件变更 ===" | tee -a $LOG_FILE
git diff --name-only HEAD~1 HEAD | tee -a $LOG_FILE# 更新npm
echo "=== npm update ==="  | tee -a $LOG_FILE
npm update# 打包,并输出到相关目录
echo "=== npm run build --output-dir=/www/wwwroot/kcyv2.sg199.net ==="  | tee -a $LOG_FILE
npm run build --output-dir=../../kcyv2.sg199.net  | tee -a $LOG_FILE# cp打包好的项目到另外的目录
COPY_DIR="/www/wwwroot/kcyv2.sg199.net/"
echo "切换到目录: $COPY_DIR" | tee -a $LOG_FILE
cd "$COPY_DIR"
echo "当前目录: $(pwd)" | tee -a $LOG_FILE
echo "复制目录文件到v2.sg199.net"
cp -rf ./ ../v2.sg199.net/echo "=========================================="
echo "$(date '+%Y-%m-%d %H:%M:%S') 部署完成"
echo "==========================================" | tee -a $LOG_FILE# 检查PHP环境
if [ -f "package.json" ]; thenecho "检测到 package.json" | tee -a $LOG_FILEnpm -v | tee -a $LOG_FILE
fi