Files
PicList/.github/workflows/test-build.yml
2025-08-13 10:44:54 +08:00

160 lines
4.9 KiB
YAML

# test-build.yml
# Workflow's name
name: Test Build
# Workflow's trigger
on:
workflow_dispatch:
env:
ELECTRON_OUTPUT_PATH: ./dist_electron
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GH_TOKEN: ${{ secrets.GH_TOKEN }}
USE_HARD_LINKS: false
jobs:
test-build:
name: Test Build for ${{ matrix.os }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-13, windows-latest, windows-11-arm]
steps:
- name: Set up git config
run: |
git config --global core.autocrlf false
- name: Check out git repository
uses: actions/checkout@v4
- name: Install Node.js
uses: actions/setup-node@v4
with:
node-version: '22.x'
- name: Install system deps
if: matrix.os == 'ubuntu-latest'
run: |
sudo apt-get update
sudo apt-get install --no-install-recommends -y icnsutils graphicsmagick xz-utils
- name: Install dependencies (macOS)
if: matrix.os == 'macos-13'
run: |
yarn config set ignore-engines true
yarn install
npm rebuild --platform=darwin --arch=arm64 sharp
- name: Install dependencies (Windows x64)
if: matrix.os == 'windows-latest'
run: |
yarn config set ignore-engines true
yarn install
- name: Install dependencies (Windows ARM64)
if: matrix.os == 'windows-11-arm'
run: |
yarn config set ignore-engines true
yarn install
- name: Install dependencies (Linux)
if: matrix.os == 'ubuntu-latest'
run: |
yarn config set ignore-engines true
yarn install
- name: Modify electron-builder.json for Windows x64
if: matrix.os == 'windows-latest'
run: |
# Remove arm64 from the arch array, keep only x64
$config = Get-Content electron-builder.json | ConvertFrom-Json
$config.win.target[0].arch = @("x64")
$config | ConvertTo-Json -Depth 10 | Set-Content electron-builder.json
- name: Modify electron-builder.json for Windows ARM64
if: matrix.os == 'windows-11-arm'
run: |
# Remove x64 from the arch array, keep only arm64
$config = Get-Content electron-builder.json | ConvertFrom-Json
$config.win.target[0].arch = @("arm64")
$config | ConvertTo-Json -Depth 10 | Set-Content electron-builder.json
- name: Build application (Windows x64)
if: matrix.os == 'windows-latest'
run: yarn build:win
env:
ELECTRON_SKIP_NOTARIZATION: true
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GH_TOKEN: ${{ secrets.GH_TOKEN }}
- name: Build application (Windows ARM64)
if: matrix.os == 'windows-11-arm'
run: yarn build:win
env:
ELECTRON_SKIP_NOTARIZATION: true
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GH_TOKEN: ${{ secrets.GH_TOKEN }}
- name: Build application (macOS)
if: matrix.os == 'macos-13'
run: yarn build:mac
env:
ELECTRON_SKIP_NOTARIZATION: true
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GH_TOKEN: ${{ secrets.GH_TOKEN }}
USE_HARD_LINKS: false
- name: Build application (Linux)
if: matrix.os == 'ubuntu-latest'
run: yarn build:linux
env:
ELECTRON_SKIP_NOTARIZATION: true
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GH_TOKEN: ${{ secrets.GH_TOKEN }}
- name: Upload Windows x64 executables
if: matrix.os == 'windows-latest'
uses: actions/upload-artifact@v4
with:
name: windows-x64-executables
path: |
dist_electron/PicList-Setup-*.exe
retention-days: 30
if-no-files-found: error
- name: Upload Windows ARM64 executables
if: matrix.os == 'windows-11-arm'
uses: actions/upload-artifact@v4
with:
name: windows-arm64-executables
path: |
dist_electron/PicList-Setup-*.exe
retention-days: 30
if-no-files-found: error
- name: Upload macOS packages with original names
if: matrix.os == 'macos-13'
uses: actions/upload-artifact@v4
with:
name: macos-packages
path: |
dist_electron/PicList-*.dmg
retention-days: 30
if-no-files-found: error
- name: Upload Linux packages with original names
if: matrix.os == 'ubuntu-latest'
uses: actions/upload-artifact@v4
with:
name: linux-packages
path: |
dist_electron/PicList-*.AppImage
dist_electron/*.snap
retention-days: 30
if-no-files-found: ignore