forked from boos/BoosAPI
feat: enhance release workflow with Electron cache restoration and retry logic for desktop builds
This commit is contained in:
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user