Skip to content

v1.1.3

v1.1.3 #2

Workflow file for this run

name: Build & Upload Release Artifacts
on:
release:
types: [published]
workflow_dispatch:
inputs:
tag_name:
description: "Tag to build and upload (e.g. v1.2.3)"
required: true
type: string
release_name:
description: "Release title (defaults to tag)"
required: false
type: string
prerelease:
description: "Mark as prerelease"
required: false
type: boolean
default: false
draft:
description: "Create as draft"
required: false
type: boolean
default: false
permissions:
contents: write
concurrency:
group: release-${{ github.event_name }}-${{ inputs.tag_name || github.ref }}
cancel-in-progress: false
env:
CI: true
jobs:
create_release:
name: Create or ensure GitHub Release (for manual runs)
if: github.event_name == 'workflow_dispatch'
runs-on: ubuntu-latest
steps:
- name: Ensure release exists
uses: softprops/action-gh-release@v2
with:
tag_name: ${{ inputs.tag_name }}
name: ${{ inputs.release_name || inputs.tag_name }}
draft: ${{ inputs.draft }}
prerelease: ${{ inputs.prerelease }}
build-windows:
needs: [create_release]
name: Windows (x64)
runs-on: windows-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 20
cache: npm
- name: Install dependencies
run: npm ci
- name: Build renderer (Vite)
run: npm run build:electron
- name: Make Windows installers (Squirrel + ZIP)
run: npx electron-forge make --platform=win32 --arch=x64 --targets=@electron-forge/maker-squirrel,@electron-forge/maker-zip
- name: Upload Windows artifacts to GitHub Release
uses: softprops/action-gh-release@v2
with:
tag_name: ${{ inputs.tag_name || github.ref_name }}
files: |
out/make/**/*.exe
out/make/**/*.zip
build-linux:
needs: [create_release]
name: Linux (x64)
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 20
cache: npm
- name: Install dependencies
run: npm ci
- name: Build renderer (Vite)
run: npm run build:electron
- name: Install system dependencies (RPM tooling)
run: sudo apt-get update && sudo apt-get install -y rpm
- name: Make Linux packages (DEB + RPM)
run: npx electron-forge make --platform=linux --arch=x64 --targets=@electron-forge/maker-deb,@electron-forge/maker-rpm
- name: Upload Linux artifacts to GitHub Release
uses: softprops/action-gh-release@v2
with:
tag_name: ${{ inputs.tag_name || github.ref_name }}
files: |
out/make/**/*.deb
out/make/**/*.rpm
out/make/**/*.zip
build-macos:
needs: [create_release]
strategy:
fail-fast: false
matrix:
include:
- runner: macos-13
arch: x64
- runner: macos-14
arch: arm64
name: macOS (${{ matrix.arch }})
runs-on: ${{ matrix.runner }}
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 20
cache: npm
- name: Install dependencies
run: npm ci
- name: Build renderer (Vite)
run: npm run build:electron
- name: Make macOS artifacts (DMG + ZIP)
run: npx electron-forge make --platform=darwin --arch=${{ matrix.arch }} --targets=@electron-forge/maker-dmg,@electron-forge/maker-zip
env:
# 避免在 CI 中尝试自动使用本地签名身份;无证书时使用 ad-hoc 签名
CSC_IDENTITY_AUTO: "false"
- name: Upload macOS artifacts to GitHub Release
uses: softprops/action-gh-release@v2
with:
tag_name: ${{ inputs.tag_name || github.ref_name }}
files: |
out/make/**/*.dmg
out/make/**/*.zip