GithubHelp home page GithubHelp logo

yi-ge / electron-distribution Goto Github PK

View Code? Open in Web Editor NEW
19.0 1.0 2.0 1.04 MB

Electron build and auto update service, application distribution.(Electron程序自动更新)

Home Page: https://www.wyr.me/post/611

License: MIT License

Dockerfile 0.06% CSS 0.86% HTML 0.43% JavaScript 98.39% Shell 0.25%

electron-distribution's Introduction

Electron Distribution

license GitHub last commit

JavaScript Style Guide

简体中文

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).

Electron Distribution

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 [email protected]: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 "[email protected]: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 [email protected]

electron-distribution's People

Contributors

yi-ge avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

Forkers

jeffycai ohforest

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.