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

7.7 KiB
Raw Blame History

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 - 核心构建验证

    • 在每个push和PR时自动运行
    • Debug + Release 两种配置
    • 支持两个项目同时构建
    • 保存build artifacts用于检查
  2. Code Quality - 代码质量检查

    • 代码格式检查(dotnet format)
    • 编译错误/警告检测
    • 预留Qodana集成位置可选
  3. Release & Publish (多平台) 升级版

    • Windows: x64 + x86
    • Linux: x64
    • macOS: x64 + arm64 (Apple Silicon)
    • 基于Git标签自动触发
    • 支持手动选择构建平台
    • 自动创建GitHub Release
  4. Issue Management - 自动化问题管理

    • 每日标记过期问题
    • 自动关闭无活动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. 验证工作流正常运行

# 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可选

# 本地修改版本号(如果需要)
# 然后创建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标签查看错误日志
  • 检查分支保护规则是否冲突

构建失败?

# 本地重现CI环境
dotnet clean
dotnet restore
dotnet build LanMontainDesktop/LanMontainDesktop.csproj -c Release

PR检查无法通过

  1. 本地运行 dotnet format
  2. 确保没有编译警告
  3. 所有测试通过

📚 参考资源

完成清单

  • 构建工作流
  • 代码质量检查
  • 发布自动化
  • Issue管理
  • PR模板
  • Issue模板
  • CODEOWNERS定义
  • 完整文档
  • 调试并测试所有工作流
  • 配置Qodana可选
  • 配置分支保护规则(推荐)

🎓 下一步建议

  1. 立即做

    • 推送所有文件到GitHub
    • 验证工作流运行成功
    • 配置分支保护规则
  2. 本周内

    • 在贡献指南中记录工作流
    • 团队成员熟悉PR流程
    • 测试第一个Release构建
  3. 后续优化

    • 基于实际运行数据调整参数
    • 添加额外的检查(危险代码扫描等)
    • 集成代码覆盖率报告
    • 准备多平台构建(需要)

创建时间: 2026-03-04
参考项目: ClassIsland
目标: 提高代码质量和发布效率 🚀