2020-11-26 09:15:28 +00:00
|
|
|
name: Build packaged binaries
|
|
|
|
|
|
|
|
on: [push, pull_request, create]
|
|
|
|
|
|
|
|
jobs:
|
|
|
|
build-linux:
|
|
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
2021-03-17 16:59:24 +00:00
|
|
|
- uses: actions/checkout@v2
|
2020-11-26 09:15:28 +00:00
|
|
|
- name: Cache node modules
|
|
|
|
uses: actions/cache@v2
|
|
|
|
env:
|
|
|
|
cache-name: cache-node-modules
|
|
|
|
with:
|
|
|
|
# npm cache files are stored in `~/.npm` on Linux/macOS
|
|
|
|
path: ~/.npm
|
|
|
|
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }}
|
|
|
|
- name: Cache Electron binaries
|
|
|
|
uses: actions/cache@v2
|
|
|
|
env:
|
|
|
|
cache-name: cache-electron-bins
|
|
|
|
with:
|
|
|
|
# cache location is described here:
|
|
|
|
# https://github.com/electron/get#how-it-works
|
|
|
|
path: ~/.cache/electron
|
|
|
|
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }}
|
2021-03-17 16:59:24 +00:00
|
|
|
- name: Install system dependencies for x64->x32 cross-build
|
2020-12-21 09:59:34 +00:00
|
|
|
run: |
|
|
|
|
sudo apt update
|
|
|
|
sudo apt install libc6-dev-i386 gcc-multilib g++-multilib
|
2021-03-17 16:59:24 +00:00
|
|
|
- name: Setup Node.js
|
2020-11-26 09:15:28 +00:00
|
|
|
uses: actions/setup-node@v1
|
|
|
|
with:
|
2021-03-17 16:59:24 +00:00
|
|
|
node-version: 14
|
|
|
|
- name: Setup npm
|
|
|
|
run: sudo npm i -g npm@7
|
|
|
|
- name: Install build deps
|
|
|
|
run: npm install
|
|
|
|
- name: Run prebuild script
|
|
|
|
run: npm run prebuild-linux
|
|
|
|
- name: Build for x64 / ia32
|
|
|
|
run: ./node_modules/.bin/electron-builder build -l --x64 --ia32
|
2020-11-26 09:15:28 +00:00
|
|
|
env:
|
|
|
|
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
- uses: actions/upload-artifact@v2
|
|
|
|
with:
|
|
|
|
name: Linux-AppImages
|
|
|
|
path: dist/*.AppImage
|
|
|
|
if-no-files-found: error
|
|
|
|
|
2021-03-17 16:59:24 +00:00
|
|
|
build-linux-arm32:
|
|
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
|
|
- uses: actions/checkout@v2
|
|
|
|
- name: Setup QEMU
|
|
|
|
uses: docker/setup-qemu-action@v1
|
|
|
|
with:
|
|
|
|
platforms: arm
|
|
|
|
- name: Cache node modules
|
|
|
|
uses: actions/cache@v2
|
|
|
|
env:
|
|
|
|
cache-name: cache-node-modules
|
|
|
|
with:
|
|
|
|
# npm cache files are stored in `~/.npm` on Linux/macOS
|
|
|
|
path: ~/.npm
|
|
|
|
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }}
|
|
|
|
- name: Cache Electron binaries
|
|
|
|
uses: actions/cache@v2
|
|
|
|
env:
|
|
|
|
cache-name: cache-electron-bins
|
|
|
|
with:
|
|
|
|
# cache location is described here:
|
|
|
|
# https://github.com/electron/get#how-it-works
|
|
|
|
path: ~/.cache/electron
|
|
|
|
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }}
|
|
|
|
- name: Run prebuild outside of QEMU emulator
|
|
|
|
run: sudo npm i -g npm@7 && npm install && rsync -a --info=progress2 src/ prebuild-src --exclude node_modules && node prebuild-minify.js && rm -rf node_modules
|
|
|
|
- name: Build for arm32v7 (aka armv7l)
|
|
|
|
uses: docker://arm32v7/node:14-buster
|
|
|
|
with:
|
|
|
|
args: bash -c "npm i -g npm@7 && npm install && ./node_modules/.bin/electron-builder build -l --armv7l"
|
|
|
|
env:
|
|
|
|
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
- uses: actions/upload-artifact@v2
|
|
|
|
with:
|
|
|
|
name: Linux-arm32-AppImage
|
|
|
|
path: dist/*.AppImage
|
|
|
|
if-no-files-found: error
|
|
|
|
|
|
|
|
build-linux-arm64:
|
|
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
|
|
- uses: actions/checkout@v2
|
|
|
|
- name: Setup QEMU
|
|
|
|
uses: docker/setup-qemu-action@v1
|
|
|
|
with:
|
|
|
|
platforms: arm64
|
|
|
|
- name: Cache node modules
|
|
|
|
uses: actions/cache@v2
|
|
|
|
env:
|
|
|
|
cache-name: cache-node-modules
|
|
|
|
with:
|
|
|
|
# npm cache files are stored in `~/.npm` on Linux/macOS
|
|
|
|
path: ~/.npm
|
|
|
|
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }}
|
|
|
|
- name: Cache Electron binaries
|
|
|
|
uses: actions/cache@v2
|
|
|
|
env:
|
|
|
|
cache-name: cache-electron-bins
|
|
|
|
with:
|
|
|
|
# cache location is described here:
|
|
|
|
# https://github.com/electron/get#how-it-works
|
|
|
|
path: ~/.cache/electron
|
|
|
|
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }}
|
|
|
|
- name: Run prebuild outside of QEMU emulator
|
|
|
|
run: sudo npm i -g npm@7 && npm install && rsync -a --info=progress2 src/ prebuild-src --exclude node_modules && node prebuild-minify.js && rm -rf node_modules
|
|
|
|
- name: Build for arm64 (aka arm64v8)
|
|
|
|
uses: docker://arm64v8/node:14-buster
|
|
|
|
with:
|
|
|
|
args: bash -c "npm i -g npm@7 && npm install && ./node_modules/.bin/electron-builder build -l --arm64"
|
|
|
|
env:
|
|
|
|
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
- uses: actions/upload-artifact@v2
|
|
|
|
with:
|
|
|
|
name: Linux-arm64-AppImage
|
|
|
|
path: dist/*.AppImage
|
|
|
|
if-no-files-found: error
|
|
|
|
|
2020-11-26 09:15:28 +00:00
|
|
|
build-windows:
|
|
|
|
runs-on: windows-latest
|
|
|
|
steps:
|
|
|
|
- uses: actions/checkout@v1
|
|
|
|
- name: Get npm cache directory
|
|
|
|
id: npm-cache
|
|
|
|
run: |
|
|
|
|
echo "::set-output name=dir::$(npm config get cache)"
|
|
|
|
- uses: actions/cache@v2
|
|
|
|
with:
|
|
|
|
path: ${{ steps.npm-cache.outputs.dir }}
|
|
|
|
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
|
|
|
|
- name: Cache Electron binaries
|
|
|
|
uses: actions/cache@v2
|
|
|
|
env:
|
|
|
|
cache-name: cache-electron-bins
|
|
|
|
with:
|
|
|
|
# cache location is described here:
|
|
|
|
# https://github.com/electron/get#how-it-works
|
|
|
|
path: ~/AppData/Local/electron/Cache
|
|
|
|
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }}
|
2021-03-17 16:59:24 +00:00
|
|
|
- name: Setup Node.js
|
2020-11-26 09:15:28 +00:00
|
|
|
uses: actions/setup-node@v1
|
|
|
|
with:
|
2021-03-17 16:59:24 +00:00
|
|
|
node-version: 14
|
|
|
|
- name: Setup npm
|
|
|
|
run: npm i -g npm@7
|
2020-11-26 09:15:28 +00:00
|
|
|
- name: npm install
|
2021-03-17 16:59:24 +00:00
|
|
|
run: npm install
|
2020-11-26 09:15:28 +00:00
|
|
|
- name: npm build
|
2021-03-17 16:59:24 +00:00
|
|
|
run: npm run build-windows
|
2020-11-26 09:15:28 +00:00
|
|
|
env:
|
|
|
|
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
- uses: actions/upload-artifact@v2
|
|
|
|
with:
|
|
|
|
name: Windows-Installer
|
|
|
|
path: dist/*.exe
|
|
|
|
if-no-files-found: error
|
|
|
|
|
|
|
|
build-darwin:
|
|
|
|
runs-on: macos-latest
|
|
|
|
steps:
|
|
|
|
- uses: actions/checkout@v1
|
|
|
|
- name: Cache node modules
|
|
|
|
uses: actions/cache@v2
|
|
|
|
env:
|
|
|
|
cache-name: cache-node-modules
|
|
|
|
with:
|
|
|
|
# npm cache files are stored in `~/.npm` on Linux/macOS
|
|
|
|
path: ~/.npm
|
|
|
|
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }}
|
|
|
|
- name: Cache Electron binaries
|
|
|
|
uses: actions/cache@v2
|
|
|
|
env:
|
|
|
|
cache-name: cache-electron-bins
|
|
|
|
with:
|
|
|
|
# cache location is described here:
|
|
|
|
# https://github.com/electron/get#how-it-works
|
|
|
|
path: ~/Library/Caches/electron
|
|
|
|
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }}
|
2021-03-17 16:59:24 +00:00
|
|
|
- name: Setup Node.js
|
2020-11-26 09:15:28 +00:00
|
|
|
uses: actions/setup-node@v1
|
|
|
|
with:
|
2021-03-17 16:59:24 +00:00
|
|
|
node-version: 14
|
|
|
|
- name: Setup npm
|
|
|
|
run: sudo npm i -g npm@7
|
|
|
|
- name: npm install
|
|
|
|
run: npm install
|
2020-11-26 09:15:28 +00:00
|
|
|
- name: npm build
|
2021-03-17 16:59:24 +00:00
|
|
|
run: npm run build-darwin
|
2020-11-26 09:15:28 +00:00
|
|
|
env:
|
|
|
|
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
- uses: actions/upload-artifact@v2
|
|
|
|
with:
|
|
|
|
name: MacOS-Image
|
|
|
|
path: dist/*.dmg
|
|
|
|
if-no-files-found: error
|