2828 cd web
2929 npm ci
3030 npm run build
31+ env :
32+ VITE_SHORT_BASE : ${{ secrets.APP_DOMAIN }}
33+ VITE_API_BASE : ${{ secrets.API_BASE || '' }}
3134
3235 # 4. 设置 Java 环境
3336 - name : Setup Java
@@ -37,11 +40,25 @@ jobs:
3740 java-version : ' 17'
3841 cache : ' maven'
3942
40- # 5. 构建后端
41- - name : Build Backend
43+ # 5. 运行后端测试
44+ - name : Run Backend Tests
45+ run : mvn clean test
46+ env :
47+ APP_DOMAIN : ${{ secrets.APP_DOMAIN }}
48+ DB_PASSWORD : ${{ secrets.DB_PASSWORD }}
49+ JWT_SECRET : ${{ secrets.JWT_SECRET }}
50+ REDIS_PASSWORD : ${{ secrets.REDIS_PASSWORD }}
51+
52+ # 6. 构建后端(跳过测试,因为已经运行过)
53+ - name : Build Backend Package
4254 run : mvn clean package -DskipTests
55+ env :
56+ APP_DOMAIN : ${{ secrets.APP_DOMAIN }}
57+ DB_PASSWORD : ${{ secrets.DB_PASSWORD }}
58+ JWT_SECRET : ${{ secrets.JWT_SECRET }}
59+ REDIS_PASSWORD : ${{ secrets.REDIS_PASSWORD }}
4360
44- # 6 . 部署到服务器
61+ # 7 . 部署到服务器
4562 - name : Deploy to Server
46634764 env :
@@ -57,30 +74,47 @@ jobs:
5774 envs : APP_DOMAIN,DB_PASSWORD,JWT_SECRET,REDIS_PASSWORD
5875 script : |
5976 cd /opt/TinyFlow
60- git pull origin master
61-
77+ # 拉取最新代码(关键:确保本地更改被丢弃)
78+ git fetch origin
79+ git checkout origin/$(git symbolic-ref --short HEAD)
80+
6281 # 更新 systemd 配置文件中的环境变量
63- sudo sed -i "s|Environment=\"app.domain =.*\"|Environment=\"app.domain =$APP_DOMAIN\"|g" /etc/systemd/system/tinyflow.service
82+ sudo sed -i "s|Environment=\"APP_DOMAIN =.*\"|Environment=\"APP_DOMAIN =$APP_DOMAIN\"|g" /etc/systemd/system/tinyflow.service
6483 sudo sed -i "s|Environment=\"DB_PASSWORD=.*\"|Environment=\"DB_PASSWORD=$DB_PASSWORD\"|g" /etc/systemd/system/tinyflow.service
6584 sudo sed -i "s|Environment=\"JWT_SECRET=.*\"|Environment=\"JWT_SECRET=$JWT_SECRET\"|g" /etc/systemd/system/tinyflow.service
6685 sudo sed -i "s|Environment=\"REDIS_PASSWORD=.*\"|Environment=\"REDIS_PASSWORD=$REDIS_PASSWORD\"|g" /etc/systemd/system/tinyflow.service
6786
6887 # 重新构建前端
6988 cd web
70- npm ci
89+ npm ci --prefer-offline --no-audit
7190 npm run build
72-
91+
7392 # 重新构建后端
7493 cd ..
75- mvn clean package -DskipTests
76-
94+ mvn clean package -DskipTests -q
95+
7796 # 重新加载 systemd 并重启服务
7897 sudo systemctl daemon-reload
79- systemctl restart tinyflow
80-
81- echo "✅ 部署完成!"
98+ sudo systemctl restart tinyflow
99+
100+ # 等待服务启动
101+ sleep 3
102+
103+ # 健康检查
104+ if curl -f http://localhost:8080/actuator/health > /dev/null 2>&1; then
105+ echo "✅ 部署完成!服务已启动"
106+ else
107+ echo "❌ 服务启动失败,请检查日志"
108+ journalctl -u tinyflow -n 50
109+ exit 1
110+ fi
111+
112+ # 8. 部署失败通知(可选)
113+ - name : Deployment Failed
114+ if : failure()
115+ run : echo "❌ TinyFlow 部署失败!请检查 GitHub Actions 日志"
82116
83- # 7 . 部署成功通知(可选)
117+ # 9 . 部署成功通知
84118 - name : Deployment Success
85119 if : success()
86- run : echo " TinyFlow 部署成功!"
120+ run : echo "✅ TinyFlow 部署成功!所有测试已通过,部署完成。 "
0 commit comments