public | ||
src | ||
test | ||
.babelrc | ||
.gitignore | ||
APP-distribution-db.json | ||
Dockerfile | ||
LICENSE | ||
package.json | ||
preview.png | ||
README.md | ||
README.zh-CN.md | ||
release.sh | ||
yarn.lock |
Electron Distribution
Electron build and auto update service, application distribution. Making application distribution easier.
A git repository corresponds to an electron app and an distributed system.
Electron Distribution server-side work in 64 bit Linux OS (required) and MacOS (optional), and build for x64 platform, other platform need to modify the code (It is easy).
Quick Setup Guide
In your Linux Server (x64)
Example
docker run -itd --name electron-distribution --restart always \
-e NAME=your-app-name \
-e SCHEME=https \
-e DOMAIN=www.example.com \
-e TOKEN=123456 \
-e REPOPATH=git@github.com:abc/def.git \
-e BUILD_TYPE=win,linux,mac \
-e WORKPATH=/data \
-e OBJECT_STORAGE_TYPE=cos
-v /data:/data \
-p 80:80 \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /root/.ssh:/root/.ssh \
-v /data/icon.ico:/project/public/icon.ico \
wy373226722/electron-distribution:latest
China user
Aliyun: docker pull registry.cn-shenzhen.aliyuncs.com/yi-ge/electron-distribution:latest
TencentYun: docker pull ccr.ccs.tencentyun.com/yi-ge/electron-distribution:latest
Notice
You need to configure nginx and SSL by yourself. SCHEME only a tip.
Environment
ENV Var | Default | Description |
---|---|---|
NAME |
"APP" |
Your app name. Numbers, letters and "-". |
SCHEME |
"https" |
Production environment only work with SSL. |
DOMAIN |
"www.example.com" |
Your Electron Distribution server-side domain. |
TOKEN |
"1jH27dJf9s852" |
Your Electron Distribution API TOKEN. |
REPOPATH |
"git@github.com:yi-ge/electron-distribution.git" |
Your electron app repository. |
BUILD_TYPE |
"win,linux" |
win,linux,mac |
WORKPATH |
"/data" |
-v /data:/data, The two path must be consistent. |
DOCKER_SOCKET |
"/var/run/docker.sock" |
Docker socket path. |
MAC_SERVER_HOST |
"127.0.0.1" |
Your macOS server host. |
MAC_SERVER_PORT |
"22" |
Your macOS server ssh port. |
MAC_SERVER_USERNAME |
"guest" |
Your macOS server ssh username. |
LINUX_SERVER_HOST |
"127.0.0.1" |
Only require build mac application. Your linux server host. |
LINUX_SERVER_PORT |
"22" |
Only require build mac application. Your linux server ssh port. |
LINUX_SERVER_USERNAME |
"guest" |
Only require build mac application. Your linux server ssh username. |
GH_TOKEN |
"" |
If you set publish option. |
CSC_LINK |
"" |
https://www.electron.build/code-signing |
CSC_KEY_PASSWORD |
"" |
https://www.electron.build/code-signing |
CSC_NAME , |
"" |
https://www.electron.build/code-signing |
BUILD_CPU_LIMIT |
"0" |
Linux and Windows build cpu limit. CPUs in which to allow execution (e.g., 0-3, 0,1) |
BUILD_MEMORY_LIMIT |
0 |
Linux and Windows memory limit in bytes. 1024 * 1024 * 1024 bytes = 1073741824 bytes = 1GB |
OBJECT_STORAGE_TYPE |
"cos" |
cos: Tencent Cloud Object Storage; oss: Aliyun Object Storage; qiniu: Qiniu Object Storage. |
QINIU_ACCESS_KEY |
"" |
Qiniu Object Storage, accessKey. |
QINIU_SECRET_KEY |
"" |
Qiniu Object Storage, secretKey. |
QINIU_BUCKET_KEY |
"" |
Qiniu Object Storage, bucket. |
QINIU_ZONE |
"Zone_z0" |
华东 Zone_z0、华北 Zone_z1、华南 Zone_z2、北美 Zone_na0 |
QINIU_URL |
"https://cdn.xxx.com" |
Qiniu Object Storage CDN url. |
OSS_ACCESS_KEY_ID |
"id" |
Aliyun accessKeyId. |
OSS_ACCESS_SECRET |
"secret" |
Aliyun accessKeySecret. |
OSS_REGION |
"oss-cn-qingdao" |
Aliyun Object Storage, Region. |
OSS_BUCKET |
"bucket" |
Aliyun Object Storage, Bucket. |
OSS_URL |
"https://cdn.xxx.com" |
Aliyun Object Storage CDN url. |
OSS_INTERNAL |
false |
Access aliyun OSS with aliyun internal network or not, default is false. If your servers are running on aliyun too, you can set "true" to save lot of money. |
COS_SECRE_ID |
"" |
Tencent Cloud Object Storage SecretId. |
COS_SECRE_KEY |
"" |
SecretKey. |
COS_BUCKET |
"bucketname-12345678" |
Bucket. |
COS_REGION |
"ap-chengdu" |
Region. |
COS_URL |
"https://cdn.xxx.com" |
Object Storage CDN url. |
Qiniu Object Storage: https://developer.qiniu.com/kodo/sdk/1289/nodejs
Aliyun Object Storage: https://github.com/ali-sdk/ali-oss
Tencent Cloud Object Storage: https://github.com/tencentyun/cos-nodejs-sdk-v5
API Document
Swagger: https://yourdomain/documentation
API token require SHA-512
encrypt.
Github webhooks: https://yourdomain/build/webhooks
Content type: application/json
Secret: your Token
In your Electron App
yarn add electron-builder electron-simple-updater -D
More about: electron-builder electron-simple-updater
Insert build
configuration in your package.json
(https://www.electron.build):
"scripts": {
"build": "node config/build.js && electron-builder",
"build:dir": "node config/build.js && electron-builder --dir",
...
},
"build": {
"productName": "Your App Name",
"appId": "com.appid.abc",
"directories": {
"output": "build"
},
"files": [
"dist/electron/**/*"
],
"dmg": {
"contents": [
{
"x": 410,
"y": 150,
"type": "link",
"path": "/Applications"
},
{
"x": 130,
"y": 150,
"type": "file"
}
]
},
"mac": {
"icon": "build/icons/icon.icns"
},
"win": {
"icon": "build/icons/icon.ico",
"target": "squirrel"
},
"linux": {
"artifactName": "${productName}-${version}-${arch}.${ext}",
"icon": "build/icons"
},
"squirrelWindows": {
"iconUrl": "https://yourServer/app/icon.ico"
}
},
Mac APP Build And Code Signing
Install Xcode 10.2
\ brew (yarn 1.15.2)
\ nvm (node 11.13.0)
in the macOS Majave (10.14.4), run the Xcode at least once.
Git and rsync are installed by default.
Start sshd:
sudo launchctl load -w /System/Library/LaunchDaemons/ssh.plist
Adding your server public key to mac ~/.ssh/authorized_keys
.
Adding your mac public key to server ~/.ssh/authorized_keys
.
Run the ssh macName@macIp
in the linux server at least once .
Run the ssh linux@linuxIp
in the mac server at least once.
Install rsync
and enable sshd in your Linux Server.
Author
Yi Wang a@wyr.me