|
|
# 概述
|
|
|
本文档在于两个方面:
|
|
|
1. 针对Code Push的一些常见概念进行解释。
|
|
|
2. 针对公司的常见开发情景罗列及介绍Code Push的常用命令。
|
|
|
|
|
|
关于Code Push的详细信息请参考下面链接:
|
|
|
|
|
|
1. [Github微软Code Push Plugin(概述、英文、需梯子)](https://github.com/microsoft/cordova-plugin-code-push#getting-started)
|
|
|
2. [Github微软Code Push CLI工具(英文、需梯子)](https://github.com/microsoft/code-push/blob/master/cli/README.md#releasing-updates)
|
|
|
3. [react-native-code-push进阶篇(高级用例,中文,无需梯子)](https://juejin.im/post/599962f36fb9a0247942a6f1)
|
|
|
|
|
|
# Code Push概念
|
|
|
`AppCenter`,应用中心。微软提供的一个应用管理平台。平台提供了热更新,应用监控等工具。其中Code Push是其提供的代码热更新管理工具。我们可以在AppCenter上面创建应用管理项目,管理我们实际发布的App。
|
|
|
|
|
|
`Release`,发布,热更新推送。当我们更新了代码,通过Code Push把更新推送到客户端。这样的操作,称作一次发布,release。
|
|
|
|
|
|
`Deployment`,部署。若干个release组成一个有前后依赖上下文的更新流称为一个部署,deployment。在创建App的时候Code Push会自动创建两个部署,Production和Staging。前者用作在线部署,后者则用作测试。Code Push还允许我们添加删除deployment,但通常我们并不会有这种需求。
|
|
|
|
|
|
# 常用Code Push常用命令
|
|
|
|
|
|
## 账号管理
|
|
|
```shell
|
|
|
code-push login
|
|
|
```
|
|
|
在终端登录AppCenter,该命令会在浏览器打开AppCenter登录页面,然后要求输入登录token。当用户在浏览器成功登录以后,网页会返回一个token,在终端输入该token就可以完成终端的登录。
|
|
|
|
|
|
```shell
|
|
|
code-push logout
|
|
|
```
|
|
|
在终端登出AppCenter。
|
|
|
|
|
|
```shell
|
|
|
code-push whoami
|
|
|
```
|
|
|
查看终端当前登录的账号。
|
|
|
|
|
|
## App管理
|
|
|
```shell
|
|
|
code-push app add <appName> <os> <platform>
|
|
|
```
|
|
|
创建AppCenter应用管理项目。 譬如:`code-push app add MyApp-iOS ios cordova`。
|
|
|
|
|
|
```shell
|
|
|
code-push app rm <appName>
|
|
|
```
|
|
|
删除AppCenter应用管理项目。
|
|
|
|
|
|
```shell
|
|
|
code-push app ls
|
|
|
```
|
|
|
罗列AppCenter中的应用管理项目。
|
|
|
|
|
|
## Release管理
|
|
|
```shell
|
|
|
code-push release-cordova <appName> <os> -d <deploymentName> -t <targetBinaryVersion> -m
|
|
|
```
|
|
|
推送cordova App热更新。常用的参数有以下这些:
|
|
|
|
|
|
`-t`,`--targetBinaryVersion`,指定需要更新到该版本的版本。关于版本指定的更多信息,请参考下表。一般来说,我们输入大版本号,譬如^1.0.0,^2.0.0...即可。大版更新尽可能与项目架构、数据结构、API接口更新相关,这种情况更适合通过发布完整的应用进行更新。
|
|
|
|
|
|
| Range | Expression Who gets the update |
|
|
|
| --- | --- |
|
|
|
| 1.2.3 | Only devices running the specific binary version 1.2.3 of your app |
|
|
|
| * | Any device configured to consume updates from your CodePush app |
|
|
|
| 1.2.x | Devices running major version 1, minor version 2 and any patch version of your app |
|
|
|
| 1.2.3 - 1.2.7 | Devices running any binary version between 1.2.3 (inclusive) and 1.2.7 (inclusive) |
|
|
|
| >=1.2.3 <1.2.7 | Devices running any binary version between 1.2.3 (inclusive) and 1.2.7 (exclusive) |
|
|
|
| 1.2 | Equivalent to >=1.2.0 <1.3.0 |
|
|
|
| ~1.2.3 | Equivalent to >=1.2.3 <1.3.0 |
|
|
|
| ^1.2.3 | Equivalent to >=1.2.3 <2.0.0 |
|
|
|
|
|
|
`-m`,`--mandatory`,指定该版本是否强制,该选项可以在推送过后再进行修改。理解强制更新我们先设想3个版本,v1,v2,v3。
|
|
|
|
|
|
譬如说,v2修改了数据库结构,如果从v1直接升级到v3可能会造成数据存储问题。这个时候,我们需要对v2设置强制更新。让CP知道从v1升级到v3必须经历v2。因为公司的开发一般都基于前一个版本递进式更新,所以建议,推送的时候如果没有特殊情况应该都`-m`。
|
|
|
|
|
|
在不指定该参数的情况下,默认为【不】强制更新。
|
|
|
|
|
|
`-d`, `--deployment-name` 指定`部署`。在不指定该参数的情况下,默认为Staging。
|
|
|
|
|
|
例如:`code-push release-cordova MyApp-iOS ios -d Staging -t "^1.0.0" -m`。
|
|
|
意思是为cordova项目MyApp-iOS推送更新。应用系统为iOS;部署为Staging;把所有>=1.0.0,<2.0.0的终端标识为更新目标;把该release识别为强制更新。
|
|
|
|
|
|
```shell
|
|
|
code-push patch -a <ownerName>/<appName> <deploymentName> -l <releaseLabel>
|
|
|
```
|
|
|
为release打补丁(修改配置)。
|
|
|
例如`code-push -a MyApp-iOS Staging -l v3 -m`。
|
|
|
意思是对应用管理项目"MyApp-iOS"的Staging部署的标识为v3的release进行修改。修改内容是把该release改成`强制更新`(`-m`)。 |
|
|
\ No newline at end of file |