1
0
forked from boos/BoosAPI

feat: enhance release workflow with Electron cache restoration and retry logic for desktop builds

This commit is contained in:
cita
2026-03-06 19:29:10 +08:00
parent e88fc0a997
commit 56b930495b
+77 -3
View File
@@ -42,7 +42,7 @@ jobs:
name: Build Desktop Package (${{ matrix.os }}) name: Build Desktop Package (${{ matrix.os }})
needs: verify needs: verify
runs-on: ${{ matrix.os }} runs-on: ${{ matrix.os }}
timeout-minutes: 30 timeout-minutes: 60
strategy: strategy:
fail-fast: false fail-fast: false
matrix: matrix:
@@ -58,19 +58,93 @@ jobs:
node-version: 22 node-version: 22
cache: npm cache: npm
- name: Restore Electron cache (Windows)
if: runner.os == 'Windows'
uses: actions/cache@v4
with:
path: |
${{ runner.temp }}/.cache/electron
${{ runner.temp }}/.cache/electron-builder
${{ env.LOCALAPPDATA }}\electron\Cache
${{ env.LOCALAPPDATA }}\electron-builder\Cache
key: electron-cache-${{ runner.os }}-${{ hashFiles('package-lock.json', 'package.json', 'electron-builder.yml') }}
restore-keys: |
electron-cache-${{ runner.os }}-
- name: Restore Electron cache (Linux)
if: runner.os == 'Linux'
uses: actions/cache@v4
with:
path: |
${{ runner.temp }}/.cache/electron
${{ runner.temp }}/.cache/electron-builder
~/.cache/electron
~/.cache/electron-builder
key: electron-cache-${{ runner.os }}-${{ hashFiles('package-lock.json', 'package.json', 'electron-builder.yml') }}
restore-keys: |
electron-cache-${{ runner.os }}-
- name: Restore Electron cache (macOS)
if: runner.os == 'macOS'
uses: actions/cache@v4
with:
path: |
${{ runner.temp }}/.cache/electron
${{ runner.temp }}/.cache/electron-builder
~/Library/Caches/electron
~/Library/Caches/electron-builder
key: electron-cache-${{ runner.os }}-${{ hashFiles('package-lock.json', 'package.json', 'electron-builder.yml') }}
restore-keys: |
electron-cache-${{ runner.os }}-
- name: Install dependencies - name: Install dependencies
run: npm ci run: npm ci
- name: Build desktop artifacts - name: Build desktop artifacts (Windows)
if: runner.os == 'Windows'
uses: nick-fields/retry@v3
env: env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
npm_config_cache: ${{ runner.temp }}/.npm
ELECTRON_CACHE: ${{ runner.temp }}/.cache/electron
ELECTRON_BUILDER_CACHE: ${{ runner.temp }}/.cache/electron-builder
ELECTRON_BUILDER_BINARIES_MIRROR: https://github.com/electron-userland/electron-builder-binaries/releases/download/
npm_config_electron_builder_binaries_mirror: https://github.com/electron-userland/electron-builder-binaries/releases/download/
CSC_LINK: ${{ secrets.CSC_LINK }} CSC_LINK: ${{ secrets.CSC_LINK }}
CSC_KEY_PASSWORD: ${{ secrets.CSC_KEY_PASSWORD }} CSC_KEY_PASSWORD: ${{ secrets.CSC_KEY_PASSWORD }}
CSC_IDENTITY_AUTO_DISCOVERY: true CSC_IDENTITY_AUTO_DISCOVERY: true
APPLE_ID: ${{ secrets.APPLE_ID }} APPLE_ID: ${{ secrets.APPLE_ID }}
APPLE_APP_SPECIFIC_PASSWORD: ${{ secrets.APPLE_APP_SPECIFIC_PASSWORD }} APPLE_APP_SPECIFIC_PASSWORD: ${{ secrets.APPLE_APP_SPECIFIC_PASSWORD }}
APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }} APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }}
run: npm run dist:desktop with:
timeout_minutes: 45
max_attempts: 2
retry_wait_seconds: 90
shell: pwsh
command: npm run dist:desktop
- name: Build desktop artifacts (Unix)
if: runner.os != 'Windows'
uses: nick-fields/retry@v3
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
npm_config_cache: ${{ runner.temp }}/.npm
ELECTRON_CACHE: ${{ runner.temp }}/.cache/electron
ELECTRON_BUILDER_CACHE: ${{ runner.temp }}/.cache/electron-builder
ELECTRON_BUILDER_BINARIES_MIRROR: https://github.com/electron-userland/electron-builder-binaries/releases/download/
npm_config_electron_builder_binaries_mirror: https://github.com/electron-userland/electron-builder-binaries/releases/download/
CSC_LINK: ${{ secrets.CSC_LINK }}
CSC_KEY_PASSWORD: ${{ secrets.CSC_KEY_PASSWORD }}
CSC_IDENTITY_AUTO_DISCOVERY: true
APPLE_ID: ${{ secrets.APPLE_ID }}
APPLE_APP_SPECIFIC_PASSWORD: ${{ secrets.APPLE_APP_SPECIFIC_PASSWORD }}
APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }}
with:
timeout_minutes: 45
max_attempts: 2
retry_wait_seconds: 90
shell: bash
command: npm run dist:desktop
- name: Upload desktop package - name: Upload desktop package
uses: actions/upload-artifact@v4 uses: actions/upload-artifact@v4