13 KiB
Electron 应用分发系统
Electron 应用分发系统
提供应用程序编译、自动升级、分发服务。让Electron
应用分发变得非常容易。
一个git
仓库对应一个Electron
应用程序,对应使用一套应用分发系统。
Electron 应用分发系统
服务器端工作在 64 位 Linux 操作系统(必须)和 MacOS(可选),默认编译 x64 应用程序, 其它平台及架构需要修改相应代码(不过这很容易实现).
快速开始
Linux Server (x64) 服务器部署指南
命令运行例子
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
国内用户
阿里云镜像:docker pull registry.cn-shenzhen.aliyuncs.com/yi-ge/electron-distribution:latest
腾讯云镜像:docker pull ccr.ccs.tencentyun.com/yi-ge/electron-distribution:latest
注意
你需要自行安装 Nginx 并配置使其支持 SSL,这是必须的,否则应用程序自动更新可能会失效。SCHEME
只是一个标识。
环境变量
变量名 | 默认值 | 描述 |
---|---|---|
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 |
"root" |
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. |
七牛对象存储: https://developer.qiniu.com/kodo/sdk/1289/nodejs
阿里云对象存储: https://github.com/ali-sdk/ali-oss
腾讯云对象存储: https://github.com/tencentyun/cos-nodejs-sdk-v5
API 文档
Swagger: https://yourdomain/documentation
API 中的 token 需要进行SHA-512
加密。
Github webhooks: https://yourdomain/build/webhooks
Content type: application/json
Secret: your Token
Electron 应用程序配置指南
yarn add electron-builder electron-simple-updater -D
关于 electron-builder electron-simple-updater
在你的package.json
文件中加入build
配置信息(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 编译及代码签名
在 macOS Majave (10.14.4)中安装 Xcode 10.2
\ brew (yarn 1.15.2)
\ nvm (node 11.13.0)
, 至少运行一次Xcode
。
操作系统默认安装了 Git 和 rsync。
开启 sshd:
sudo launchctl load -w /System/Library/LaunchDaemons/ssh.plist
添加你的服务器公钥到 Mac ~/.ssh/authorized_keys
。
添加你的 Mac 公钥到服务器 ~/.ssh/authorized_keys
。
在你的 Linux 服务器中安装rsync
,并开启 SSH 服务。