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

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

View File

@@ -12,8 +12,8 @@ jobs:
container:
image: gitea-ci-bash:latest
env:
# 指定容器将工具缓存路径存放到 /opt/hostedtoolcache该目录是Gitea Runner的标准工具缓存目录
# RUNNER_TOOL_CACHE: /opt/hostedtoolcache
# 指定容器将工具缓存路径存放到 /opt/hostedtoolcache2该目录是Gitea Runner的标准工具缓存目录
# RUNNER_TOOL_CACHE: /opt/hostedtoolcache2
steps:
- name: 检出代码
shell: bash
@@ -119,8 +119,8 @@ jobs:
shell: bash
run: |
echo "🔍 检查缓存目录权限和状态..."
echo "=== /opt/hostedtoolcache 目录检查 ==="
ls -la /opt/hostedtoolcache/ 2>/dev/null || echo "/opt/hostedtoolcache 目录不存在或无法访问"
echo "=== /opt/hostedtoolcache2 目录检查 ==="
ls -la /opt/hostedtoolcache2/ 2>/dev/null || echo "/opt/hostedtoolcache2 目录不存在或无法访问"
echo "=== /shared/cache 目录检查 ==="
ls -la /shared/cache/ 2>/dev/null || echo "/shared/cache 目录不存在或无法访问"
echo "=== /tmp 目录检查 ==="
@@ -132,51 +132,51 @@ jobs:
- name: 配置hostedtoolcache缓存目录
shell: bash
run: |
echo "🔧 配置 /opt/hostedtoolcache 缓存目录..."
echo "🔧 配置 /opt/hostedtoolcache2 缓存目录..."
# 检查 /opt/hostedtoolcache 目录
if [ ! -d "/opt/hostedtoolcache" ]; then
echo "📁 /opt/hostedtoolcache 目录不存在,尝试创建..."
if mkdir -p "/opt/hostedtoolcache" 2>/dev/null; then
echo "✅ /opt/hostedtoolcache 目录创建成功"
# 检查 /opt/hostedtoolcache2 目录
if [ ! -d "/opt/hostedtoolcache2" ]; then
echo "📁 /opt/hostedtoolcache2 目录不存在,尝试创建..."
if mkdir -p "/opt/hostedtoolcache2" 2>/dev/null; then
echo "✅ /opt/hostedtoolcache2 目录创建成功"
else
echo "❌ /opt/hostedtoolcache 目录创建失败"
echo "❌ /opt/hostedtoolcache2 目录创建失败"
exit 1
fi
fi
# 检查目录权限
if [ -w "/opt/hostedtoolcache" ]; then
echo "✅ /opt/hostedtoolcache 目录可写"
if [ -w "/opt/hostedtoolcache2" ]; then
echo "✅ /opt/hostedtoolcache2 目录可写"
# 设置权限
chmod 755 "/opt/hostedtoolcache" 2>/dev/null || echo "⚠️ 无法设置权限"
chmod 755 "/opt/hostedtoolcache2" 2>/dev/null || echo "⚠️ 无法设置权限"
# 创建测试文件
TEST_FILE="/opt/hostedtoolcache/test_write_$(date +%s)"
TEST_FILE="/opt/hostedtoolcache2/test_write_$(date +%s)"
if touch "$TEST_FILE" 2>/dev/null; then
echo "✅ /opt/hostedtoolcache 写入测试成功"
echo "✅ /opt/hostedtoolcache2 写入测试成功"
rm -f "$TEST_FILE"
echo "CACHE_DIR=/opt/hostedtoolcache" >> $GITHUB_ENV
echo "CACHE_DIR=/opt/hostedtoolcache2" >> $GITHUB_ENV
else
echo "❌ /opt/hostedtoolcache 写入测试失败"
echo "❌ /opt/hostedtoolcache2 写入测试失败"
exit 1
fi
else
echo "❌ /opt/hostedtoolcache 目录不可写"
echo "❌ /opt/hostedtoolcache2 目录不可写"
echo "🔧 尝试修改目录权限..."
chmod 755 "/opt/hostedtoolcache" 2>/dev/null || echo "⚠️ 无法修改权限"
if [ -w "/opt/hostedtoolcache" ]; then
chmod 755 "/opt/hostedtoolcache2" 2>/dev/null || echo "⚠️ 无法修改权限"
if [ -w "/opt/hostedtoolcache2" ]; then
echo "✅ 权限修改成功"
echo "CACHE_DIR=/opt/hostedtoolcache" >> $GITHUB_ENV
echo "CACHE_DIR=/opt/hostedtoolcache2" >> $GITHUB_ENV
else
echo "❌ 无法获得 /opt/hostedtoolcache 写入权限"
echo "❌ 无法获得 /opt/hostedtoolcache2 写入权限"
exit 1
fi
fi
echo "📊 缓存目录配置: /opt/hostedtoolcache"
echo "📊 缓存目录配置: /opt/hostedtoolcache2"
echo "📁 目录内容:"
ls -la /opt/hostedtoolcache/ 2>/dev/null || echo "目录为空或无法访问"
ls -la /opt/hostedtoolcache2/ 2>/dev/null || echo "目录为空或无法访问"
- name: 恢复依赖缓存
shell: bash
@@ -187,8 +187,8 @@ jobs:
CACHE_KEY=$(md5sum pnpm-lock.yaml | cut -d' ' -f1)
echo "缓存键: $CACHE_KEY"
# 使用 /opt/hostedtoolcache 目录
CACHE_FILE="/opt/hostedtoolcache/node_modules_${CACHE_KEY}.tar.gz"
# 使用 /opt/hostedtoolcache2 目录
CACHE_FILE="/opt/hostedtoolcache2/node_modules_${CACHE_KEY}.tar.gz"
echo "📁 检查缓存文件: $CACHE_FILE"
if [ -f "$CACHE_FILE" ]; then
@@ -265,8 +265,8 @@ jobs:
exit 0
fi
# 保存到 /opt/hostedtoolcache 目录
CACHE_FILE="/opt/hostedtoolcache/node_modules_${CACHE_KEY}.tar.gz"
# 保存到 /opt/hostedtoolcache2 目录
CACHE_FILE="/opt/hostedtoolcache2/node_modules_${CACHE_KEY}.tar.gz"
echo "📦 正在创建缓存文件: $CACHE_FILE"
if tar -czf "$CACHE_FILE" node_modules; then
@@ -275,12 +275,12 @@ jobs:
echo "📅 缓存文件创建时间: $(stat -c %y "$CACHE_FILE")"
# 显示缓存目录内容
echo "🔍 /opt/hostedtoolcache 目录内容:"
ls -la /opt/hostedtoolcache/ | head -10
echo "🔍 /opt/hostedtoolcache2 目录内容:"
ls -la /opt/hostedtoolcache2/ | head -10
# 创建测试文件验证写入权限
echo "🧪 创建测试文件验证写入权限..."
TEST_FILE="/opt/hostedtoolcache/test_file_$(date +%s).txt"
TEST_FILE="/opt/hostedtoolcache2/test_file_$(date +%s).txt"
echo "测试时间: $(date)" > "$TEST_FILE"
if [ -f "$TEST_FILE" ]; then
echo "✅ 测试文件创建成功: $TEST_FILE"
@@ -306,7 +306,7 @@ jobs:
echo "挂载点信息:"
mount | grep hostedtoolcache || echo "未找到hostedtoolcache挂载点"
echo "磁盘使用情况:"
df -h /opt/hostedtoolcache 2>/dev/null || echo "无法获取/opt/hostedtoolcache磁盘信息"
df -h /opt/hostedtoolcache2 2>/dev/null || echo "无法获取/opt/hostedtoolcache2磁盘信息"
echo "---"
# 每5秒检查一次缓存状态持续60秒
@@ -314,11 +314,11 @@ jobs:
echo "=== 第 $i 次检查 (第 $((i*5)) 秒) ==="
echo "时间: $(date)"
echo "📁 /opt/hostedtoolcache 目录详细信息:"
echo "目录权限: $(ls -ld /opt/hostedtoolcache 2>/dev/null || echo '无法获取权限')"
echo "目录所有者: $(stat -c '%U:%G' /opt/hostedtoolcache 2>/dev/null || echo '无法获取所有者')"
echo "📁 /opt/hostedtoolcache2 目录详细信息:"
echo "目录权限: $(ls -ld /opt/hostedtoolcache2 2>/dev/null || echo '无法获取权限')"
echo "目录所有者: $(stat -c '%U:%G' /opt/hostedtoolcache2 2>/dev/null || echo '无法获取所有者')"
echo "目录内容:"
ls -la /opt/hostedtoolcache/ 2>/dev/null | head -10 || echo "无法访问 /opt/hostedtoolcache"
ls -la /opt/hostedtoolcache2/ 2>/dev/null | head -10 || echo "无法访问 /opt/hostedtoolcache2"
if [ -f "$CACHE_FILE" ]; then
echo "✅ 缓存文件存在: $CACHE_FILE"
@@ -413,7 +413,7 @@ jobs:
cp -r dist/* deploy/
echo "📦 部署包已准备完成"
- name: 验证 /opt/hostedtoolcache 挂载情况(开始)
- name: 验证 /opt/hostedtoolcache2 挂载情况(开始)
shell: bash
run: |
echo "==== [挂载点检查-开始] ===="
@@ -423,17 +423,17 @@ jobs:
echo "工作目录: $(pwd)"
echo "[mount | grep hostedtoolcache] 输出:"
mount | grep hostedtoolcache || echo "未找到hostedtoolcache挂载点"
echo "[df -h /opt/hostedtoolcache] 输出:"
df -h /opt/hostedtoolcache 2>/dev/null || echo "无法获取/opt/hostedtoolcache磁盘信息"
echo "[ls -ld /opt/hostedtoolcache] 输出:"
ls -ld /opt/hostedtoolcache 2>/dev/null || echo "无法获取/opt/hostedtoolcache权限"
echo "[stat /opt/hostedtoolcache] 输出:"
stat /opt/hostedtoolcache 2>/dev/null || echo "无法获取/opt/hostedtoolcache stat"
echo "[ls -lai /opt/hostedtoolcache] 输出:"
ls -lai /opt/hostedtoolcache 2>/dev/null || echo "无法获取/opt/hostedtoolcache内容"
echo "[df -h /opt/hostedtoolcache2] 输出:"
df -h /opt/hostedtoolcache2 2>/dev/null || echo "无法获取/opt/hostedtoolcache2磁盘信息"
echo "[ls -ld /opt/hostedtoolcache2] 输出:"
ls -ld /opt/hostedtoolcache2 2>/dev/null || echo "无法获取/opt/hostedtoolcache2权限"
echo "[stat /opt/hostedtoolcache2] 输出:"
stat /opt/hostedtoolcache2 2>/dev/null || echo "无法获取/opt/hostedtoolcache2 stat"
echo "[ls -lai /opt/hostedtoolcache2] 输出:"
ls -lai /opt/hostedtoolcache2 2>/dev/null || echo "无法获取/opt/hostedtoolcache2内容"
echo "==== [挂载点检查-开始] ===="
- name: 验证 /opt/hostedtoolcache 挂载情况(保存缓存后)
- name: 验证 /opt/hostedtoolcache2 挂载情况(保存缓存后)
shell: bash
run: |
echo "==== [挂载点检查-保存缓存后] ===="
@@ -443,14 +443,14 @@ jobs:
echo "工作目录: $(pwd)"
echo "[mount | grep hostedtoolcache] 输出:"
mount | grep hostedtoolcache || echo "未找到hostedtoolcache挂载点"
echo "[df -h /opt/hostedtoolcache] 输出:"
df -h /opt/hostedtoolcache 2>/dev/null || echo "无法获取/opt/hostedtoolcache磁盘信息"
echo "[ls -ld /opt/hostedtoolcache] 输出:"
ls -ld /opt/hostedtoolcache 2>/dev/null || echo "无法获取/opt/hostedtoolcache权限"
echo "[stat /opt/hostedtoolcache] 输出:"
stat /opt/hostedtoolcache 2>/dev/null || echo "无法获取/opt/hostedtoolcache stat"
echo "[ls -lai /opt/hostedtoolcache] 输出:"
ls -lai /opt/hostedtoolcache 2>/dev/null || echo "无法获取/opt/hostedtoolcache内容"
echo "[df -h /opt/hostedtoolcache2] 输出:"
df -h /opt/hostedtoolcache2 2>/dev/null || echo "无法获取/opt/hostedtoolcache2磁盘信息"
echo "[ls -ld /opt/hostedtoolcache2] 输出:"
ls -ld /opt/hostedtoolcache2 2>/dev/null || echo "无法获取/opt/hostedtoolcache2权限"
echo "[stat /opt/hostedtoolcache2] 输出:"
stat /opt/hostedtoolcache2 2>/dev/null || echo "无法获取/opt/hostedtoolcache2 stat"
echo "[ls -lai /opt/hostedtoolcache2] 输出:"
ls -lai /opt/hostedtoolcache2 2>/dev/null || echo "无法获取/opt/hostedtoolcache2内容"
echo "==== [挂载点检查-保存缓存后] ===="
# - name: 复制构建产物到目标目录