feat: 并行化CI代码质量检查步骤
ci/woodpecker/push/woodpecker Pipeline is running

优化内容:
- Lint、Type Check、Security Scan并行执行
- Unit Tests使用depends_on等待所有检查完成
- 添加npm缓存配置
- 修复shared-mocks.tsx的ESLint错误

预期效果:
- 串行时间: 30s + 40s + 20s = 90s
- 并行时间: max(30s, 40s, 20s) = 40s
- 节省时间: 50s (55.6%改善)
This commit is contained in:
张翔
2026-03-29 11:41:30 +08:00
parent b5b207e5a1
commit 26aa13b5a4
80 changed files with 1113 additions and 4600 deletions
@@ -0,0 +1,217 @@
# CI/CD 修复验证清单
## 📋 基本信息
- **提交 SHA**: 34ce9fb
- **分支**: release/v1.0.0
- **提交时间**: 2026-03-29
- **Pipeline URL**: https://ci.f.novalon.cn/repos/1/pipeline
- **预期 Pipeline**: #30 或更新
---
## ✅ 验证清单
### 1. Git LFS 禁用验证
**预期结果**: Clone 步骤不应执行 LFS 相关命令
**检查步骤**:
- [ ] 访问 Pipeline 详情页
- [ ] 查看 Clone 步骤日志
- [ ] 确认日志中**不包含**以下内容:
- `git lfs fetch`
- `git lfs checkout`
- `Fetching reference refs/heads/release/v1.0.0`
**预期日志示例**:
```
+ git init --object-format sha1 -b release/v1.0.0
+ git config --global --replace-all safe.directory /woodpecker/src
+ git fetch --no-tags --depth=1 origin +34ce9fb:
+ git reset --hard -q 34ce9fb
+ git submodule update --init --recursive --depth=1 --recommend-shallow
```
**注意**: 不应出现 `git lfs` 相关命令
---
### 2. 企业微信通知验证
**预期结果**: 通知消息应正确显示环境变量值
**检查步骤**:
- [ ] 检查企业微信群聊是否收到通知
- [ ] 验证通知内容包含实际值:
- [ ] 分支: `release/v1.0.0`(而非 `${BRANCH}`
- [ ] 提交: `34ce9fb`(而非 `${COMMIT}`
- [ ] 作者: 实际作者名(而非 `${AUTHOR}`
- [ ] 提交信息: 实际提交信息
- [ ] Pipeline编号: 实际编号
- [ ] 时间: 实际时间戳
**预期通知格式**:
```
## 🚀 Novalon Website 部署通知
> **构建状态**: 成功
**项目信息**
> 分支: `release/v1.0.0`
> 提交: `34ce9fb`
> 作者: zhangxiang
**提交信息**
> fix: 修复CI/CD流程问题并建立监控机制
**操作**
> [查看构建详情](https://ci.f.novalon.cn/repos/1/pipeline/30)
---
> 时间: 2026-03-29 08:XX:XX
> Pipeline #30
```
**错误示例**(不应出现):
```
> 分支: `${BRANCH}`
> 提交: `${COMMIT}`
> 作者: ${AUTHOR}
```
---
### 3. 部署验证
**预期结果**: 部署成功,健康检查通过
**检查步骤**:
- [ ] 查看 deploy-production 步骤日志
- [ ] 确认以下步骤成功:
- [ ] Registry login
- [ ] Image pull
- [ ] Rolling update
- [ ] Database migration
- [ ] Health check (30次检查)
- [ ] 确认**未触发**回滚机制
**预期日志示例**:
```
=== Step 7: Health check ===
Waiting for service to be ready... (1/30)
Waiting for service to be ready... (2/30)
...
✅ Health check passed!
```
**错误示例**(不应出现):
```
❌ Health check failed, rolling back...
```
---
### 4. 完整流程验证
**预期结果**: 所有步骤按预期执行
**检查步骤**:
- [ ] lint - 通过
- [ ] type-check - 通过
- [ ] security-scan - 允许失败
- [ ] unit-tests - 通过
- [ ] e2e-standard - 通过
- [ ] e2e-deep - 通过
- [ ] e2e-performance - 通过
- [ ] e2e-accessibility - 通过
- [ ] e2e-visual - 通过
- [ ] build-image - 通过
- [ ] deploy-production - 通过
- [ ] archive-to-main - 通过
- [ ] notify-wechat-success - 通过
---
## 📊 验证结果记录
### Pipeline 执行情况
| 步骤 | 状态 | 备注 |
|------|------|------|
| Clone | ⏳ 待验证 | 重点验证LFS是否禁用 |
| lint | ⏳ 待验证 | |
| type-check | ⏳ 待验证 | |
| security-scan | ⏳ 待验证 | 允许失败 |
| unit-tests | ⏳ 待验证 | |
| e2e-standard | ⏳ 待验证 | |
| e2e-deep | ⏳ 待验证 | |
| e2e-performance | ⏳ 待验证 | |
| e2e-accessibility | ⏳ 待验证 | |
| e2e-visual | ⏳ 待验证 | |
| build-image | ⏳ 待验证 | |
| deploy-production | ⏳ 待验证 | 重点验证健康检查 |
| archive-to-main | ⏳ 待验证 | |
| notify-wechat | ⏳ 待验证 | 重点验证变量展开 |
### 关键问题验证
| 问题 | 修复方案 | 验证状态 |
|------|---------|---------|
| Git LFS 执行失败 | 添加 `lfs: false` | ⏳ 待验证 |
| 企业微信通知变量丢失 | 修正环境变量展开格式 | ⏳ 待验证 |
---
## 🔍 问题排查
### 如果 Clone 步骤仍显示 LFS 命令
**可能原因**:
1. Woodpecker CI 缓存未清除
2. Git 插件版本不支持 `lfs: false` 设置
**解决方案**:
```bash
# 检查 Woodpecker CI 版本
# 查看插件文档确认配置项
# 备选方案:在 Git 服务器端禁用 LFS
# 修改 forgejo-app.ini
```
### 如果企业微信通知仍显示变量名
**可能原因**:
1. 环境变量未正确传递
2. Shell 变量展开时机问题
**解决方案**:
```bash
# 本地测试
export WECHAT_WEBHOOK='your_webhook_url'
export CI_COMMIT_BRANCH='test-branch'
export CI_COMMIT_SHA='test123'
export CI_COMMIT_MESSAGE='test message'
export CI_COMMIT_AUTHOR='test-author'
export CI_PIPELINE_NUMBER='999'
export CI_REPO_ID='1'
./scripts/test-wechat-notify.sh
```
---
## ✅ 验证完成标准
- [ ] Git LFS 相关命令不再出现
- [ ] 企业微信通知正确显示所有变量值
- [ ] 部署成功,健康检查通过
- [ ] 所有测试步骤通过
- [ ] 企业微信群聊收到正确格式的通知
---
**验证人员**: 张翔
**验证日期**: 2026-03-29
**验证状态**: ⏳ 进行中