Electron CI#
name: Build Release Packages
on:
push:
tags:
- 'v*'
permissions:
contents: write
concurrency:
group: release-${{ github.ref }}
cancel-in-progress: false
jobs:
create-release:
name: Create GitHub Release
runs-on: ubuntu-latest
steps:
- name: Create release
uses: softprops/action-gh-release@v3
with:
tag_name: ${{ github.ref_name }}
name: ${{ github.ref_name }}
draft: false
prerelease: ${{ contains(github.ref_name, '-') }}
generate_release_notes: true
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
build:
needs: create-release
name: Build ${{ matrix.platform.name }}
runs-on: ${{ matrix.platform.runner }}
strategy:
fail-fast: false
matrix:
platform:
- name: Windows
runner: windows-latest
build_script: build:win:x64
artifact_glob: dist/*.exe
- name: macOS
runner: macos-latest
build_script: build:mac:arm
artifact_glob: dist/*.dmg
steps:
- name: Checkout source
uses: actions/checkout@v6
- uses: actions/setup-node@v6
name: Setup Node.js
with:
node-version: 24
- uses: pnpm/action-setup@v6
name: Install pnpm
with:
version: 10
run_install: false
- name: Get pnpm store directory
shell: bash
run: |
echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV
- uses: actions/cache@v5
name: Setup pnpm cache
with:
path: ${{ env.STORE_PATH }}
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-
- name: Install dependencies
run: pnpm run init
- name: Build production package
run: pnpm run ${{ matrix.platform.build_script }}
- name: Upload release assets
uses: softprops/action-gh-release@v3
with:
tag_name: ${{ github.ref_name }}
files: ${{ matrix.platform.artifact_glob }}
fail_on_unmatched_files: true
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}