✨ feat: initialization #7
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 }} |