mirror of
https://github.com/maotoumao/MusicFreeDesktop.git
synced 2026-05-30 19:31:40 +08:00
212 lines
9.0 KiB
YAML
212 lines
9.0 KiB
YAML
name: Build
|
|
|
|
on:
|
|
workflow_dispatch:
|
|
|
|
jobs:
|
|
build-meta:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v5
|
|
- name: Generate build metadata
|
|
run: |
|
|
VERSION=$(node -p "require('./package.json').version")
|
|
BRANCH=${GITHUB_REF_NAME}
|
|
COMMIT=${GITHUB_SHA}
|
|
echo "{\"branch\":\"${BRANCH}\",\"version\":\"${VERSION}\",\"commit\":\"${COMMIT}\"}" > build-meta.json
|
|
cat build-meta.json
|
|
- uses: actions/upload-artifact@v6
|
|
with:
|
|
name: build-meta
|
|
path: build-meta.json
|
|
retention-days: 30
|
|
|
|
build-windows:
|
|
runs-on: windows-latest
|
|
steps:
|
|
- uses: actions/checkout@v5
|
|
- uses: pnpm/action-setup@v4
|
|
with:
|
|
version: 9
|
|
- uses: actions/setup-node@v5
|
|
with:
|
|
node-version: 22
|
|
cache: pnpm
|
|
- run: pnpm install --frozen-lockfile
|
|
- name: Read version
|
|
run: |
|
|
$version = node -p "require('./package.json').version"
|
|
echo "VERSION=$version" >> $env:GITHUB_ENV
|
|
- run: pnpm run package
|
|
- uses: maotoumao/inno-setup-action-cli@main
|
|
with:
|
|
filepath: ./release/build-windows.iss
|
|
variables: /DMyAppVersion=${{ env.VERSION }} /DMyAppId=${{ secrets.MYAPPID }}
|
|
- name: Rename setup file
|
|
run: |
|
|
Rename-Item -Path "./out/MusicFreeSetup.exe" -NewName "MusicFree-${{ env.VERSION }}-win32-x64-setup.exe"
|
|
- name: Generate portable
|
|
run: |
|
|
New-Item -ItemType Directory -Path "./out/MusicFree-win32-x64/portable" -Force
|
|
New-Item -ItemType File -Path "./out/MusicFree-win32-x64/portable/.portable" -Force
|
|
- name: Archive portable
|
|
run: |
|
|
Compress-Archive -Path "./out/MusicFree-win32-x64/*" -DestinationPath "./out/MusicFree-${{ env.VERSION }}-win32-x64-portable.zip"
|
|
- uses: actions/upload-artifact@v6
|
|
with:
|
|
name: MusicFree-${{ env.VERSION }}-win32-x64-setup
|
|
path: ./out/MusicFree-${{ env.VERSION }}-win32-x64-setup.exe
|
|
retention-days: 30
|
|
- uses: actions/upload-artifact@v6
|
|
with:
|
|
name: MusicFree-${{ env.VERSION }}-win32-x64-portable
|
|
path: ./out/MusicFree-${{ env.VERSION }}-win32-x64-portable.zip
|
|
retention-days: 30
|
|
|
|
build-windows-legacy:
|
|
runs-on: windows-latest
|
|
steps:
|
|
- uses: actions/checkout@v5
|
|
- uses: pnpm/action-setup@v4
|
|
with:
|
|
version: 9
|
|
- uses: actions/setup-node@v5
|
|
with:
|
|
node-version: 22
|
|
cache: pnpm
|
|
- run: pnpm install
|
|
- name: Read version
|
|
run: |
|
|
$version = node -p "require('./package.json').version"
|
|
echo "VERSION=$version" >> $env:GITHUB_ENV
|
|
- name: Override Win7 compatibility files
|
|
run: |
|
|
Get-ChildItem -Recurse -Filter "*.win7.ts" | ForEach-Object {
|
|
$target = $_.FullName -replace '\.win7\.ts$', '.ts'
|
|
Write-Host "Overriding: $target"
|
|
Copy-Item $_.FullName $target -Force
|
|
}
|
|
- name: Install Electron 22
|
|
run: pnpm add electron@22 --save-dev
|
|
- run: pnpm run package
|
|
- uses: maotoumao/inno-setup-action-cli@main
|
|
with:
|
|
filepath: ./release/build-windows.iss
|
|
variables: /DMyAppVersion=${{ env.VERSION }} /DMyAppId=${{ secrets.MYAPPID }}
|
|
- name: Rename setup file
|
|
run: |
|
|
Rename-Item -Path "./out/MusicFreeSetup.exe" -NewName "MusicFree-${{ env.VERSION }}-win32-x64-legacy-setup.exe"
|
|
- name: Generate portable
|
|
run: |
|
|
New-Item -ItemType Directory -Path "./out/MusicFree-win32-x64/portable" -Force
|
|
New-Item -ItemType File -Path "./out/MusicFree-win32-x64/portable/.portable" -Force
|
|
- name: Archive portable
|
|
run: |
|
|
Compress-Archive -Path "./out/MusicFree-win32-x64/*" -DestinationPath "./out/MusicFree-${{ env.VERSION }}-win32-x64-legacy-portable.zip"
|
|
- uses: actions/upload-artifact@v6
|
|
with:
|
|
name: MusicFree-${{ env.VERSION }}-win32-x64-legacy-setup
|
|
path: ./out/MusicFree-${{ env.VERSION }}-win32-x64-legacy-setup.exe
|
|
retention-days: 30
|
|
- uses: actions/upload-artifact@v6
|
|
with:
|
|
name: MusicFree-${{ env.VERSION }}-win32-x64-legacy-portable
|
|
path: ./out/MusicFree-${{ env.VERSION }}-win32-x64-legacy-portable.zip
|
|
retention-days: 30
|
|
|
|
build-macos-x64:
|
|
runs-on: macos-15-intel
|
|
steps:
|
|
- uses: actions/checkout@v5
|
|
- uses: pnpm/action-setup@v4
|
|
with:
|
|
version: 9
|
|
- uses: actions/setup-node@v5
|
|
with:
|
|
node-version: 22
|
|
cache: pnpm
|
|
- name: Fix node-gyp for Python 3.12+
|
|
run: pip install setuptools
|
|
- run: pnpm install --frozen-lockfile
|
|
- name: Read version
|
|
run: |
|
|
VERSION=$(node -p "require('./package.json').version")
|
|
echo "VERSION=$VERSION" >> $GITHUB_ENV
|
|
- run: pnpm run make
|
|
- name: Rename DMG
|
|
run: mv "./out/make/MusicFree-${{ env.VERSION }}-x64.dmg" "./out/make/MusicFree-${{ env.VERSION }}-darwin-x64.dmg"
|
|
- uses: actions/upload-artifact@v6
|
|
with:
|
|
name: MusicFree-${{ env.VERSION }}-darwin-x64
|
|
path: ./out/make/MusicFree-${{ env.VERSION }}-darwin-x64.dmg
|
|
retention-days: 30
|
|
|
|
build-macos-arm64:
|
|
runs-on: macos-latest
|
|
steps:
|
|
- uses: actions/checkout@v5
|
|
- uses: pnpm/action-setup@v4
|
|
with:
|
|
version: 9
|
|
- uses: actions/setup-node@v5
|
|
with:
|
|
node-version: 22
|
|
cache: pnpm
|
|
- name: Fix node-gyp for Python 3.12+
|
|
run: pip install setuptools
|
|
- run: pnpm install --frozen-lockfile
|
|
- name: Read version
|
|
run: |
|
|
VERSION=$(node -p "require('./package.json').version")
|
|
echo "VERSION=$VERSION" >> $GITHUB_ENV
|
|
- run: pnpm run make -- --arch=arm64
|
|
- name: Rename DMG
|
|
run: mv "./out/make/MusicFree-${{ env.VERSION }}-arm64.dmg" "./out/make/MusicFree-${{ env.VERSION }}-darwin-arm64.dmg"
|
|
- uses: actions/upload-artifact@v6
|
|
with:
|
|
name: MusicFree-${{ env.VERSION }}-darwin-arm64
|
|
path: ./out/make/MusicFree-${{ env.VERSION }}-darwin-arm64.dmg
|
|
retention-days: 30
|
|
|
|
build-linux:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v5
|
|
- name: Install system dependencies
|
|
run: sudo apt-get update && sudo apt-get install -y rpm
|
|
- uses: pnpm/action-setup@v4
|
|
with:
|
|
version: 9
|
|
- uses: actions/setup-node@v5
|
|
with:
|
|
node-version: 22
|
|
cache: pnpm
|
|
- run: pnpm install --frozen-lockfile
|
|
- name: Read version
|
|
run: |
|
|
VERSION=$(node -p "require('./package.json').version")
|
|
echo "VERSION=$VERSION" >> $GITHUB_ENV
|
|
- run: pnpm run make
|
|
- name: Rename DEB
|
|
run: |
|
|
DEB_FILE=$(find ./out/make/deb/x64/ -name "*.deb" | head -1)
|
|
if [ -n "$DEB_FILE" ]; then
|
|
mv "$DEB_FILE" "./out/make/deb/x64/MusicFree-${{ env.VERSION }}-linux-amd64.deb"
|
|
fi
|
|
- name: Rename RPM
|
|
run: |
|
|
RPM_FILE=$(find ./out/make/rpm/x64/ -name "*.rpm" | head -1)
|
|
if [ -n "$RPM_FILE" ]; then
|
|
mv "$RPM_FILE" "./out/make/rpm/x64/MusicFree-${{ env.VERSION }}-linux-amd64.rpm"
|
|
fi
|
|
- uses: actions/upload-artifact@v6
|
|
with:
|
|
name: MusicFree-${{ env.VERSION }}-linux-amd64-deb
|
|
path: ./out/make/deb/x64/MusicFree-${{ env.VERSION }}-linux-amd64.deb
|
|
retention-days: 30
|
|
- uses: actions/upload-artifact@v6
|
|
with:
|
|
name: MusicFree-${{ env.VERSION }}-linux-amd64-rpm
|
|
path: ./out/make/rpm/x64/MusicFree-${{ env.VERSION }}-linux-amd64.rpm
|
|
retention-days: 30
|