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

254 lines
6.6 KiB
Markdown

# 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 用户**:
```powershell
cd D:\Code\UUVPN\.github\workflows
.\setup-secrets.ps1
```
**macOS/Linux 用户**:
```bash
cd /path/to/UUVPN/.github/workflows
chmod +x setup-secrets.sh
./setup-secrets.sh
```
### 2. 推送代码测试
```bash
# 推送到 develop 分支触发 Debug 构建
git checkout -b develop
git push origin develop
# 查看 Actions 页面确认构建成功
```
### 3. 创建发布版本
```bash
# 创建 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 日志](https://github.com/你的用户名/UUVPN/actions)
2. [配置文档](.github/workflows/README.md)
3. [快速入门](.github/workflows/QUICKSTART.md)
4. [项目 Issues](https://github.com/nicolastinkl/UUVPN/issues)
---
**配置检查完成! 🎉**