Skip to content

chore(deps-dev): bump the dev-dependencies group across 1 directory with 6 updates #89

chore(deps-dev): bump the dev-dependencies group across 1 directory with 6 updates

chore(deps-dev): bump the dev-dependencies group across 1 directory with 6 updates #89

Workflow file for this run

name: Release Desktop
# Builds the desktop client into downloadable, unsigned zip archives for each OS
# and attaches them to the GitHub Release on version tags (Issue #341).
#
# Triggers:
# - push tag `v*` → build all 3 OS zips, then a single publish job attaches
# them to the tag's GitHub Release
# - pull_request → build all 3 OS zips as workflow artifacts (no publish),
# so the release path is verified on the PR that changes it
# - workflow_dispatch → manual build (artifacts only), for ad-hoc verification
on:
push:
tags: ['v*']
pull_request:
branches: [develop]
paths:
- 'apps/desktop/**'
- '.github/workflows/release.yml'
- 'pnpm-lock.yaml'
workflow_dispatch:
# Least privilege by default; only the publish job widens to write Releases.
permissions:
contents: read
jobs:
build:
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6.1.0
- uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271 # v6.0.9
- uses: actions/setup-node@249970729cb0ef3589644e2896645e5dc5ba9c38 # v6.5.0
with:
node-version: 22
cache: pnpm
- run: pnpm install --frozen-lockfile
# Build the desktop package AND its workspace deps (core/shared/runtime-node)
# via turbo's dependency graph, so the desktop tsc build resolves their
# types — a desktop-only build can't, since the spine isn't prebuilt on CI.
- name: Build desktop and workspace deps
run: pnpm exec turbo build --filter=@frontagent/desktop
# electron-builder produces the per-platform zip (electron-builder.yml
# target: zip). --publish never: assets are attached by the publish job.
- name: Build desktop zip
run: pnpm --filter @frontagent/desktop run release
- name: Upload zip artifact
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: desktop-${{ matrix.os }}
path: apps/desktop/release/*.zip
if-no-files-found: error
publish:
# A single job attaches every platform's zip to the Release, so the three
# matrix builds never race to create/update the same Release. Tags only.
needs: build
if: startsWith(github.ref, 'refs/tags/')
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- name: Download all platform zips
uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0
with:
path: dist-zips
merge-multiple: true
- name: Attach zips to GitHub Release
uses: softprops/action-gh-release@3d0d9888cb7fd7b750713d6e236d1fcb99157228 # v3.0.2
with:
files: dist-zips/*.zip