Files
web/.github/workflows/build.yml
T
2025-08-25 13:13:01 +03:00

98 lines
2.7 KiB
YAML

name: Build Electron Apps
on:
workflow_dispatch:
push:
branches: ["main", "electron"]
paths:
- 'frontend/**'
- 'package.json'
- 'package-lock.json'
- 'frontend/electron/**'
- '.github/workflows/build.yml'
concurrency:
group: build-${{ github.ref }}
cancel-in-progress: true
jobs:
build:
name: Build (${{ matrix.os }})
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Force npm to use Bash
if: runner.os == 'Windows'
run: npm config set script-shell "C:\Program Files\Git\bin\bash.exe"
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '24'
- name: Cache npm (Linux/macOS)
if: runner.os != 'Windows'
uses: actions/cache@v4
with:
path: ~/.npm
key: npm-${{ runner.os }}-node-24-${{ hashFiles('package.json') }}
restore-keys: |
npm-${{ runner.os }}-node-24-
- name: Cache npm (Windows)
if: runner.os == 'Windows'
uses: actions/cache@v4
with:
path: ~\AppData\Local\npm-cache
key: npm-${{ runner.os }}-node-24-${{ hashFiles('package.json') }}
restore-keys: |
npm-${{ runner.os }}-node-24-
- name: Install root deps (no scripts)
run: npm install --ignore-scripts --no-audit --no-fund
- name: Install Electron Forge deps
run: npm run frontend:electron:dependencies
- name: Cache Electron downloads (Linux/macOS)
if: runner.os != 'Windows'
uses: actions/cache@v4
with:
path: |
~/.cache/electron
~/.cache/electron-builder
key: electron-${{ runner.os }}-${{ hashFiles('package.json', 'frontend/electron/forge/package.json') }}
restore-keys: |
electron-${{ runner.os }}-
- name: Cache Electron downloads (Windows)
if: runner.os == 'Windows'
uses: actions/cache@v4
with:
path: |
~\AppData\Local\electron\Cache
~\AppData\Local\electron-builder\Cache
key: electron-${{ runner.os }}-${{ hashFiles('package.json', 'frontend/electron/forge/package.json') }}
restore-keys: |
electron-${{ runner.os }}-
- name: Build Electron app
shell: bash
run: npm run build:electron
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: fromchat-${{ runner.os }}
path: |
frontend/electron/forge/out/**
if-no-files-found: error