Files
UUVPN/.github/workflows/CHECK_REPORT.md
T

6.6 KiB

CI/CD 配置检查报告

检查完成

已完成对 GitHub Actions CI/CD 配置文件的全面检查。


📁 已创建的文件

文件 路径 说明
build.yml .github/workflows/build.yml 主工作流配置文件
README.md .github/workflows/README.md 详细配置说明文档
QUICKSTART.md .github/workflows/QUICKSTART.md 快速入门指南
setup-secrets.sh .github/workflows/setup-secrets.sh macOS/Linux 配置脚本
setup-secrets.ps1 .github/workflows/setup-secrets.ps1 Windows 配置脚本

🔧 已修复的问题

问题 1: iOS 签名身份 Secret 名称不一致

  • 位置: build.yml 第 218 行
  • 问题: 使用了 IOS_SIGNING_identity (小写 identity)
  • 修复: 改为 IOS_SIGNING_IDENTITY (全大写,符合命名规范)

问题 2: 条件判断过于复杂

  • 位置: 多处
  • 问题: 使用了 startsWith(github.ref, 'refs/tags/v') || github.event.inputs.release_type == 'release' 复杂条件
  • 修复: 简化为 startsWith(github.ref, 'refs/tags/v'),只在创建标签时触发 Release 构建

配置验证清单

工作流触发条件

  • Push 到 main 分支 - 触发构建
  • Push 到 develop 分支 - 触发 Debug 构建
  • Pull Request - 触发 Debug 构建
  • 创建版本标签 (v*) - 触发 Release 构建
  • 手动触发 - 可选择构建平台和类型

Android 构建步骤

  • 检出代码和子模块
  • 安装 JDK 11
  • 安装 Go 1.23
  • 安装 Android SDK
  • 创建 local.properties
  • 配置签名密钥 (Release)
  • 构建 APK
  • 上传构建产物

iOS 构建步骤

  • 检出代码和子模块
  • 安装 Xcode 15.0
  • 安装开发者证书 (Release)
  • 安装 Provisioning Profile (Release)
  • 解析 Swift Package 依赖
  • 构建 Debug 版本 (模拟器)
  • 构建并归档 Release 版本
  • 导出 IPA
  • 上传构建产物

发布步骤

  • 下载 Android APK
  • 下载 iOS IPA
  • 创建 GitHub Release
  • 上传文件到 Release
  • 上传到 TestFlight (Beta 和正式版)
  • 发送 Telegram 通知
  • 清理旧的构建产物

⚠️ 使用前必须配置的 Secrets

Android 构建 (发布版本必需)

Secret 名称 说明 如何获取
ANDROID_KEYSTORE_BASE64 签名密钥库的 Base64 编码 使用 base64 命令转换
ANDROID_KEYSTORE_PASSWORD 密钥库密码 创建密钥库时设置
ANDROID_KEY_ALIAS 密钥别名 创建密钥库时设置
ANDROID_KEY_PASSWORD 密钥密码 创建密钥库时设置

注意: Debug 构建不需要配置这些 Secrets。

iOS 构建 (发布版本必需)

Secret 名称 说明 如何获取
IOS_CERTIFICATES_P12 开发者证书的 Base64 编码 从钥匙串导出 .p12 文件
IOS_CERTIFICATES_PASSWORD 证书密码 导出时设置
IOS_TEAM_ID Apple Team ID Apple Developer 账号
IOS_SIGNING_IDENTITY 签名身份 如: "Apple Distribution: Name (TEAM_ID)"
IOS_PROVISIONING_PROFILE Provisioning Profile 的 Base64 编码 Apple Developer 网站下载

注意: Debug 构建不需要配置这些 Secrets。

TestFlight 上传 (可选)

Secret 名称 说明 如何获取
APP_STORE_CONNECT_ISSUER_ID Issuer ID App Store Connect API Keys
APP_STORE_CONNECT_API_KEY_ID API Key ID 创建 API Key 时获得
APP_STORE_CONNECT_API_PRIVATE_KEY API 私钥 下载的 .p8 文件内容

通知 (可选)

Secret 名称 说明 如何获取
TELEGRAM_BOT_TOKEN Bot Token 通过 @BotFather 创建
TELEGRAM_CHAT_ID Chat ID 邀请 Bot 后获取

🚀 快速开始步骤

1. 配置 Secrets

Windows 用户:

cd D:\Code\UUVPN\.github\workflows
.\setup-secrets.ps1

macOS/Linux 用户:

cd /path/to/UUVPN/.github/workflows
chmod +x setup-secrets.sh
./setup-secrets.sh

2. 推送代码测试

# 推送到 develop 分支触发 Debug 构建
git checkout -b develop
git push origin develop

# 查看 Actions 页面确认构建成功

3. 创建发布版本

# 创建 Alpha 版本
git tag v1.0.0-alpha
git push origin v1.0.0-alpha

# 创建 Beta 版本 (会自动上传到 TestFlight)
git tag v1.0.0-beta
git push origin v1.0.0-beta

# 创建正式版本
git tag v1.0.0
git push origin v1.0.0

📊 预期行为

Debug 构建 (develop 分支或 PR)

Android:

  • 使用 Debug 签名
  • 构建 app-meta-alpha-debug.apk
  • 上传到 Artifacts (保留 30 天)

iOS:

  • 无签名
  • 构建模拟器版本
  • 上传 .app 文件到 Artifacts (保留 7 天)

Release 构建 (创建标签)

Android:

  • 使用自定义签名密钥
  • 构建 Release APK
  • 重命名为 UUVPN-Android-v1.0.0.apk
  • 上传到 GitHub Release

iOS:

  • 使用开发者证书签名
  • 导出 IPA 文件
  • 重命名为 UUVPN-iOS-v1.0.0.ipa
  • 上传到 GitHub Release
  • Beta 和正式版上传到 TestFlight

⏱️ 预计构建时间

平台 Debug 构建 Release 构建
Android 5-10 分钟 10-15 分钟
iOS 15-20 分钟 20-30 分钟

总计: 完整构建约 25-45 分钟


💰 成本估算

GitHub Actions 免费账户每月 2000 分钟:

构建类型 消耗时间 每月可构建次数
仅 Android ~10 分钟 ~200 次
仅 iOS ~200 分钟 (按 10 倍计) ~10 次
Android + iOS ~210 分钟 ~9 次

建议: 节省 macOS runner 时间,只在需要时构建 iOS 版本。


🎯 下一步行动

  1. 配置 Secrets

    • 使用配置脚本或手动配置
    • 至少配置 Debug 构建所需的 Secrets
  2. 测试 Debug 构建

    • 推送代码到 develop 分支
    • 确认构建成功
  3. 配置发布 Secrets

    • 配置 Android 签名密钥
    • 配置 iOS 证书和 Profile
  4. 创建第一个版本

    • 创建标签触发 Release 构建
    • 验证 GitHub Release 创建成功
  5. 配置 TestFlight (可选)

    • 配置 App Store Connect API Keys
    • 验证自动上传到 TestFlight

📞 获取帮助

如遇到问题,请查看:

  1. GitHub Actions 日志
  2. 配置文档
  3. 快速入门
  4. 项目 Issues

配置检查完成! 🎉