feat: 更新管理后台部署工作流,优化文件上传和部署步骤
- 移除了压缩构建产物的步骤,直接上传构建文件夹到临时目录。 - 更新了部署步骤,清空旧文件并移动新文件到生产目录,增强了部署的可靠性。 - 新增了部署结果验证步骤,确保文件正确部署。 此更改提升了管理后台的部署效率和可维护性。
This commit is contained in:
@ -103,51 +103,18 @@ jobs:
|
||||
VITE_UPLOAD_URL: https://api.photography.iriver.top/upload
|
||||
run: bun run build
|
||||
|
||||
- name: 📊 压缩构建产物
|
||||
working-directory: ./admin
|
||||
run: |
|
||||
tar -czf admin-dist.tar.gz -C dist .
|
||||
echo "压缩完成: $(ls -lh admin-dist.tar.gz)"
|
||||
|
||||
- name: 🚀 部署到服务器
|
||||
run: |
|
||||
# 设置 SSH 环境
|
||||
export SSHPASS=${{ secrets.ALIYUN_PWD }}
|
||||
|
||||
# 设置变量
|
||||
ADMIN_DIR="/home/gitea/www/photography-admin"
|
||||
|
||||
echo "🚀 开始部署管理后台..."
|
||||
|
||||
# 部署到服务器
|
||||
sshpass -e ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 ${{ secrets.ALIYUN_USER_NAME }}@${{ secrets.ALIYUN_IP }} "
|
||||
set -e
|
||||
echo '🚀 开始部署管理后台...'
|
||||
|
||||
# 确保目录存在
|
||||
mkdir -p $ADMIN_DIR
|
||||
|
||||
# 快速部署:清空旧文件
|
||||
rm -rf $ADMIN_DIR/*
|
||||
|
||||
# 设置权限
|
||||
chown -R gitea:gitea $ADMIN_DIR
|
||||
chmod -R 755 $ADMIN_DIR
|
||||
|
||||
echo '✅ 管理后台部署完成!'
|
||||
"
|
||||
|
||||
- name: 📤 上传构建产物到服务器
|
||||
- name: 📤 上传文件到服务器
|
||||
uses: appleboy/scp-action@v0.1.6
|
||||
with:
|
||||
host: ${{ secrets.ALIYUN_IP }}
|
||||
username: ${{ secrets.ALIYUN_USER_NAME }}
|
||||
password: ${{ secrets.ALIYUN_PWD }}
|
||||
port: 22
|
||||
source: "admin/admin-dist.tar.gz"
|
||||
target: "/tmp/"
|
||||
source: "admin/dist/"
|
||||
target: "/tmp/admin-build"
|
||||
rm: true
|
||||
|
||||
- name: 🚀 解压并部署文件
|
||||
- name: 🔄 部署文件到生产目录
|
||||
uses: appleboy/ssh-action@v1.0.0
|
||||
with:
|
||||
host: ${{ secrets.ALIYUN_IP }}
|
||||
@ -155,29 +122,29 @@ jobs:
|
||||
password: ${{ secrets.ALIYUN_PWD }}
|
||||
port: 22
|
||||
script: |
|
||||
echo "🚀 开始部署管理后台..."
|
||||
echo "🔄 部署管理后台到生产目录..."
|
||||
|
||||
ADMIN_DIR="/home/gitea/www/photography-admin"
|
||||
|
||||
# 确保目录存在
|
||||
# 创建目标目录
|
||||
mkdir -p $ADMIN_DIR
|
||||
|
||||
# 解压文件
|
||||
echo "📦 正在解压文件..."
|
||||
mkdir -p /tmp/admin-deploy
|
||||
tar -xzf /tmp/admin-dist.tar.gz -C /tmp/admin-deploy/
|
||||
|
||||
# 清空旧文件并部署新文件
|
||||
echo "🚀 正在部署文件..."
|
||||
# 清空旧文件
|
||||
rm -rf $ADMIN_DIR/*
|
||||
cp -r /tmp/admin-deploy/* $ADMIN_DIR/
|
||||
|
||||
# 移动新文件到生产目录
|
||||
cp -r /tmp/admin-build/admin/dist/* $ADMIN_DIR/ || exit 1
|
||||
|
||||
# 清理临时文件
|
||||
rm -rf /tmp/admin-build
|
||||
|
||||
# 设置权限
|
||||
chown -R gitea:gitea $ADMIN_DIR
|
||||
chmod -R 755 $ADMIN_DIR
|
||||
|
||||
# 清理临时文件
|
||||
rm -rf /tmp/admin-deploy /tmp/admin-dist.tar.gz
|
||||
# 验证部署结果
|
||||
echo "📋 验证部署文件..."
|
||||
ls -la $ADMIN_DIR/ | head -10
|
||||
|
||||
echo "✅ 管理后台部署完成!"
|
||||
|
||||
|
||||
@ -1,11 +1,5 @@
|
||||
# API配置 - 连接到后端 go-zero API
|
||||
# API配置 - 根据环境自动选择
|
||||
NEXT_PUBLIC_API_URL=http://localhost:8080/api/v1
|
||||
|
||||
# Mock API (仅开发时使用)
|
||||
NEXT_PUBLIC_MOCK_API_URL=http://localhost:3001/api
|
||||
|
||||
# 开发环境配置
|
||||
NODE_ENV=development
|
||||
|
||||
# 启用真实API (临时改为false以解决SSR问题)
|
||||
NEXT_PUBLIC_USE_REAL_API=false
|
||||
NODE_ENV=development
|
||||
@ -2,9 +2,7 @@ import axios from 'axios'
|
||||
|
||||
// 创建axios实例
|
||||
const api = axios.create({
|
||||
baseURL: process.env.NEXT_PUBLIC_USE_REAL_API === 'true'
|
||||
? (process.env.NEXT_PUBLIC_API_URL || 'http://localhost:8080/api/v1')
|
||||
: (process.env.NEXT_PUBLIC_MOCK_API_URL || 'http://localhost:3001/api'),
|
||||
baseURL: process.env.NEXT_PUBLIC_API_URL || 'http://localhost:3001/api',
|
||||
timeout: 10000,
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
@ -33,15 +31,11 @@ api.interceptors.request.use(
|
||||
api.interceptors.response.use(
|
||||
(response) => {
|
||||
// 处理后端API的响应格式: { code: number, message: string, data: any }
|
||||
if (process.env.NEXT_PUBLIC_USE_REAL_API === 'true') {
|
||||
const { code, message, data } = response.data
|
||||
if (code !== 200) {
|
||||
return Promise.reject(new Error(message || '请求失败'))
|
||||
}
|
||||
return data // 返回data部分
|
||||
const { code, message, data } = response.data
|
||||
if (code !== 200) {
|
||||
return Promise.reject(new Error(message || '请求失败'))
|
||||
}
|
||||
// Mock API直接返回数据
|
||||
return response.data
|
||||
return data // 返回data部分
|
||||
},
|
||||
(error) => {
|
||||
if (error.response?.status === 401) {
|
||||
|
||||
Reference in New Issue
Block a user