Skip to content

✨ feat: initialization #7

✨ feat: initialization

✨ feat: initialization #7

Workflow file for this run

name: Release
on:
push:
tags:
- 'v*'
workflow_dispatch:
permissions:
contents: write
jobs:
# Windows 构建
build-windows:
name: Build for Windows
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: "20.x"
- name: Setup PNPM
uses: pnpm/action-setup@v2
with:
version: latest
- name: Install Dependencies
run: pnpm install
- name: Build Electron App
run: pnpm run build
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Build Windows Package
run: pnpm run build:win
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: List Build Output
run: dir dist
shell: cmd
- name: Upload Windows Artifacts
uses: softprops/action-gh-release@v1
if: startsWith(github.ref, 'refs/tags/')
with:
files: |
dist/*.exe
dist/latest*.yml
token: ${{ secrets.GITHUB_TOKEN }}
fail_on_unmatched_files: false
# macOS 构建
build-macos:
name: Build for macOS
runs-on: macos-latest
steps:
- uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: "20.x"
- name: Setup PNPM
uses: pnpm/action-setup@v2
with:
version: latest
- name: Install Dependencies
run: pnpm install
- name: Build Electron App
run: pnpm run build
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Build macOS Package
run: pnpm run build:mac
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: List Build Output
run: ls -la dist
- name: Upload macOS Artifacts
uses: softprops/action-gh-release@v1
if: startsWith(github.ref, 'refs/tags/')
with:
files: |
dist/*.dmg
dist/*.zip
token: ${{ secrets.GITHUB_TOKEN }}
fail_on_unmatched_files: false
# Linux 构建
build-linux:
name: Build for Linux
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: "20.x"
# 更新 Ubuntu 软件源
- name: Ubuntu Update with sudo
run: sudo apt-get update
# 安装依赖
- name: Install RPM & Pacman
run: |
sudo apt-get install --no-install-recommends -y rpm &&
sudo apt-get install --no-install-recommends -y libarchive-tools &&
sudo apt-get install --no-install-recommends -y libopenjp2-tools
# 安装项目依赖
- name: Install Dependencies
run: npm install
# 构建 Electron App
- name: Build Electron App for Linux
run: npm run build:linux || true
shell: bash
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# 上传构建产物
- name: Upload Linux Artifacts
uses: softprops/action-gh-release@v1
if: startsWith(github.ref, 'refs/tags/')
with:
files: |
dist/*.AppImage
dist/*.deb
dist/*.rpm
token: ${{ secrets.GITHUB_TOKEN }}
fail_on_unmatched_files: false
# 创建 Release
create-release:
needs: [build-windows, build-macos, build-linux]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Generate Release Notes
id: release_notes
run: |
VERSION=${GITHUB_REF#refs/tags/v}
CHANGES=$(awk -v ver="$VERSION" '/^## \[?'$VERSION'\]?/ {p=1;print;next} /^## \[?[0-9]+\.[0-9]+\.[0-9]+/ {p=0} p' CHANGELOG.md || echo "")
if [ -z "$CHANGES" ]; then
CHANGES=$(git log -1 --pretty=format:"%B")
fi
echo "CHANGES<<EOF" >> $GITHUB_OUTPUT
echo "$CHANGES" >> $GITHUB_OUTPUT
echo "EOF" >> $GITHUB_OUTPUT
shell: bash
- name: Update Release
uses: softprops/action-gh-release@v2
if: startsWith(github.ref, 'refs/tags/')
with:
name: Release ${{ github.ref_name }}
body: ${{ steps.release_notes.outputs.CHANGES }}
draft: false
prerelease: false
token: ${{ secrets.GITHUB_TOKEN }}