/code-push-server

Code Push Server is a self-hosted OTA hot update service for react-native-code-push and cordova-plugin-code-push

Primary LanguageJavaScriptMIT LicenseMIT

CodePush Server

CodePush Server is a backend that manages distribution of "hot deployments" or "over the air updates" for Cordova and React Native apps. Microsoft AppCenter has dropped support for CodePush on new Cordova & React apps already, and will discontinue support for existing apps by April, 2022. This software will allow you to host your own.

Supported Storage Options

  • local storage bundle file in local machine
  • s3 storage bundle file in aws
  • qiniu storage bundle file in qiniu
  • oss storage bundle file in aliyun
  • tencentcloud storage bundle file in tencentcloud

Correct use of code-push hot update

  • Both Google's and Apple's developer agreements allow the use of "hot" or "OTA" updates.
  • The OS bundles are different. When using code-push-server, you must create different applications to distinguish them (eg. MyApp-ios and MyApp-android)
  • The code-push app plugins only update resource files (i.e. HTML, JavaScript, CSS, images), not native code, plugins, version number, or other meta-data. So, if any of those things change, you must resubmit to the app stores.
  • Every time a new version is submitted to the App Store, an initial version should also be released to code-push-server based on the submitted version. Because every time a version is released to code-push-server later, code-push-server will compare with the initial version and generate a patch version.

Clients

Cordova

cordova-plugin-code-push

In config.xml, add reference to your own server:

<preference name="CodePushDeploymentKey" value="aBcDdFgHiJkLmNoPqRsTuVwXyZ" />
<preference name="CodePushServerUrl" value="http://api.code-push.com/" />

React

TBD

How to Install

Accounts

The default account, setup by the database initialization is:

  • username: admin
  • password: 123456

Create your own account by visiting https://your-server.com/auth/register (in config.js make sure common.allowRegistration is set to true)

How to Use

Issues

code-push-server normal solution

An unknown error occurred

modify password

Feature Roadmap

  • targetBinaryVersion support
    • *
    • 1.2.3
    • 1.2/1.2.*
    • 1.2.3 - 1.2.7
    • >=1.2.3 <1.2.7
    • ~1.2.3
    • ^1.2.3

Advance Feature

use google diff-match-patch calculate text file diff patch

  • support iOS and Android
  • use "react-native-code-push": "git+https://git@github.com/lisong/react-native-code-push.git" instead "react-native-code-push": "x.x.x" in package.json
  • change apps.is_use_diff_text to 1 in mysql codepush database

License

MIT License read