(chosen latest LTS version)
$ sudo npm i -g pm2
notice. mysql8.x default auth caching_sha2_pasword not support in node-mysql2 see issue
$ npm install code-push-server@latest -g
$ git clone https://github.com/lisong/code-push-server.git
$ cd code-push-server
$ npm install
$ code-push-server-db init --dbhost "your mysql host" --dbport "your mysql port" --dbuser "your mysql user" --dbpassword "your mysql password"
or from source code
$ ./bin/db init --dbhost "your mysql host" --dbport "your mysql port" --dbuser "your mysql user" --dbpassword "your mysql password"
output: success
save the file config.js
some config have to change:
local
.storageDir
change to your directory,make sure have read/write permissions.local
.downloadUrl
replace127.0.0.1
to your machine ip.common
.dataDir
change to your directory,make sure have read/write permissions.jwt
.tokenSecret
get the random string fromhttps://www.grc.com/passwords.htm
, and replace the valueINSERT_RANDOM_TOKEN_KEY
.db
config:username
,password
,host
,port
change your own's
save the file process.json
some config have to change:
script
if you install code-push-server from npm usecode-push-server
,or use"your source code dir"/bin/www
CONFIG_FILE
above config.js file path,use absolute path.
$ pm2 start process.json
$ pm2 restart process.json
$ pm2 stop process.json
$ curl -I http://YOUR_CODE_PUSH_SERVER_IP:3000/
return httpCode
200 OK
HTTP/1.1 200 OK
X-DNS-Prefetch-Control: off
X-Frame-Options: SAMEORIGIN
Strict-Transport-Security: max-age=15552000; includeSubDomains
X-Download-Options: noopen
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Content-Type: text/html; charset=utf-8
Content-Length: 592
ETag: W/"250-IiCMcM1ZUFSswSYCU0KeFYFEMO8"
Date: Sat, 25 Aug 2018 15:45:46 GMT
Connection: keep-alive
config redis in config.js
updateCheckCache
rolloutClientUniqueIdCache
tryLoginTimes
from npm package
$ npm install -g code-push-server@latest
$ code-push-server-db upgrade --dbhost "your mysql host" --dbport "your mysql port" --dbuser "your mysql user" --dbpassword "your mysql password" # upgrade codepush database
$ pm2 restart code-push-server # restart service
from source code
$ cd /path/to/code-push-server
$ git pull --rebase origin master
$ ./bin/db upgrade --dbhost "your mysql host" --dbport "your mysql port" --dbuser "your mysql user" --dbpassword "your mysql password"
# upgrade codepush database
$ pm2 restart code-push-server # restart service
$ pm2 ls
$ pm2 show code-push-server
$ tail -f "output file path"
- local (default)
- qiniu (qiniu)
- s3 (aws)
- oss (aliyun)
- tencentcloud
you can change it in process.json, env: PORT,HOST
Use code-push-cli manager CodePushServer
$ npm install code-push-cli@latest -g
$ code-push login http://YOU_SERVICE_IP:3000 #login in browser account:admin password:123456
change admin password eg.
$ curl -X PATCH -H "Authorization: Bearer mytoken" -H "Accept: application/json" -H "Content-Type:application/json" -d '{"oldPassword":"123456","newPassword":"654321"}' http://YOU_SERVICE_IP:3000/users/password
Follow the react-native-code-push docs, addition iOS add a new entry named CodePushServerURL, whose value is the key of ourself CodePushServer URL. Android use the new CodePush constructor in MainApplication point CodePushServerUrl
iOS eg. in file Info.plist
...
<key>CodePushDeploymentKey</key>
<string>YourCodePushKey</string>
<key>CodePushServerURL</key>
<string>YourCodePushServerUrl</string>
...
Android eg. in file MainApplication.java
@Override
protected List<ReactPackage> getPackages() {
return Arrays.<ReactPackage>asList(
new MainReactPackage(),
new CodePush(
"YourKey",
MainApplication.this,
BuildConfig.DEBUG,
"YourCodePushServerUrl"
)
);
}
cordova-plugin-code-push for cordova
$ cd /path/to/project
$ cordova plugin add cordova-plugin-code-push@latest --save
edit config.xml. add code below.
<platform name="android">
<preference name="CodePushDeploymentKey" value="nVHPr6asLSusnWoLBNCSktk9FWbiqLF160UDg" />
<preference name="CodePushServerUrl" value="http://api.code-push.com/" />
</platform>
<platform name="ios">
<preference name="CodePushDeploymentKey" value="Iw5DMZSIrCOS7hbLsY5tHAHNITFQqLF160UDg" />
<preference name="CodePushServerUrl" value="http://api.code-push.com/" />
</platform>