diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 15379f8..418e9a0 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -42,7 +42,7 @@ jobs: name: Build Desktop Package (${{ matrix.os }}) needs: verify runs-on: ${{ matrix.os }} - timeout-minutes: 30 + timeout-minutes: 60 strategy: fail-fast: false matrix: @@ -58,19 +58,93 @@ jobs: node-version: 22 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 run: npm ci - - name: Build desktop artifacts + - name: Build desktop artifacts (Windows) + 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 }} - 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 uses: actions/upload-artifact@v4