返回

自己动手部署 Code Push 私有 Server

IOS

前言

一直用着 Microsoft 的 AppCenter.ms 服务都不错,功能强大,但是最近总是抽风,没办法,只能自己部署私有 Code Push Server 了。

直接搜索 Code Push Server,一般得到的结果都是 https://github.com/lison… 这个代码。但是这个代码很老了,而且只能用在 Node.js。还有一些代码,但是要么就是不知道该怎么用,要么就是看着也觉得不靠谱。

直到我看到微软有一个开源项目 https://github.com/micros…,才觉得自己找到答案了。这是一个用 Go 实现的 AppCenter.ms 私有版,感觉挺好的。

正文

安装与启动

  1. clone 项目
git clone https://github.com/microsoft/electrode-ota-server.git
  1. 安装依赖
cd electrode-ota-server
go mod tidy
  1. 安装 protobuf 编译器
go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.28
go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@v1.28
  1. 运行
go run main.go
2022/03/11 11:07:53 listening on :8080
2022/03/11 11:07:53 starting websocket server on :3000
  1. 测试
curl -X POST -d '{"appId": "my-app", "version": "1.0.0"}' -H "Content-Type: application/json" http://localhost:8080/v1/apps/deploy
{"deployId":"515a782a-8b23-405e-b706-00c0131f8746"}

接入 React Native

  1. 安装依赖
npm install @code-push/cli
  1. 初始化
npx code-push init
  1. 配置
// code-push.json
{
  "deploymentKey": "your-deployment-key",
  "serviceHost": "http://localhost:8080",
  "updateMethod": "ON_NEXT_RESUME"
}
  1. 打包
npx code-push release-react <appName> ios --deploymentName development
  1. 发布
npx code-push release-react <appName> android --deploymentName development

接入 Angular Cordova

  1. 安装依赖
npm install @code-push/cli
  1. 初始化
npx code-push init
  1. 配置
// code-push.json
{
  "deploymentKey": "your-deployment-key",
  "serviceHost": "http://localhost:8080",
  "updateMethod": "ON_NEXT_RESUME"
}
  1. 打包
npx code-push package-cordova <appName> android --package-path <appFolder>
npx code-push package-cordova <appName> ios --package-path <appFolder>
  1. 发布
npx code-push release-cordova <appName> android --deploymentName development
npx code-push release-cordova <appName> ios --deploymentName development

总结

以上就是使用 Electrode OTA Server 创建 React Native/Angular Cordova 私有 Code Push 服务的方法。结合 Cloud Functions、Firestore 和 Pub/Sub,可以高效实现 Code Push 的 CI/CD。