镜像自地址
https://github.com/lhly/cloud-drive-renamer.git
已同步 2026-10-20 05:37:47 +08:00
150 行
4.4 KiB
YAML
150 行
4.4 KiB
YAML
# ==========================================
|
|
# GitHub Actions Workflow: Continuous Integration
|
|
# ==========================================
|
|
#
|
|
# 功能:持续集成测试和代码质量检查
|
|
#
|
|
# 触发条件:
|
|
# - Pull Request 创建或更新
|
|
# - 推送到 main 分支
|
|
#
|
|
# 工作流程:
|
|
# 1. 依赖安装和缓存
|
|
# 2. 运行测试套件
|
|
# 3. TypeScript 类型检查
|
|
# 4. ESLint 代码检查
|
|
# 5. 验证构建成功
|
|
#
|
|
# 目的:
|
|
# - 确保所有代码变更通过质量检查
|
|
# - 在合并前发现潜在问题
|
|
# - 保持代码库健康
|
|
#
|
|
# ==========================================
|
|
|
|
name: CI
|
|
|
|
# 触发条件
|
|
on:
|
|
push:
|
|
branches:
|
|
- main
|
|
pull_request:
|
|
branches:
|
|
- main
|
|
|
|
# 取消正在运行的相同工作流
|
|
concurrency:
|
|
group: ${{ github.workflow }}-${{ github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
# 环境变量
|
|
env:
|
|
NODE_VERSION: '20'
|
|
|
|
jobs:
|
|
# ==========================================
|
|
# Job: 质量检查
|
|
# ==========================================
|
|
quality-check:
|
|
name: Quality Check
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
# ------------------------------------------
|
|
# 步骤 1: 检出代码
|
|
# ------------------------------------------
|
|
- name: 📥 Checkout repository
|
|
uses: actions/checkout@v4
|
|
|
|
# ------------------------------------------
|
|
# 步骤 2: 设置 pnpm
|
|
# ------------------------------------------
|
|
- name: 📦 Setup pnpm
|
|
uses: pnpm/action-setup@v4
|
|
|
|
# ------------------------------------------
|
|
# 步骤 3: 设置 Node.js
|
|
# ------------------------------------------
|
|
- name: 🔧 Setup Node.js
|
|
uses: actions/setup-node@v4
|
|
with:
|
|
node-version: ${{ env.NODE_VERSION }}
|
|
cache: 'pnpm'
|
|
|
|
# ------------------------------------------
|
|
# 步骤 4: 安装依赖
|
|
# ------------------------------------------
|
|
- name: 📦 Install dependencies
|
|
run: pnpm install --frozen-lockfile
|
|
|
|
# ------------------------------------------
|
|
# 步骤 5: 运行完整 CI 流程(质量检查 + 构建)
|
|
# ------------------------------------------
|
|
- name: 🚀 Run CI pipeline
|
|
run: pnpm run ci
|
|
continue-on-error: false
|
|
timeout-minutes: 5
|
|
|
|
# ------------------------------------------
|
|
# 步骤 5: 上传测试覆盖率报告
|
|
# ------------------------------------------
|
|
- name: 📊 Upload coverage reports
|
|
uses: actions/upload-artifact@v4
|
|
if: always()
|
|
with:
|
|
name: coverage-report
|
|
path: coverage/
|
|
retention-days: 7
|
|
|
|
# ------------------------------------------
|
|
# 步骤 6: 验证构建产物
|
|
# ------------------------------------------
|
|
- name: ✅ Verify build artifacts
|
|
run: |
|
|
echo "📋 Verifying build artifacts..."
|
|
|
|
# 检查关键文件
|
|
required_files=(
|
|
"dist/manifest.json"
|
|
"dist/icons/icon16.png"
|
|
"dist/icons/icon48.png"
|
|
"dist/icons/icon128.png"
|
|
)
|
|
|
|
all_ok=true
|
|
for file in "${required_files[@]}"; do
|
|
if test -f "$file"; then
|
|
echo "✅ $file exists"
|
|
else
|
|
echo "❌ $file NOT FOUND"
|
|
all_ok=false
|
|
fi
|
|
done
|
|
|
|
if [ "$all_ok" = true ]; then
|
|
echo "✅ Build verification passed"
|
|
exit 0
|
|
else
|
|
echo "❌ Build verification FAILED"
|
|
exit 1
|
|
fi
|
|
|
|
# ------------------------------------------
|
|
# 步骤 7: CI 总结
|
|
# ------------------------------------------
|
|
- name: 📣 CI Summary
|
|
if: success()
|
|
run: |
|
|
echo "## ✅ CI Checks Completed" >> $GITHUB_STEP_SUMMARY
|
|
echo "" >> $GITHUB_STEP_SUMMARY
|
|
echo "All quality checks passed successfully:" >> $GITHUB_STEP_SUMMARY
|
|
echo "- ✅ Code linting (ESLint)" >> $GITHUB_STEP_SUMMARY
|
|
echo "- ✅ Type checking (TypeScript)" >> $GITHUB_STEP_SUMMARY
|
|
echo "- ✅ Unit tests with coverage" >> $GITHUB_STEP_SUMMARY
|
|
echo "- ✅ Build succeeded and verified" >> $GITHUB_STEP_SUMMARY
|
|
echo "" >> $GITHUB_STEP_SUMMARY
|
|
echo "### 📊 Performance" >> $GITHUB_STEP_SUMMARY
|
|
echo "- Single command execution (no redundant checks)" >> $GITHUB_STEP_SUMMARY
|
|
echo "- Optimized CI pipeline" >> $GITHUB_STEP_SUMMARY
|