Skip to content

update workflow

update workflow #4

Workflow file for this run

name: CI/Release
on:
push:
branches:
- '**'
tags:
- 'v*'
permissions:
contents: write
env:
NODE_VERSION: '20'
jobs:
# ─── CI (runs on every push) ─────────────────────────────
ci:
name: Build & Test
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
- name: Install dependencies
run: npm ci
- name: Build CLI
run: npm run build
- name: Typecheck
run: npm run typecheck
# ─── CLI Release (v* tags only) ──────────────────────────
release-cli:
name: Release CLI
needs: ci
if: startsWith(github.ref, 'refs/tags/v')
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
- name: Install dependencies
run: npm ci
- name: Build CLI
run: npm run build
- name: Package tarball
run: npm pack
- name: Create GitHub Release
uses: softprops/action-gh-release@v2
with:
files: '*.tgz'
generate_release_notes: true
# ─── Desktop Release ───────────────────────────────────
release-desktop:
name: Desktop (${{ matrix.os }})
needs: ci
if: startsWith(github.ref, 'refs/tags/v')
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
include:
- os: windows-latest
build-flag: --win
- os: macos-latest
build-flag: --mac
- os: ubuntu-latest
build-flag: --linux
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
# 1. Build CLI first (desktop app bundles it via extraResources)
- name: Install CLI dependencies
run: npm ci
- name: Build CLI
run: npm run build
# 2. Build Desktop app
- name: Install Desktop dependencies
working-directory: desktop-app
run: npm ci
- name: Build Desktop (electron-vite)
working-directory: desktop-app
env:
CONVEX_URL: ${{ secrets.CONVEX_URL }}
run: npm run build
# 3. Package with electron-builder
- name: Package Desktop
working-directory: desktop-app
run: npx electron-builder ${{ matrix.build-flag }} --publish never
# 4. Upload installers to the release
- name: Upload to GitHub Release
uses: softprops/action-gh-release@v2
with:
files: |
desktop-app/dist/*.exe
desktop-app/dist/*.dmg
desktop-app/dist/*.AppImage
desktop-app/dist/*.deb
desktop-app/dist/*.zip
desktop-app/dist/*.tar.gz