respira/.github/workflows/build.yml
Jan-Henrik Bruhn 17d7fb6b12 Add GitHub Actions workflows for CI/CD and releases
- Add build.yml workflow for continuous integration
  - Builds web app on Ubuntu
  - Packages Electron app for Windows, macOS, and Linux
  - Uploads artifacts for each platform

- Add release.yml workflow with release-drafter integration
  - Automatically creates draft releases on push to main
  - Auto-calculates version based on PR labels (major/minor/patch)
  - Updates package.json version during build for proper installers
  - Uploads platform-specific installers to draft releases

- Add release-drafter.yml configuration
  - Organizes changelog by categories (Features, Bug Fixes, Maintenance)
  - Supports semantic versioning via PR labels

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-07 22:49:36 +01:00

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@v4
with:
node-version: '20'
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@v4
with:
node-version: '20'
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