Files
LanMountainDesktop/CICD_EVALUATION.md
lincube e8276c4d1e 0.2.7
修改天气组件,ci工作流
2026-03-04 02:02:34 +08:00

264 lines
7.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# LanMontainDesktop CI/CD 评估与实现方案
## 📊 项目分析
### 项目特征
| 特性 | 详情 |
|------|------|
| **框架** | Avalonia 11 (.NET 10) |
| **主平台** | Windows (x64/x86) |
| **项目数量** | 2个主项目 + 1个测试项目 |
| **后端** | ASP.NET Core Web API (RecommendationBackend) |
| **特殊能力** | 视频壁纸支持 (LibVLC) |
| **发布方式** | PowerShell脚本 (scripts/package.ps1) |
### 与ClassIsland的对比
| 方面 | LanMontainDesktop | ClassIsland |
|------|-------------------|-------------|
| 平台覆盖 | 🔷 主要Windows | 🟢 多平台(Win/Linux/macOS) |
| 构建复杂度 | 🔷 中等 | 🔴 很高(专业级) |
| 发布周期 | 🔷 按需 | 🔴 频繁release |
| CI配置 | 🔴 无 | 🟢 完整 |
| 代码质量检查 | 🔴 无 | 🟢 Qodana集成 |
## 🎯 推荐方案(渐进式)
### **阶段1基础CI已完成 ✅)**
实现核心构建验证支持每次commit自动检查
-**Build Workflow** - 每次push/PR自动构建
- Debug + Release 配置
- 两个项目同时构建
- 保存build artifacts
-**Code Quality** - 代码检查
- dotnet format检查
- 编译警告/错误检测
- Qodana集成可选
-**PR Template** - 统一pull request规范
- 变更类型分类
- 测试清单
- 截图/视频支持
-**Issue Templates** - GitHub问题规范
- 🐛 Bug Report
- ✨ Feature Request
- ⚙️ Configuration Issues
### **阶段2多平台发布自动化已完成 ✅)**
完整的跨平台构建与自动化发布
-**多平台Release Workflow** - Git tag触发全平台构建
- 🪟 **Windows**: x64 + x86 自包含可执行文件
- 🐧 **Linux**: x64 tar.gz包支持自定义架构
- 🍎 **macOS**: x64 + arm64 (Apple Silicon) tar.gz包
- 自动版本号更新
- 统一artifact命名
- GitHub Release自动创建详细说明
-**构建脚本支持**
- PowerShell脚本处理Windows特定依赖
- Bash脚本统一处理Linux/macOS
- .gitattributes确保行尾兼容
-**灵活的手动触发**
- 支持选择性构建仅Windows/Linux/macOS
- 预发布标记支持
- 版本号手动指定
-**Issue Management** - 自动化问题管理
- 自动标记过期问题
- 自动关闭无活动PR
- 可自定义时间阈值
### **阶段3建议未来优化**
- 🔲 **安装程序生成** - MSI/EXE (Windows), .deb (Linux), DMG (macOS)
- 🔲 **代码签名** - macOS notarization, Windows签名
- 🔲 **AppImage/Snap** - Linux现代打包格式
- 🔲 **Docker镜像** - 后端容器化
- 🔲 **测试覆盖报告** - Codecov集成
- 🔲 **性能基准测试** - PR性能对比
- 🔲 **自动更新检查** - 依赖版本检查
## 🔧 创建的GitHub工作流与脚本
### 工作流文件4个
1. **[Build & Test](/.github/workflows/build.yml)** - 核心构建验证
- 在每个push和PR时自动运行
- Debug + Release 两种配置
- 支持两个项目同时构建
- 保存build artifacts用于检查
2. **[Code Quality](/.github/workflows/code-quality.yml)** - 代码质量检查
- 代码格式检查(`dotnet format`)
- 编译错误/警告检测
- 预留Qodana集成位置可选
3. **[Release & Publish (多平台)](/.github/workflows/release.yml)** ⭐ 升级版
- **Windows**: x64 + x86
- **Linux**: x64
- **macOS**: x64 + arm64 (Apple Silicon)
- 基于Git标签自动触发
- 支持手动选择构建平台
- 自动创建GitHub Release
4. **[Issue Management](/.github/workflows/issue-management.yml)** - 自动化问题管理
- 每日标记过期问题
- 自动关闭无活动PR
- 可自定义时间阈值
### 构建脚本
| 脚本 | 平台 | 功能 |
|------|------|------|
| `LanMontainDesktop\scripts\package.ps1` | Windows | 现有PowerShell打包脚本 |
| `scripts\build.sh` | Linux/macOS | 新增跨平台构建脚本 |
### 配置文件
| 文件 | 用途 |
|------|------|
| `.gitattributes` | 行尾处理,确保跨平台兼容 |
| `.github/CODEOWNERS` | 代码所有权定义 |
| `.github/pull_request_template.md` | PR提交规范 |
| `.github/ISSUE_TEMPLATE/*.md` | Issue模板 |
| `.github/WORKFLOWS_GUIDE.md` | 工作流使用指南 |
| `.github/MULTIPLATFORM_BUILD.md` | 多平台构建详细指南 ⭐ |
## 🚀 快速开始
### 1. 验证工作流正常运行
```bash
# Push到main分支
git add .github/
git commit -m "feat: Add GitHub CI/CD workflows"
git push origin main
# 检查GitHub Actions是否自动运行
# https://github.com/YOUR_ORG/LanMontainDesktop/actions
```
### 2. 创建第一个Release可选
```bash
# 本地修改版本号(如果需要)
# 然后创建tag
git tag v1.0.0
git push origin v1.0.0
# GitHub Actions会自动
# 1. 更新版本号
# 2. 构建Release版本
# 3. 创建可执行文件
# 4. 生成GitHub Release
```
### 3. 配置分支保护规则(推荐)
在 GitHub > Settings > Branches > Branch Protection Rules
- 要求CI检查通过再merge
- 要求PR审查
- 要求代码最新
## ⚙️ 配置选项
### 可选启用Qodana代码分析
1. 访问 https://qodana.cloud
2. 注册并创建organization token
3. 在GitHub > Settings > Secrets > Actions 中添加:
- `QODANA_TOKEN`
- `QODANA_ENDPOINT=https://qodana.cloud`
4.`.github/workflows/code-quality.yml` 中取消Qodana步骤注释
### 自定义构建参数
编辑 `.github/workflows/` 中的yml文件
- `DOTNET_VERSION` - 改变.NET版本
- 分支列表 - 改变监控的分支
- 矩阵配置 - 添加更多构建配置
## 📊 工作流对比与选择
### Build日语言表
| 工作流 | 触发条件 | 运行时间 | 成本 |
|--------|---------|--------|------|
| Build | 每个push/PR | ~2-3分钟 | 低 |
| Code Quality | PR/push | ~2-3分钟 | 低 |
| Release | Tag push | ~5-10分钟 | 中 |
| Issue Mgmt | 每天1次 | ~1分钟 | 很低 |
### 预计月度GitHub Actions使用
- **小项目**(<5贡献者): 100-200 runner hours
- **中等项目**(5-20贡献者): 300-500 runner hours
- **大项目**>20贡献者): 800+ runner hours
> 💡 **免费额度**: 2000 runner hours/月 (对大多数开源项目足够)
## 🔍 故障排查
### 工作流不运行?
- [ ] 检查 `.github/workflows/*.yml` 语法YAML缩进
- [ ] 确认分支名称配置正确
- [ ] 查看Actions标签查看错误日志
- [ ] 检查分支保护规则是否冲突
### 构建失败?
```bash
# 本地重现CI环境
dotnet clean
dotnet restore
dotnet build LanMontainDesktop/LanMontainDesktop.csproj -c Release
```
### PR检查无法通过
1. 本地运行 `dotnet format`
2. 确保没有编译警告
3. 所有测试通过
## 📚 参考资源
- [.github/WORKFLOWS_GUIDE.md](.github/WORKFLOWS_GUIDE.md) - 详细使用指南
- [GitHub Actions文档](https://docs.github.com/actions)
- [ClassIsland CI/CD参考](https://github.com/ClassIsland/ClassIsland/.github/workflows)
- [Avalonia发布指南](https://docs.avaloniaui.net/docs/deployment)
## ✅ 完成清单
- [x] 构建工作流
- [x] 代码质量检查
- [x] 发布自动化
- [x] Issue管理
- [x] PR模板
- [x] Issue模板
- [x] CODEOWNERS定义
- [x] 完整文档
- [ ] 调试并测试所有工作流
- [ ] 配置Qodana可选
- [ ] 配置分支保护规则(推荐)
## 🎓 下一步建议
1. **立即做**
- 推送所有文件到GitHub
- 验证工作流运行成功
- 配置分支保护规则
2. **本周内**
- 在贡献指南中记录工作流
- 团队成员熟悉PR流程
- 测试第一个Release构建
3. **后续优化**
- 基于实际运行数据调整参数
- 添加额外的检查(危险代码扫描等)
- 集成代码覆盖率报告
- 准备多平台构建(需要)
---
**创建时间**: 2026-03-04
**参考项目**: ClassIsland
**目标**: 提高代码质量和发布效率 🚀