ci: 添加 Epic UI 构建和部署工作流
- 新增 CI/CD 工作流文件,实现前端项目的自动构建和部署 - 支持 main、master 和 develop 分支的自动构建- 包含代码检出、环境安装、依赖管理、项目构建等步骤 - 实现构建产物的自动部署和 Docker 容器重启
This commit is contained in:
@@ -115,23 +115,60 @@ jobs:
|
|||||||
echo "✅ pnpm安装完成: $(pnpm --version)"
|
echo "✅ pnpm安装完成: $(pnpm --version)"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
- name: 检查缓存目录权限
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
echo "🔍 检查缓存目录权限和状态..."
|
||||||
|
echo "=== /toolcache 目录检查 ==="
|
||||||
|
ls -la /toolcache/ 2>/dev/null || echo "/toolcache 目录不存在或无法访问"
|
||||||
|
echo "=== /shared/cache 目录检查 ==="
|
||||||
|
ls -la /shared/cache/ 2>/dev/null || echo "/shared/cache 目录不存在或无法访问"
|
||||||
|
echo "=== /tmp 目录检查 ==="
|
||||||
|
ls -la /tmp/ | head -10
|
||||||
|
echo "=== 当前工作目录 ==="
|
||||||
|
pwd
|
||||||
|
ls -la
|
||||||
|
|
||||||
- name: 恢复依赖缓存
|
- name: 恢复依赖缓存
|
||||||
shell: bash
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
echo "📦 检查并恢复依赖缓存..."
|
echo "📦 检查并恢复依赖缓存..."
|
||||||
echo "🔍 检查缓存目录状态:"
|
|
||||||
ls -la /toolcache/ 2>/dev/null || echo "/toolcache 目录不存在"
|
|
||||||
ls -la /shared/cache/ 2>/dev/null || echo "/shared/cache 目录不存在"
|
|
||||||
|
|
||||||
# 尝试从 /toolcache 恢复
|
# 生成缓存键
|
||||||
CACHE_FILE="/toolcache/node_modules_$(md5sum pnpm-lock.yaml | cut -d' ' -f1).tar.gz"
|
CACHE_KEY=$(md5sum pnpm-lock.yaml | cut -d' ' -f1)
|
||||||
if [ -f "$CACHE_FILE" ]; then
|
echo "缓存键: $CACHE_KEY"
|
||||||
echo "✅ 从 /toolcache 找到缓存文件,正在恢复..."
|
|
||||||
tar -xzf "$CACHE_FILE"
|
# 定义多个可能的缓存位置
|
||||||
echo "📦 恢复的 node_modules 大小:"
|
CACHE_LOCATIONS=(
|
||||||
du -sh node_modules || echo "node_modules 目录不存在"
|
"/toolcache/node_modules_${CACHE_KEY}.tar.gz"
|
||||||
|
"/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
|
||||||
|
for cache_file in "${CACHE_LOCATIONS[@]}"; do
|
||||||
|
echo "🔍 检查缓存文件: $cache_file"
|
||||||
|
if [ -f "$cache_file" ]; then
|
||||||
|
echo "✅ 找到缓存文件: $cache_file"
|
||||||
|
echo "📦 缓存文件大小: $(du -sh "$cache_file" | cut -f1)"
|
||||||
|
echo "正在恢复缓存..."
|
||||||
|
if tar -xzf "$cache_file"; then
|
||||||
|
echo "✅ 缓存恢复成功"
|
||||||
|
CACHE_RESTORED=true
|
||||||
|
break
|
||||||
else
|
else
|
||||||
echo "📥 未找到缓存,将重新安装依赖"
|
echo "❌ 缓存恢复失败: $cache_file"
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ "$CACHE_RESTORED" = false ]; then
|
||||||
|
echo "📥 未找到有效缓存,将重新安装依赖"
|
||||||
|
else
|
||||||
|
echo "📦 恢复的 node_modules 大小:"
|
||||||
|
du -sh node_modules 2>/dev/null || echo "node_modules 目录不存在"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
- name: 安装依赖
|
- name: 安装依赖
|
||||||
@@ -140,23 +177,108 @@ jobs:
|
|||||||
echo "📦 开始安装依赖..."
|
echo "📦 开始安装依赖..."
|
||||||
export PATH=$PATH:/usr/local/bin
|
export PATH=$PATH:/usr/local/bin
|
||||||
echo "开始时间: $(date)"
|
echo "开始时间: $(date)"
|
||||||
|
|
||||||
|
# 检查是否已有node_modules
|
||||||
|
if [ -d "node_modules" ] && [ -f "node_modules/.pnpm-debug.log" ]; then
|
||||||
|
echo "✅ 检测到已存在的node_modules,跳过安装"
|
||||||
|
else
|
||||||
|
echo "📥 执行pnpm install..."
|
||||||
pnpm install --frozen-lockfile
|
pnpm install --frozen-lockfile
|
||||||
echo "✅ 依赖安装完成"
|
echo "✅ 依赖安装完成"
|
||||||
|
fi
|
||||||
|
|
||||||
echo "📦 node_modules 目录大小:"
|
echo "📦 node_modules 目录大小:"
|
||||||
du -sh node_modules || echo "node_modules 目录不存在"
|
du -sh node_modules 2>/dev/null || echo "node_modules 目录不存在"
|
||||||
|
|
||||||
- name: 保存依赖缓存
|
- name: 保存依赖缓存
|
||||||
shell: bash
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
echo "💾 保存依赖缓存..."
|
echo "💾 保存依赖缓存..."
|
||||||
mkdir -p /toolcache
|
|
||||||
CACHE_FILE="/toolcache/node_modules_$(md5sum pnpm-lock.yaml | cut -d' ' -f1).tar.gz"
|
# 生成缓存键
|
||||||
tar -czf "$CACHE_FILE" node_modules
|
CACHE_KEY=$(md5sum pnpm-lock.yaml | cut -d' ' -f1)
|
||||||
|
echo "缓存键: $CACHE_KEY"
|
||||||
|
|
||||||
|
# 检查node_modules是否存在
|
||||||
|
if [ ! -d "node_modules" ]; then
|
||||||
|
echo "❌ node_modules 目录不存在,跳过缓存保存"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 尝试多个缓存位置
|
||||||
|
CACHE_LOCATIONS=(
|
||||||
|
"/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"
|
||||||
|
|
||||||
|
if tar -czf "$CACHE_FILE" node_modules; then
|
||||||
echo "✅ 缓存已保存到: $CACHE_FILE"
|
echo "✅ 缓存已保存到: $CACHE_FILE"
|
||||||
echo "📦 缓存文件大小:"
|
echo "📦 缓存文件大小: $(du -sh "$CACHE_FILE" | cut -f1)"
|
||||||
du -sh "$CACHE_FILE"
|
CACHE_SAVED=true
|
||||||
|
|
||||||
|
# 显示缓存目录内容
|
||||||
echo "🔍 缓存目录内容:"
|
echo "🔍 缓存目录内容:"
|
||||||
ls -la /toolcache/
|
ls -la "$cache_dir/" | head -10
|
||||||
|
break
|
||||||
|
else
|
||||||
|
echo "❌ 保存到 $cache_dir 失败"
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "❌ 目录 $cache_dir 不可写"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ "$CACHE_SAVED" = false ]; then
|
||||||
|
echo "⚠️ 警告:所有缓存位置都无法保存,缓存功能可能不可用"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "⏰ 等待30秒,让你检查缓存是否成功写入..."
|
||||||
|
echo "🕐 当前时间: $(date)"
|
||||||
|
echo "📊 缓存状态检查:"
|
||||||
|
|
||||||
|
# 每5秒检查一次缓存状态,持续30秒
|
||||||
|
for i in {1..6}; do
|
||||||
|
echo "=== 第 $i 次检查 (第 $((i*5)) 秒) ==="
|
||||||
|
echo "时间: $(date)"
|
||||||
|
|
||||||
|
for cache_dir in "${CACHE_LOCATIONS[@]}"; do
|
||||||
|
if [ -d "$cache_dir" ]; then
|
||||||
|
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
|
||||||
|
echo "✅ 缓存文件存在: $CACHE_FILE"
|
||||||
|
echo "📦 文件大小: $(du -sh "$CACHE_FILE" 2>/dev/null | cut -f1 || echo '无法获取大小')"
|
||||||
|
echo "📅 修改时间: $(stat -c %y "$CACHE_FILE" 2>/dev/null || echo '无法获取时间')"
|
||||||
|
else
|
||||||
|
echo "❌ 缓存文件不存在: $CACHE_FILE"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "❌ 目录不存在: $cache_dir"
|
||||||
|
fi
|
||||||
|
echo "---"
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ $i -lt 6 ]; then
|
||||||
|
echo "⏳ 等待5秒..."
|
||||||
|
sleep 5
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
echo "✅ 30秒等待完成,缓存检查结束"
|
||||||
|
echo "🕐 结束时间: $(date)"
|
||||||
|
|
||||||
- name: 验证依赖
|
- name: 验证依赖
|
||||||
shell: bash
|
shell: bash
|
||||||
|
|||||||
Reference in New Issue
Block a user