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

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

View File

@@ -111,130 +111,17 @@ jobs:
npm install -g pnpm npm install -g pnpm
echo "✅ pnpm安装完成: $(pnpm --version)" echo "✅ pnpm安装完成: $(pnpm --version)"
fi fi
- name: Cache node modules
uses: actions/cache@v3
with:
path: node_modules
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-node-
- name: 设置 pnpm 缓存目录 - name: 安装依赖
shell: bash shell: bash
run: | run: |
echo "📦 设置 pnpm 缓存目录..." echo "📦 开始安装依赖..."
export PATH=$PATH:/usr/local/bin export PATH=$PATH:/usr/local/bin
# 检查挂载点
echo "🔍 检查挂载点状态..."
CACHE_DIR="/shared/pnpm-cache"
echo "检查目录: $CACHE_DIR"
# 强制创建目录(如果挂载存在但目录为空)
mkdir -p "$CACHE_DIR"
if [ -d "$CACHE_DIR" ]; then
echo " ✅ 目录存在"
ls -la "$CACHE_DIR" | head -5
if [ -w "$CACHE_DIR" ]; then
echo " ✅ 目录可写"
else
echo " ❌ 目录不可写,尝试修复权限"
chmod 777 "$CACHE_DIR" 2>/dev/null || echo " 无法修复权限"
if [ -w "$CACHE_DIR" ]; then
echo " ✅ 权限修复成功"
else
echo " ❌ 权限修复失败"
CACHE_DIR=""
fi
fi
else
echo " ❌ 目录不存在"
CACHE_DIR=""
fi
if [ -z "$CACHE_DIR" ]; then
echo "⚠️ 未找到外部缓存目录,使用临时目录"
CACHE_DIR="/tmp/pnpm-cache"
mkdir -p "$CACHE_DIR"
else
echo "✅ 使用外部缓存目录: $CACHE_DIR"
fi
# 强制设置缓存目录,覆盖 .npmrc 中的配置
pnpm config set store-dir "$CACHE_DIR" --global
pnpm config set cache-dir "$CACHE_DIR" --global
echo "配置的缓存目录: $CACHE_DIR"
echo "pnpm 实际缓存目录: $(pnpm store path)"
# 验证配置是否生效
echo "验证 pnpm 配置:"
echo "store-dir: $(pnpm config get store-dir)"
echo "cache-dir: $(pnpm config get cache-dir)"
# 测试挂载是否工作
echo "🧪 测试挂载功能..."
TEST_FILE="$CACHE_DIR/test-mount.txt"
echo "测试时间: $(date)" > "$TEST_FILE"
if [ -f "$TEST_FILE" ]; then
echo "✅ 挂载测试成功,文件写入正常"
rm "$TEST_FILE"
else
echo "❌ 挂载测试失败,无法写入文件"
fi
# 检查缓存状态
if [ -d "$CACHE_DIR/v10" ]; then
echo "✅ 找到外部缓存"
du -sh "$CACHE_DIR"
echo "缓存文件数量: $(find "$CACHE_DIR" -type f | wc -l)"
else
echo "📥 首次运行,无缓存"
fi
- name: 检测 pnpm 缓存目录是否为持久化挂载
shell: bash
run: |
echo "🔍 检测 $CACHE_DIR 是否为持久化挂载..."
CACHE_DIR="/shared/pnpm-cache"
if mountpoint -q "$CACHE_DIR"; then
echo "✅ $CACHE_DIR 是挂载点(持久化卷)"
else
echo "⚠️ $CACHE_DIR 不是挂载点,可能不是持久化卷"
fi
echo "挂载信息:"
df -h "$CACHE_DIR" || true
mount | grep "$CACHE_DIR" || true
- name: 输出 pnpm 缓存目录内容
shell: bash
run: |
echo "📂 输出 pnpm 缓存目录内容..."
CACHE_DIR="/shared/pnpm-cache"
if [ -d "$CACHE_DIR" ]; then
echo "--- $CACHE_DIR 内容 ---"
ls -lAh "$CACHE_DIR"
if [ -d "$CACHE_DIR/v10" ]; then
echo "--- $CACHE_DIR/v10 内容 ---"
ls -lAh "$CACHE_DIR/v10"
else
echo "$CACHE_DIR/v10 不存在"
fi
else
echo "$CACHE_DIR 不存在"
fi
- name: 缓存依赖
shell: bash
run: |
echo "📦 检查并恢复依赖缓存..."
export PATH=$PATH:/usr/local/bin
# 使用外部缓存时的优化
echo "📦 使用外部缓存优化..."
pnpm config set prefer-offline true
echo "开始时间: $(date)" echo "开始时间: $(date)"
pnpm install --frozen-lockfile pnpm install --frozen-lockfile
echo "✅ 依赖安装完成" echo "✅ 依赖安装完成"
echo "📦 node_modules 目录大小:"
du -sh node_modules || echo "node_modules 目录不存在"
- name: 验证依赖 - name: 验证依赖
shell: bash shell: bash