From e215a922acb954bbef556dbbdc3b1c17da2c56d4 Mon Sep 17 00:00:00 2001 From: hu xiaotong <416314413@163.com> Date: Tue, 8 Jul 2025 09:05:23 +0800 Subject: [PATCH] =?UTF-8?q?ci:=20=E6=B7=BB=E5=8A=A0=20Epic=20UI=20?= =?UTF-8?q?=E6=9E=84=E5=BB=BA=E5=92=8C=E9=83=A8=E7=BD=B2=E5=B7=A5=E4=BD=9C?= =?UTF-8?q?=E6=B5=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增 CI/CD 工作流文件,实现前端项目的自动构建和部署 - 支持 main、master 和 develop 分支的自动构建- 包含代码检出、环境安装、依赖管理、项目构建等步骤 - 实现构建产物的自动部署和 Docker 容器重启 --- .gitea/workflows/ci.yaml | 172 +++++++++++++++++++++------------------ 1 file changed, 91 insertions(+), 81 deletions(-) diff --git a/.gitea/workflows/ci.yaml b/.gitea/workflows/ci.yaml index 6e2fde6..457d8f3 100644 --- a/.gitea/workflows/ci.yaml +++ b/.gitea/workflows/ci.yaml @@ -129,6 +129,55 @@ jobs: pwd 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: 恢复依赖缓存 shell: bash run: | @@ -138,37 +187,26 @@ jobs: CACHE_KEY=$(md5sum pnpm-lock.yaml | cut -d' ' -f1) echo "缓存键: $CACHE_KEY" - # 定义多个可能的缓存位置 - CACHE_LOCATIONS=( - "/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" - ) + # 只使用 /toolcache 目录 + CACHE_FILE="/toolcache/node_modules_${CACHE_KEY}.tar.gz" + echo "📁 检查缓存文件: $CACHE_FILE" - 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 - echo "❌ 缓存恢复失败: $cache_file" - continue - fi + if [ -f "$CACHE_FILE" ]; then + echo "✅ 找到缓存文件: $CACHE_FILE" + echo "📦 缓存文件大小: $(du -sh "$CACHE_FILE" | cut -f1)" + echo "📅 缓存文件修改时间: $(stat -c %y "$CACHE_FILE")" + echo "正在恢复缓存..." + + if tar -xzf "$CACHE_FILE"; then + echo "✅ 缓存恢复成功" + echo "📦 恢复的 node_modules 大小:" + du -sh node_modules 2>/dev/null || echo "node_modules 目录不存在" + else + echo "❌ 缓存恢复失败" + echo "📥 将重新安装依赖" fi - done - - if [ "$CACHE_RESTORED" = false ]; then - echo "📥 未找到有效缓存,将重新安装依赖" else - echo "📦 恢复的 node_modules 大小:" - du -sh node_modules 2>/dev/null || echo "node_modules 目录不存在" + echo "📥 未找到缓存文件,将重新安装依赖" fi - name: 安装依赖 @@ -205,42 +243,21 @@ jobs: exit 0 fi - # 尝试多个缓存位置 - CACHE_LOCATIONS=( - "/toolcache" - "/shared/cache" - "/tmp" - "/var/cache" - ) + # 只保存到 /toolcache 目录 + CACHE_FILE="/toolcache/node_modules_${CACHE_KEY}.tar.gz" + echo "📦 正在创建缓存文件: $CACHE_FILE" - 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 "📦 缓存文件大小: $(du -sh "$CACHE_FILE" | cut -f1)" - CACHE_SAVED=true - - # 显示缓存目录内容 - echo "🔍 缓存目录内容:" - 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 "⚠️ 警告:所有缓存位置都无法保存,缓存功能可能不可用" + if tar -czf "$CACHE_FILE" node_modules; then + echo "✅ 缓存已保存到: $CACHE_FILE" + echo "📦 缓存文件大小: $(du -sh "$CACHE_FILE" | cut -f1)" + echo "📅 缓存文件创建时间: $(stat -c %y "$CACHE_FILE")" + + # 显示缓存目录内容 + echo "🔍 /toolcache 目录内容:" + ls -la /toolcache/ | head -10 + else + echo "❌ 缓存保存失败" + exit 1 fi echo "⏰ 等待30秒,让你检查缓存是否成功写入..." @@ -252,24 +269,17 @@ jobs: 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 + echo "📁 /toolcache 目录内容:" + ls -la /toolcache/ 2>/dev/null | head -5 || echo "无法访问 /toolcache" + + 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 + echo "---" if [ $i -lt 6 ]; then echo "⏳ 等待5秒..."