Skip to content

Build Desktop Apps

Build Desktop Apps #1

name: Build macOS and Windows Apps
on:
release:
types: [prereleased]
jobs:
build:
strategy:
matrix:
os: [macos-latest, windows-latest]
runs-on: ${{ matrix.os }}
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Setup Node.js
uses: actions/setup-node@v3
with:
node-version: "20.16.0"
- name: Install pnpm
uses: pnpm/action-setup@v2
with:
version: 8
- name: Download and extract libsimple
run: |
if [ "${{ matrix.os }}" = "macos-latest" ]; then
curl -L https://github.com/wangfenjin/simple/releases/latest/download/libsimple-osx-x64.zip -o libsimple.zip
mkdir -p dist-simple
unzip -j libsimple.zip -d dist-simple
else
curl -L https://github.com/wangfenjin/simple/releases/latest/download/libsimple-win-x64.zip -o libsimple.zip
mkdir dist-simple
7z x libsimple.zip -odist-simple
mv dist-simple/simple.dll dist-simple/libsimple.dll
fi
ls -R dist-simple
shell: bash
- name: Install dependencies
run: pnpm install
- name: Import Code-Signing Certificates (macOS)
if: matrix.os == 'macos-latest'
uses: Apple-Actions/import-codesign-certs@v1
with:
p12-file-base64: ${{ secrets.MACOS_CERTIFICATE }}
p12-password: ${{ secrets.MACOS_CERTIFICATE_PWD }}
- name: Build application
env:
NODE_OPTIONS: "--max_old_space_size=4096"
run: pnpm run build:desktop
- name: Build and Sign (macOS)
if: matrix.os == 'macos-latest'
env:
APPLEID: ${{ secrets.APPLE_ID }}
APPLEIDPASS: ${{ secrets.APPLE_APP_SPECIFIC_PASSWORD }}
APPLETEAMID: ${{ secrets.APPLE_TEAM_ID }}
CSC_LINK: ${{ secrets.MACOS_CERTIFICATE }}
CSC_KEY_PASSWORD: ${{ secrets.MACOS_CERTIFICATE_PWD }}
run: pnpm run pkg:desktop
- name: Build (Windows)
if: matrix.os == 'windows-latest'
run: pnpm run pkg:desktop
- name: Update Release
uses: softprops/action-gh-release@v2
with:
files: |
dist-app/*.dmg
dist-app/*.exe
env:
GITHUB_TOKEN: ${{ secrets.PERSONAL_ACCESS_TOKEN }}