respira/.github/workflows/build.yml

92 lines
2.1 KiB
YAML

name: Build and Package
on:
push:
branches: [main]
pull_request:
branches: [main]
workflow_dispatch:
jobs:
build-web:
name: Build Web Application
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v6
with:
node-version-file: ".node-version"
cache: "npm"
- name: Install dependencies
run: npm ci
- name: Build web application
run: npm run build
- name: Upload web build artifacts
uses: actions/upload-artifact@v4
with:
name: web-build
path: dist/
retention-days: 7
build-electron:
name: Build Electron - ${{ matrix.os }}
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v6
with:
node-version-file: ".node-version"
cache: "npm"
- name: Install dependencies
run: npm ci
- name: Package Electron app
run: npm run package
- name: Create distributables
run: npm run make
- name: Upload Windows artifacts
if: matrix.os == 'windows-latest'
uses: actions/upload-artifact@v4
with:
name: electron-windows
path: |
out/make/squirrel.windows/**/*.exe
out/make/squirrel.windows/**/*.nupkg
retention-days: 30
- name: Upload macOS artifacts
if: matrix.os == 'macos-latest'
uses: actions/upload-artifact@v4
with:
name: electron-macos
path: |
out/make/zip/**/*.zip
retention-days: 30
- name: Upload Linux artifacts
if: matrix.os == 'ubuntu-latest'
uses: actions/upload-artifact@v4
with:
name: electron-linux
path: |
out/make/deb/**/*.deb
out/make/rpm/**/*.rpm
retention-days: 30