mirror of
https://gitcode.com/github-mirrors/react-native-update-cli.git
synced 2025-09-16 09:41:38 +08:00

* add logic to support SENTRY_PROPERTIES parameter * remove update.json and meta.json files in ppk * udpapte * refactor modles * update * add package-module file * update * update readme file * modifu cli.json file * fix command issues * improve version workflow logic * udpate * update * update * update * udpate * udpate * add example * update readme file * udpate version * change logic to use pushy command uniformly
471 lines
13 KiB
Markdown
471 lines
13 KiB
Markdown
# 核心模块增强工作流
|
||
|
||
这个文档详细介绍了为React Native Update CLI核心模块设计的增强工作流,包括`app-module`、`bundle-module`、`package-module`、`user-module`、`version-module`的高级工作流功能。
|
||
|
||
## 📋 目录
|
||
|
||
- [App模块工作流](#app模块工作流)
|
||
- [Bundle模块工作流](#bundle模块工作流)
|
||
- [Package模块工作流](#package模块工作流)
|
||
- [User模块工作流](#user模块工作流)
|
||
- [Version模块工作流](#version模块工作流)
|
||
- [工作流使用示例](#工作流使用示例)
|
||
- [最佳实践](#最佳实践)
|
||
|
||
## 🚀 快速开始
|
||
|
||
```bash
|
||
# 运行所有增强工作流演示
|
||
npx ts-node example/scripts/enhanced-workflow-demo.ts
|
||
|
||
# 交互式执行特定工作流
|
||
npx ts-node example/scripts/enhanced-workflow-demo.ts interactive [工作流名称] [参数...]
|
||
|
||
# 示例:应用初始化
|
||
npx ts-node example/scripts/enhanced-workflow-demo.ts interactive app-initialization --name MyApp --platform ios
|
||
|
||
# 示例:智能打包
|
||
npx ts-node example/scripts/enhanced-workflow-demo.ts interactive intelligent-bundle --platform android --optimize true
|
||
|
||
# 示例:版本发布
|
||
npx ts-node example/scripts/enhanced-workflow-demo.ts interactive version-release-management --name v1.0.0 --platform ios --dryRun true
|
||
```
|
||
|
||
---
|
||
|
||
## 📱 App模块工作流
|
||
|
||
### 1. 应用初始化工作流 (`app-initialization`)
|
||
|
||
**用途**: 完整的应用创建和初始化流程
|
||
|
||
**功能特性**:
|
||
- ✅ 参数验证和格式检查
|
||
- ✅ 应用存在性检查和冲突处理
|
||
- ✅ 应用创建和配置
|
||
- ✅ 自动选择新创建的应用
|
||
- ✅ 完整性验证和健康检查
|
||
|
||
**工作流步骤**:
|
||
1. **参数验证**: 检查应用名称、平台、下载URL格式
|
||
2. **存在性检查**: 验证应用是否已存在,支持强制覆盖
|
||
3. **应用创建**: 执行应用创建操作
|
||
4. **基本配置**: 设置更新策略、安全参数、版本控制
|
||
5. **应用选择**: 自动选择新创建的应用
|
||
6. **设置验证**: 验证应用配置的完整性和可用性
|
||
|
||
**使用示例**:
|
||
```typescript
|
||
await moduleManager.executeWorkflow('app-initialization', {
|
||
args: [],
|
||
options: {
|
||
name: 'MyAwesomeApp', // 应用名称 (必需)
|
||
platform: 'ios', // 平台 (必需)
|
||
downloadUrl: 'https://...', // 下载URL (可选)
|
||
force: false // 强制覆盖 (可选)
|
||
}
|
||
});
|
||
```
|
||
|
||
**适用场景**:
|
||
- 新项目应用创建
|
||
- 多环境应用设置
|
||
- 自动化部署脚本
|
||
|
||
### 2. 多平台应用管理工作流 (`multi-platform-app-management`)
|
||
|
||
**用途**: 跨平台应用统一管理和优化
|
||
|
||
**功能特性**:
|
||
- 🔍 全平台应用扫描
|
||
- 📊 应用状态分析和统计
|
||
- ⚡ 自动优化建议和执行
|
||
- 📈 应用健康度评估
|
||
|
||
**工作流步骤**:
|
||
1. **平台扫描**: 扫描iOS、Android、Harmony平台的所有应用
|
||
2. **状态分析**: 分析应用活跃度、版本分布、平台分布
|
||
3. **问题识别**: 识别非活跃应用、配置问题
|
||
4. **自动优化**: 执行应用配置优化和清理
|
||
|
||
**使用示例**:
|
||
```typescript
|
||
await moduleManager.executeWorkflow('multi-platform-app-management', {
|
||
args: [],
|
||
options: {
|
||
includeInactive: true, // 包含非活跃应用
|
||
autoOptimize: true // 自动优化配置
|
||
}
|
||
});
|
||
```
|
||
|
||
**适用场景**:
|
||
- 应用生态管理
|
||
- 定期健康检查
|
||
- 批量优化操作
|
||
|
||
---
|
||
|
||
## 📦 Bundle模块工作流
|
||
|
||
### 1. 智能打包工作流 (`intelligent-bundle`)
|
||
|
||
**用途**: 自动优化的多平台智能构建
|
||
|
||
**功能特性**:
|
||
- 🖥️ 构建环境自动检测
|
||
- 📂 项目结构智能分析
|
||
- ⚙️ 自动优化配置
|
||
- 🏗️ 多平台并行构建
|
||
- 🔍 构建质量检查
|
||
|
||
**工作流步骤**:
|
||
1. **环境检测**: 检查Node.js版本、内存、平台兼容性
|
||
2. **项目分析**: 分析项目类型、依赖、预估大小
|
||
3. **优化设置**: 根据项目特征自动配置优化选项
|
||
4. **多平台构建**: 并行构建指定平台或所有平台
|
||
5. **质量检查**: 检查构建质量、包大小、构建时间
|
||
|
||
**使用示例**:
|
||
```typescript
|
||
await moduleManager.executeWorkflow('intelligent-bundle', {
|
||
args: [],
|
||
options: {
|
||
platform: 'ios', // 目标平台 (可选,不指定则构建所有)
|
||
dev: false, // 开发模式
|
||
sourcemap: true, // 生成源码映射
|
||
optimize: true // 启用自动优化
|
||
}
|
||
});
|
||
```
|
||
|
||
**适用场景**:
|
||
- 自动化CI/CD构建
|
||
- 多平台发布准备
|
||
- 性能优化构建
|
||
|
||
### 2. 增量构建工作流 (`incremental-build`)
|
||
|
||
**用途**: 高效的增量更新包生成
|
||
|
||
**功能特性**:
|
||
- 🔍 自动基准版本检测
|
||
- 🏗️ 当前版本构建
|
||
- 📥 基准版本下载
|
||
- 🔄 智能差异计算
|
||
- ✅ 差异包验证
|
||
|
||
**工作流步骤**:
|
||
1. **基准检测**: 自动检测或使用指定的基准版本
|
||
2. **当前构建**: 构建当前版本的Bundle
|
||
3. **基准下载**: 下载基准版本的Bundle文件
|
||
4. **差异生成**: 计算并生成差异包
|
||
5. **验证测试**: 验证差异包的完整性和可用性
|
||
|
||
**使用示例**:
|
||
```typescript
|
||
await moduleManager.executeWorkflow('incremental-build', {
|
||
args: [],
|
||
options: {
|
||
platform: 'android', // 目标平台 (必需)
|
||
baseVersion: 'v1.0.0', // 基准版本 (可选,自动检测)
|
||
skipValidation: false // 跳过验证
|
||
}
|
||
});
|
||
```
|
||
|
||
**适用场景**:
|
||
- 热更新包生成
|
||
- 减少更新下载大小
|
||
- 快速增量发布
|
||
|
||
---
|
||
|
||
## 📄 Package模块工作流
|
||
|
||
### 1. 批量包处理工作流 (`batch-package-processing`)
|
||
|
||
**用途**: 批量处理多个应用包文件
|
||
|
||
**功能特性**:
|
||
- 🔍 智能文件扫描
|
||
- 📊 包信息分析统计
|
||
- 🔍 批量内容解析
|
||
- 📤 自动上传处理
|
||
- 📋 详细处理报告
|
||
|
||
**工作流步骤**:
|
||
1. **文件扫描**: 扫描指定目录的包文件(IPA、APK、APP)
|
||
2. **信息分析**: 分析包大小、平台分布、版本信息
|
||
3. **内容解析**: 批量解析包的元信息、权限、资源
|
||
4. **批量上传**: 自动上传解析成功的包文件
|
||
5. **报告生成**: 生成详细的处理报告和统计信息
|
||
|
||
**使用示例**:
|
||
```typescript
|
||
await moduleManager.executeWorkflow('batch-package-processing', {
|
||
args: [],
|
||
options: {
|
||
directory: './packages', // 包文件目录
|
||
pattern: '*.{ipa,apk,app}', // 文件匹配模式
|
||
skipUpload: false // 跳过上传步骤
|
||
}
|
||
});
|
||
```
|
||
|
||
**适用场景**:
|
||
- 批量包文件处理
|
||
- 包文件质量检查
|
||
- 自动化包管理
|
||
|
||
---
|
||
|
||
## 👤 User模块工作流
|
||
|
||
> User模块已经在现有代码中包含了完善的工作流:
|
||
|
||
### 1. 认证状态检查工作流 (`auth-check`)
|
||
|
||
**功能特性**:
|
||
- 🔐 会话状态检查
|
||
- ✅ 服务端验证
|
||
- 👤 用户信息获取
|
||
- 🔄 自动登录支持
|
||
|
||
### 2. 完整登录流程工作流 (`login-flow`)
|
||
|
||
**功能特性**:
|
||
- 🔍 现有会话检查
|
||
- 🔐 用户登录执行
|
||
- ✅ 登录状态验证
|
||
- 📋 流程状态汇总
|
||
|
||
---
|
||
|
||
## 🏷️ Version模块工作流
|
||
|
||
### 1. 版本发布管理工作流 (`version-release-management`)
|
||
|
||
**用途**: 完整的版本发布生命周期管理
|
||
|
||
**功能特性**:
|
||
- 🔍 发布前全面检查
|
||
- ✅ 版本信息验证
|
||
- ⚙️ 发布参数配置
|
||
- 🚀 发布执行和监控
|
||
- 📊 发布后监控分析
|
||
- 📋 完整发布报告
|
||
|
||
**工作流步骤**:
|
||
1. **发布前检查**: 验证版本格式、平台支持、构建环境、依赖完整性
|
||
2. **版本验证**: 检查版本冲突、规范性、发布类型
|
||
3. **发布准备**: 生成发布说明、配置分发参数、设置回滚策略
|
||
4. **执行发布**: 上传版本包、更新信息、配置分发、激活版本
|
||
5. **发布监控**: 监控下载成功率、安装成功率、崩溃率等关键指标
|
||
6. **发布总结**: 生成完整的发布报告和统计信息
|
||
|
||
**使用示例**:
|
||
```typescript
|
||
await moduleManager.executeWorkflow('version-release-management', {
|
||
args: [],
|
||
options: {
|
||
name: 'v2.1.0', // 版本名称 (必需)
|
||
description: 'Major update', // 版本描述
|
||
platform: 'ios', // 目标平台 (必需)
|
||
rollout: 50, // 发布覆盖率
|
||
packageVersion: '2.1.0', // 包版本号
|
||
dryRun: false, // 模拟发布
|
||
force: false // 强制发布
|
||
}
|
||
});
|
||
```
|
||
|
||
**适用场景**:
|
||
- 正式版本发布
|
||
- 灰度发布管理
|
||
- 发布质量控制
|
||
|
||
---
|
||
|
||
## 🔗 工作流使用示例
|
||
|
||
### 1. 完整发布流程组合
|
||
|
||
```typescript
|
||
// 完整的应用发布流程
|
||
async function completeReleaseFlow() {
|
||
// 1. 应用初始化
|
||
await moduleManager.executeWorkflow('app-initialization', {
|
||
args: [],
|
||
options: {
|
||
name: 'ProductionApp',
|
||
platform: 'ios',
|
||
force: true
|
||
}
|
||
});
|
||
|
||
// 2. 智能打包
|
||
await moduleManager.executeWorkflow('intelligent-bundle', {
|
||
args: [],
|
||
options: {
|
||
platform: 'ios',
|
||
dev: false,
|
||
optimize: true
|
||
}
|
||
});
|
||
|
||
// 3. 版本发布
|
||
await moduleManager.executeWorkflow('version-release-management', {
|
||
args: [],
|
||
options: {
|
||
name: 'v1.0.0',
|
||
platform: 'ios',
|
||
rollout: 100
|
||
}
|
||
});
|
||
}
|
||
```
|
||
|
||
### 2. 多平台批量构建
|
||
|
||
```typescript
|
||
async function multiPlatformBuild() {
|
||
const platforms = ['ios', 'android', 'harmony'];
|
||
|
||
for (const platform of platforms) {
|
||
await moduleManager.executeWorkflow('intelligent-bundle', {
|
||
args: [],
|
||
options: {
|
||
platform,
|
||
dev: false,
|
||
optimize: true
|
||
}
|
||
});
|
||
}
|
||
}
|
||
```
|
||
|
||
### 3. 增量更新流程
|
||
|
||
```typescript
|
||
async function incrementalUpdateFlow() {
|
||
// 1. 生成增量包
|
||
const buildResult = await moduleManager.executeWorkflow('incremental-build', {
|
||
args: [],
|
||
options: {
|
||
platform: 'android',
|
||
baseVersion: 'v1.0.0'
|
||
}
|
||
});
|
||
|
||
// 2. 发布增量更新
|
||
if (buildResult.success) {
|
||
await moduleManager.executeWorkflow('version-release-management', {
|
||
args: [],
|
||
options: {
|
||
name: 'v1.0.1',
|
||
platform: 'android',
|
||
rollout: 20 // 小范围发布
|
||
}
|
||
});
|
||
}
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## 📋 最佳实践
|
||
|
||
### 1. 工作流选择指南
|
||
|
||
| 场景 | 推荐工作流 | 配置建议 |
|
||
|------|------------|----------|
|
||
| 新应用创建 | `app-initialization` | 启用force参数避免冲突 |
|
||
| 生产发布 | `intelligent-bundle` + `version-release-management` | 关闭dev模式,启用优化 |
|
||
| 热更新 | `incremental-build` | 指定合适的基准版本 |
|
||
| 批量管理 | `batch-package-processing` | 定期执行包文件清理 |
|
||
| 灰度发布 | `version-release-management` | 设置合适的rollout比例 |
|
||
|
||
### 2. 错误处理策略
|
||
|
||
```typescript
|
||
async function robustWorkflowExecution() {
|
||
try {
|
||
const result = await moduleManager.executeWorkflow('app-initialization', {
|
||
args: [],
|
||
options: { name: 'MyApp', platform: 'ios' }
|
||
});
|
||
|
||
if (!result.success) {
|
||
console.error('工作流执行失败:', result.error);
|
||
// 执行回滚或重试逻辑
|
||
}
|
||
} catch (error) {
|
||
console.error('工作流异常:', error);
|
||
// 异常处理逻辑
|
||
}
|
||
}
|
||
```
|
||
|
||
### 3. 工作流监控
|
||
|
||
```typescript
|
||
// 工作流执行监控
|
||
const workflowMonitor = {
|
||
async executeWithMonitoring(workflowName: string, context: any) {
|
||
const startTime = Date.now();
|
||
console.log(`开始执行工作流: ${workflowName}`);
|
||
|
||
try {
|
||
const result = await moduleManager.executeWorkflow(workflowName, context);
|
||
const duration = Date.now() - startTime;
|
||
|
||
console.log(`工作流执行完成: ${workflowName}, 耗时: ${duration}ms`);
|
||
return result;
|
||
} catch (error) {
|
||
const duration = Date.now() - startTime;
|
||
console.error(`工作流执行失败: ${workflowName}, 耗时: ${duration}ms`, error);
|
||
throw error;
|
||
}
|
||
}
|
||
};
|
||
```
|
||
|
||
### 4. 配置管理
|
||
|
||
```typescript
|
||
// 工作流配置管理
|
||
const workflowConfigs = {
|
||
development: {
|
||
'intelligent-bundle': { dev: true, optimize: false },
|
||
'version-release-management': { dryRun: true, rollout: 10 }
|
||
},
|
||
production: {
|
||
'intelligent-bundle': { dev: false, optimize: true },
|
||
'version-release-management': { dryRun: false, rollout: 100 }
|
||
}
|
||
};
|
||
|
||
async function executeWithConfig(workflowName: string, environment: string) {
|
||
const config = workflowConfigs[environment]?.[workflowName] || {};
|
||
|
||
return await moduleManager.executeWorkflow(workflowName, {
|
||
args: [],
|
||
options: config
|
||
});
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## 🎯 总结
|
||
|
||
这些增强的核心工作流为React Native Update CLI提供了:
|
||
|
||
1. **完整的应用生命周期管理** - 从创建到发布的全流程覆盖
|
||
2. **智能化构建和优化** - 自动环境检测和性能优化
|
||
3. **高效的增量更新** - 减少更新包大小,提升用户体验
|
||
4. **批量处理能力** - 提高大规模应用管理效率
|
||
5. **规范化发布流程** - 确保发布质量和一致性
|
||
|
||
每个工作流都经过精心设计,包含详细的步骤、错误处理、进度反馈和结果验证,为开发者提供了强大而可靠的自动化工具。 |