chore: 更新gitignore与CI工作流

- 更新.gitignore
- 更新.github/workflows/README.md
- 新增android-release.yml Android发布流程

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
iammm0
2026-02-11 16:06:22 +08:00
parent 44b405d647
commit c0ca5e0dbd
3 changed files with 319 additions and 0 deletions

View File

@@ -204,3 +204,112 @@ env:
- 工作流文件:`.github/workflows/docker-build-deploy.yml`
- Dockerfile`api/Dockerfile`
- Docker Compose`api/docker-compose.yml`
---
# Android Release 工作流
## 概述
自动构建生产环境签名 APK 并发布到 GitHub Releases
1. **构建阶段**:编译 Release APK使用生产签名配置
2. **发布阶段**:创建 GitHub Release将 APK 作为附件上传
## 工作流触发条件
- **Tag 推送**:推送 `v*` 格式的标签时自动触发(如 `v1.0.0`、`v1.2.3-beta`
- **手动触发**:通过 GitHub Actions 界面手动触发,可选指定版本号
## 配置步骤
### 1. 配置 GitHub Secrets
在 GitHub 仓库设置中添加以下 Secrets
| Secret | 说明 | 示例 |
|--------|------|------|
| `ANDROID_KEYSTORE_BASE64` | keystore 文件的 Base64 编码 | 见下方生成方法 |
| `ANDROID_KEY_ALIAS` | 密钥别名 | `suiyueshishu` |
| `ANDROID_KEY_PASSWORD` | 密钥密码 | |
| `ANDROID_STORE_PASSWORD` | keystore 密码 | |
#### 生成 ANDROID_KEYSTORE_BASE64
```bash
# 在本地项目 app-android 目录下执行
base64 -i release-keystore.jks | pbcopy # macOS结果已复制到剪贴板
# Linux
base64 -w 0 release-keystore.jks
```
将输出内容粘贴到 GitHub Secrets 的 `ANDROID_KEYSTORE_BASE64` 中。
### 2. 版本号管理
- **Tag 触发**:从 tag 名自动提取版本号(如 `v1.0.0` → `versionName = "1.0.0"`
- **手动触发**:使用输入的 `version_name`,或使用 `build.gradle.kts` 中的默认值
- **versionCode**:自动使用 `GITHUB_RUN_NUMBER` 递增
### 3. 发布流程
#### 方式一:通过 Tag 自动发布
```bash
# 打标签并推送
git tag v1.0.0
git push origin v1.0.0
# 或者一步完成
git tag v1.0.0 && git push origin v1.0.0
```
工作流将自动:
1. 构建签名 Release APK
2. 上传 APK 为 GitHub Artifact
3. 创建 GitHub Release附带 APK 和自动生成的更新日志)
#### 方式二:手动触发
1. 进入仓库的 Actions 标签页
2. 选择 "Android Release Build" 工作流
3. 点击 "Run workflow" 按钮
4. (可选)填写版本号
5. 点击 "Run workflow"
手动触发时仅构建 APK 并上传为 Artifact不会创建 GitHub Release。
## 工作流执行流程
1. 检出代码(完整历史)
2. 确定版本号Tag / 手动输入 / build.gradle.kts 默认值)
3. 设置 JDK 17 + Gradle 缓存
4. 解码签名 keystore + 生成 keystore.properties
5. 覆盖 build.gradle.kts 中的版本号
6. 执行 `./gradlew assembleRelease`
7. 上传 APK 为 Artifact保留 30 天)
8. Tag 触发时)生成 Release Notes 并创建 GitHub Release
## APK 命名规则
APK 文件命名格式:`岁月史书_v{版本号}_release.apk`
示例:`岁月史书_v1.0.0_release.apk`
## 故障排查
### 1. 签名失败
- 检查 `ANDROID_KEYSTORE_BASE64` 是否正确生成(不能有换行或空格)
- 确认 `ANDROID_KEY_ALIAS`、`ANDROID_KEY_PASSWORD`、`ANDROID_STORE_PASSWORD` 与 keystore 匹配
### 2. 构建失败
- 检查 Actions 日志中的 Gradle 错误输出
- 确认本地 `./gradlew assembleRelease` 可以成功
### 3. Release 创建失败
- 确认工作流有 `contents: write` 权限
- 检查 Tag 名称是否以 `v` 开头