Skip to content

chore: release v5.10.0 #24

chore: release v5.10.0

chore: release v5.10.0 #24

Workflow file for this run

name: Build Multi-Platform Release
on:
push:
tags:
- 'v*'
permissions:
contents: write
jobs:
build-windows:
runs-on: windows-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'npm'
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: '3.11'
- name: Install dependencies
run: npm ci
- name: Install server dependencies
run: |
cd server
npm ci
- name: Rebuild native modules for Windows
run: |
npm rebuild better-sqlite3 --build-from-source
npm rebuild keytar --build-from-source
- name: Build Vite app
run: npm run build
- name: Build and publish Windows installer
run: npx electron-builder --win --publish always
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Upload Windows artifacts
uses: actions/upload-artifact@v4
with:
name: windows-installer
path: |
dist/*.exe
dist/latest.yml
retention-days: 5
build-macos:
runs-on: macos-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'npm'
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: '3.11'
- name: Install dependencies
run: npm ci
- name: Install server dependencies
run: |
cd server
npm ci
- name: Rebuild native modules for macOS
run: |
npm rebuild better-sqlite3 --build-from-source
npm rebuild keytar --build-from-source
- name: Build Vite app
run: npm run build
- name: Build and publish macOS installers
run: npx electron-builder --mac --publish always
env:
CSC_IDENTITY_AUTO_DISCOVERY: false
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Upload macOS artifacts
uses: actions/upload-artifact@v4
with:
name: macos-installer
path: |
dist/*.dmg
dist/*.zip
dist/latest-mac.yml
retention-days: 5
build-linux:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'npm'
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: '3.11'
- name: Install build tools
run: |
sudo apt-get update
sudo apt-get install -y build-essential libsecret-1-dev rpm
- name: Install dependencies
run: npm ci
- name: Install server dependencies
run: |
cd server
npm ci
- name: Rebuild native modules for Linux
run: |
npm rebuild better-sqlite3 --build-from-source
npm rebuild keytar --build-from-source
- name: Build Vite app
run: npm run build
- name: Build and publish Linux installers
run: npx electron-builder --linux --publish always
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Upload Linux artifacts
uses: actions/upload-artifact@v4
with:
name: linux-installer
path: |
dist/*.AppImage
dist/*.deb
dist/*.rpm
dist/latest-linux.yml
retention-days: 5
create-release:
needs: [build-windows, build-macos, build-linux]
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Download all artifacts
uses: actions/download-artifact@v4
with:
path: dist-artifacts
- name: Display structure of downloaded files
run: ls -R dist-artifacts
- name: Extract version from tag
id: get_version
run: echo "VERSION=${GITHUB_REF#refs/tags/v}" >> $GITHUB_OUTPUT
- name: Read release notes from commit
id: release_notes
run: |
git log -1 --pretty=%B > commit_msg.txt
if grep -q "RELEASE_NOTES_START" commit_msg.txt; then
echo "CUSTOM_NOTES<<EOF" >> $GITHUB_OUTPUT
sed -n '/RELEASE_NOTES_START/,/RELEASE_NOTES_END/p' commit_msg.txt | sed '1d;$d' >> $GITHUB_OUTPUT
echo "EOF" >> $GITHUB_OUTPUT
echo "Found release notes in commit message"
else
echo "CUSTOM_NOTES=" >> $GITHUB_OUTPUT
echo "No release notes found in commit message"
fi
rm -f commit_msg.txt
- name: Create or update release
uses: softprops/action-gh-release@v1
with:
tag_name: ${{ github.ref_name }}
name: v${{ steps.get_version.outputs.VERSION }}
draft: false
prerelease: false
files: |
dist-artifacts/windows-installer/*
dist-artifacts/macos-installer/*
dist-artifacts/linux-installer/*
fail_on_unmatched_files: false
body: |
## LyricDisplay v${{ steps.get_version.outputs.VERSION }}
${{ steps.release_notes.outputs.CUSTOM_NOTES }}
---
### Downloads
**Windows:**
- **Windows 10/11 (64-bit)**: Download `LyricDisplay-${{ steps.get_version.outputs.VERSION }}-Windows-Setup.exe`
**macOS:**
- **Apple Silicon (M1/M2/M3)**: Download `LyricDisplay-${{ steps.get_version.outputs.VERSION }}-macOS-arm64.dmg`
- **Intel Macs**: Download `LyricDisplay-${{ steps.get_version.outputs.VERSION }}-macOS-x64.dmg`
**Linux:**
- **AppImage** (recommended): `LyricDisplay-${{ steps.get_version.outputs.VERSION }}-Linux.AppImage` - Works on all distributions
### Installation
See the [Installation Guide](https://github.com/PeterAlaks/lyric-display-app/blob/master/LyricDisplay%20Installation%20%26%20Integration%20Guide.md) for detailed setup instructions.
### Important Notes
**Security Notice:**
Because this build is not code-signed, your operating system may show a security warning the first time you open it.
To install and run:
1. Download the installer file for your operating system.
2. Open or extract the file as required.
3. Launch the app. If a security prompt appears, choose the option that allows you to proceed (for example: "Open", "Run anyway", or similar).
4. After approving it once, the app will open normally on subsequent launches.
If your system requires executable permission (common on some Linux environments):
chmod +x LyricDisplay-*.AppImage
./LyricDisplay-*.AppImage`
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}