mirror of
https://github.com/Minidoracat/mcp-feedback-enhanced.git
synced 2025-07-27 02:22:26 +08:00
3.8 KiB
3.8 KiB
GitHub Actions 工作流程說明
本項目使用雙工作流程架構來優化構建和發佈流程。
🏗️ 工作流程架構
1. 桌面應用構建工作流程 (build-desktop.yml)
用途: 專門負責構建多平台桌面應用二進制文件
觸發條件:
- 手動觸發 (workflow_dispatch)
- 桌面應用代碼變更時自動觸發 (
src-tauri/**
,scripts/build_desktop.py
) - Pull Request 中的桌面應用變更
功能:
- 在各自原生平台上構建桌面應用
- 支援選擇性平台構建
- 上傳構建產物到 GitHub Artifacts (保留 30 天)
- 提供詳細的構建摘要
支援平台:
- Windows x64 (
windows-latest
) - macOS Intel (
macos-latest
+x86_64-apple-darwin
) - macOS Apple Silicon (
macos-latest
+aarch64-apple-darwin
) - Linux x64 (
ubuntu-latest
)
2. 發佈工作流程 (publish.yml)
用途: 負責版本管理和 PyPI 發佈
觸發條件:
- 手動觸發 (workflow_dispatch)
功能:
- 自動或手動版本號管理
- 可選擇是否包含桌面應用
- 從最新的桌面應用構建下載二進制文件
- 發佈到 PyPI
- 創建 GitHub Release
🚀 使用方式
開發桌面應用時
- 修改桌面應用代碼 (
src-tauri/
目錄) - 自動觸發構建 - 推送到 main 分支會自動觸發桌面應用構建
- 手動觸發構建 (可選) - 在 GitHub Actions 頁面手動運行 "Build Desktop Applications"
發佈新版本時
- 確保桌面應用已構建 - 檢查最新的 "Build Desktop Applications" 工作流程是否成功
- 手動觸發發佈 - 在 GitHub Actions 頁面運行 "Auto Release to PyPI"
- 選擇發佈選項:
version_type
: patch/minor/major (或使用 custom_version)include_desktop
: 是否包含桌面應用 (預設: true)desktop_build_run_id
: 指定特定的構建 ID (可選)
📋 最佳實踐
桌面應用構建
# 本地測試桌面應用構建
python scripts/build_desktop.py --release
# 檢查構建產物
ls -la src/mcp_feedback_enhanced/desktop_release/
ls -la src/mcp_feedback_enhanced/desktop_app/
發佈流程
-
準備發佈:
- 更新 CHANGELOG 文件
- 確保桌面應用構建成功
- 測試本地功能
-
執行發佈:
- 手動觸發 "Auto Release to PyPI" 工作流程
- 選擇適當的版本類型
- 確認包含桌面應用 (如果需要)
-
發佈後驗證:
- 檢查 PyPI 上的新版本
- 測試安裝:
uvx mcp-feedback-enhanced@latest
- 測試桌面模式:
uvx mcp-feedback-enhanced@latest test --desktop
🔧 故障排除
桌面應用構建失敗
-
檢查構建日誌 - 查看 GitHub Actions 中的詳細錯誤信息
-
平台特定問題:
- macOS: 可能缺少 Xcode 命令行工具
- Linux: 可能缺少系統依賴 (GTK, Cairo 等)
- Windows: 通常構建成功
-
本地測試 - 在對應平台上運行本地構建腳本
發佈時桌面應用缺失
- 檢查構建狀態 - 確保最新的桌面應用構建成功
- 手動指定構建 - 使用
desktop_build_run_id
參數指定特定的成功構建 - 跳過桌面應用 - 設置
include_desktop: false
僅發佈 Web 版本
📊 工作流程優勢
效率提升
- 分離關注點: 構建和發佈獨立進行
- 避免重複構建: 不是每次發佈都需要重新構建桌面應用
- 快速發佈: 發佈流程更快速,特別是僅修改 Python 代碼時
靈活性
- 選擇性構建: 可以只構建特定平台
- 選擇性發佈: 可以選擇是否包含桌面應用
- 版本控制: 可以使用不同的桌面應用構建版本
可靠性
- 原生構建: 每個平台在其原生環境中構建
- 構建緩存: 利用 GitHub Actions 緩存加速構建
- 錯誤隔離: 桌面應用構建失敗不會影響 Web 版本發佈