chore: release v5.10.0 #24
Workflow file for this run
This file contains hidden or 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: 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 }} |