6.6 KiB
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 版本。
🎯 下一步行动
-
✅ 配置 Secrets
- 使用配置脚本或手动配置
- 至少配置 Debug 构建所需的 Secrets
-
✅ 测试 Debug 构建
- 推送代码到 develop 分支
- 确认构建成功
-
✅ 配置发布 Secrets
- 配置 Android 签名密钥
- 配置 iOS 证书和 Profile
-
✅ 创建第一个版本
- 创建标签触发 Release 构建
- 验证 GitHub Release 创建成功
-
✅ 配置 TestFlight (可选)
- 配置 App Store Connect API Keys
- 验证自动上传到 TestFlight
📞 获取帮助
如遇到问题,请查看:
配置检查完成! 🎉