ci: 添加 Epic UI 构建和部署工作流

- 新增 CI/CD 工作流文件,实现前端项目的自动构建和部署
- 支持 main、master 和 develop 分支的自动构建- 包含代码检出、环境安装、依赖管理、项目构建等步骤
- 实现构建产物的自动部署和 Docker 容器重启
This commit is contained in:
hu xiaotong
2025-07-08 09:05:23 +08:00
parent d581d986c7
commit e215a922ac

View File

@@ -129,6 +129,55 @@ jobs:
pwd pwd
ls -la ls -la
- name: 配置toolcache缓存目录
shell: bash
run: |
echo "🔧 配置 /toolcache 缓存目录..."
# 检查 /toolcache 目录
if [ ! -d "/toolcache" ]; then
echo "📁 /toolcache 目录不存在,尝试创建..."
if mkdir -p "/toolcache" 2>/dev/null; then
echo "✅ /toolcache 目录创建成功"
else
echo "❌ /toolcache 目录创建失败"
exit 1
fi
fi
# 检查目录权限
if [ -w "/toolcache" ]; then
echo "✅ /toolcache 目录可写"
# 设置权限
chmod 755 "/toolcache" 2>/dev/null || echo "⚠️ 无法设置权限"
# 创建测试文件
TEST_FILE="/toolcache/test_write_$(date +%s)"
if touch "$TEST_FILE" 2>/dev/null; then
echo "✅ /toolcache 写入测试成功"
rm -f "$TEST_FILE"
echo "CACHE_DIR=/toolcache" >> $GITHUB_ENV
else
echo "❌ /toolcache 写入测试失败"
exit 1
fi
else
echo "❌ /toolcache 目录不可写"
echo "🔧 尝试修改目录权限..."
chmod 755 "/toolcache" 2>/dev/null || echo "⚠️ 无法修改权限"
if [ -w "/toolcache" ]; then
echo "✅ 权限修改成功"
echo "CACHE_DIR=/toolcache" >> $GITHUB_ENV
else
echo "❌ 无法获得 /toolcache 写入权限"
exit 1
fi
fi
echo "📊 缓存目录配置: /toolcache"
echo "📁 目录内容:"
ls -la /toolcache/ 2>/dev/null || echo "目录为空或无法访问"
- name: 恢复依赖缓存 - name: 恢复依赖缓存
shell: bash shell: bash
run: | run: |
@@ -138,37 +187,26 @@ jobs:
CACHE_KEY=$(md5sum pnpm-lock.yaml | cut -d' ' -f1) CACHE_KEY=$(md5sum pnpm-lock.yaml | cut -d' ' -f1)
echo "缓存键: $CACHE_KEY" echo "缓存键: $CACHE_KEY"
# 定义多个可能的缓存位置 # 只使用 /toolcache 目录
CACHE_LOCATIONS=( CACHE_FILE="/toolcache/node_modules_${CACHE_KEY}.tar.gz"
"/toolcache/node_modules_${CACHE_KEY}.tar.gz" echo "📁 检查缓存文件: $CACHE_FILE"
"/shared/cache/node_modules_${CACHE_KEY}.tar.gz"
"/tmp/node_modules_${CACHE_KEY}.tar.gz"
"/var/cache/node_modules_${CACHE_KEY}.tar.gz"
)
CACHE_RESTORED=false if [ -f "$CACHE_FILE" ]; then
for cache_file in "${CACHE_LOCATIONS[@]}"; do echo "✅ 找到缓存文件: $CACHE_FILE"
echo "🔍 检查缓存文件: $cache_file" echo "📦 缓存文件大小: $(du -sh "$CACHE_FILE" | cut -f1)"
if [ -f "$cache_file" ]; then echo "📅 缓存文件修改时间: $(stat -c %y "$CACHE_FILE")"
echo "✅ 找到缓存文件: $cache_file"
echo "📦 缓存文件大小: $(du -sh "$cache_file" | cut -f1)"
echo "正在恢复缓存..." echo "正在恢复缓存..."
if tar -xzf "$cache_file"; then
echo "✅ 缓存恢复成功"
CACHE_RESTORED=true
break
else
echo "❌ 缓存恢复失败: $cache_file"
continue
fi
fi
done
if [ "$CACHE_RESTORED" = false ]; then if tar -xzf "$CACHE_FILE"; then
echo "📥 未找到有效缓存,将重新安装依赖" echo "✅ 缓存恢复成功"
else
echo "📦 恢复的 node_modules 大小:" echo "📦 恢复的 node_modules 大小:"
du -sh node_modules 2>/dev/null || echo "node_modules 目录不存在" du -sh node_modules 2>/dev/null || echo "node_modules 目录不存在"
else
echo "❌ 缓存恢复失败"
echo "📥 将重新安装依赖"
fi
else
echo "📥 未找到缓存文件,将重新安装依赖"
fi fi
- name: 安装依赖 - name: 安装依赖
@@ -205,42 +243,21 @@ jobs:
exit 0 exit 0
fi fi
# 尝试多个缓存位置 # 只保存到 /toolcache 目录
CACHE_LOCATIONS=( CACHE_FILE="/toolcache/node_modules_${CACHE_KEY}.tar.gz"
"/toolcache"
"/shared/cache"
"/tmp"
"/var/cache"
)
CACHE_SAVED=false
for cache_dir in "${CACHE_LOCATIONS[@]}"; do
echo "🔍 尝试保存到: $cache_dir"
if [ -w "$cache_dir" ] 2>/dev/null; then
mkdir -p "$cache_dir"
CACHE_FILE="$cache_dir/node_modules_${CACHE_KEY}.tar.gz"
echo "📦 正在创建缓存文件: $CACHE_FILE" echo "📦 正在创建缓存文件: $CACHE_FILE"
if tar -czf "$CACHE_FILE" node_modules; then if tar -czf "$CACHE_FILE" node_modules; then
echo "✅ 缓存已保存到: $CACHE_FILE" echo "✅ 缓存已保存到: $CACHE_FILE"
echo "📦 缓存文件大小: $(du -sh "$CACHE_FILE" | cut -f1)" echo "📦 缓存文件大小: $(du -sh "$CACHE_FILE" | cut -f1)"
CACHE_SAVED=true echo "📅 缓存文件创建时间: $(stat -c %y "$CACHE_FILE")"
# 显示缓存目录内容 # 显示缓存目录内容
echo "🔍 缓存目录内容:" echo "🔍 /toolcache 目录内容:"
ls -la "$cache_dir/" | head -10 ls -la /toolcache/ | head -10
break
else else
echo "❌ 保存到 $cache_dir 失败" echo "❌ 缓存保存失败"
continue exit 1
fi
else
echo "❌ 目录 $cache_dir 不可写"
fi
done
if [ "$CACHE_SAVED" = false ]; then
echo "⚠️ 警告:所有缓存位置都无法保存,缓存功能可能不可用"
fi fi
echo "⏰ 等待30秒让你检查缓存是否成功写入..." echo "⏰ 等待30秒让你检查缓存是否成功写入..."
@@ -252,12 +269,9 @@ jobs:
echo "=== 第 $i 次检查 (第 $((i*5)) 秒) ===" echo "=== 第 $i 次检查 (第 $((i*5)) 秒) ==="
echo "时间: $(date)" echo "时间: $(date)"
for cache_dir in "${CACHE_LOCATIONS[@]}"; do echo "📁 /toolcache 目录内容:"
if [ -d "$cache_dir" ]; then ls -la /toolcache/ 2>/dev/null | head -5 || echo "无法访问 /toolcache"
echo "📁 $cache_dir 目录内容:"
ls -la "$cache_dir/" 2>/dev/null | head -5 || echo "无法访问 $cache_dir"
CACHE_FILE="$cache_dir/node_modules_${CACHE_KEY}.tar.gz"
if [ -f "$CACHE_FILE" ]; then if [ -f "$CACHE_FILE" ]; then
echo "✅ 缓存文件存在: $CACHE_FILE" echo "✅ 缓存文件存在: $CACHE_FILE"
echo "📦 文件大小: $(du -sh "$CACHE_FILE" 2>/dev/null | cut -f1 || echo '无法获取大小')" echo "📦 文件大小: $(du -sh "$CACHE_FILE" 2>/dev/null | cut -f1 || echo '无法获取大小')"
@@ -265,11 +279,7 @@ jobs:
else else
echo "❌ 缓存文件不存在: $CACHE_FILE" echo "❌ 缓存文件不存在: $CACHE_FILE"
fi fi
else
echo "❌ 目录不存在: $cache_dir"
fi
echo "---" echo "---"
done
if [ $i -lt 6 ]; then if [ $i -lt 6 ]; then
echo "⏳ 等待5秒..." echo "⏳ 等待5秒..."