Merge pull request #703 from rowboatlabs/ci-cd

Improve apps/x CI coverage
This commit is contained in:
Ramnique Singh 2026-07-09 11:55:56 +05:30 committed by GitHub
commit 61344effea
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 47 additions and 21 deletions

View file

@ -1,19 +1,14 @@
name: apps/x tests name: rowboat
on: on:
pull_request: pull_request:
paths:
- "apps/x/**"
- ".github/workflows/x-tests.yml"
push: push:
branches: [main] branches: [main]
paths:
- "apps/x/**"
- ".github/workflows/x-tests.yml"
workflow_dispatch: workflow_dispatch:
jobs: jobs:
test: apps-x-vitest:
name: apps/x Vitest suites
runs-on: ubuntu-latest runs-on: ubuntu-latest
defaults: defaults:
run: run:
@ -36,5 +31,33 @@ jobs:
# Builds @x/shared (core/renderer tests import its dist), then runs # Builds @x/shared (core/renderer tests import its dist), then runs
# the shared, core, and renderer vitest suites in order. # the shared, core, and renderer vitest suites in order.
- name: Run tests - name: Run apps/x Vitest suites
run: npm test run: npm test
apps-x-electron-package:
name: apps/x Electron package smoke test
runs-on: ubuntu-latest
defaults:
run:
working-directory: apps/x
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v4
with:
version: 10
- uses: actions/setup-node@v4
with:
node-version: 24.15.0
cache: pnpm
cache-dependency-path: apps/x/pnpm-lock.yaml
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Package Electron app without signing
env:
ROWBOAT_SKIP_CODE_SIGNING: "1"
run: npm run package
working-directory: apps/x/apps/main

View file

@ -10,6 +10,7 @@ const pkg = require('./package.json');
// but CI sets ROWBOAT_SKIP_PACMAN=1 to disable it explicitly — GitHub runners are // but CI sets ROWBOAT_SKIP_PACMAN=1 to disable it explicitly — GitHub runners are
// Ubuntu and shouldn't attempt to ship an Arch package. // Ubuntu and shouldn't attempt to ship an Arch package.
const SKIP_PACMAN = process.env.ROWBOAT_SKIP_PACMAN === '1'; const SKIP_PACMAN = process.env.ROWBOAT_SKIP_PACMAN === '1';
const SKIP_CODE_SIGNING = process.env.ROWBOAT_SKIP_CODE_SIGNING === '1';
// Stage the ACP coding-adapters (@agentclientprotocol/*-acp) and their full // Stage the ACP coding-adapters (@agentclientprotocol/*-acp) and their full
// production dependency closure into the packaged app. // production dependency closure into the packaged app.
@ -201,18 +202,20 @@ module.exports = {
NSAudioCaptureUsageDescription: 'Rowboat needs access to system audio to transcribe meetings from other apps (Zoom, Meet, etc.)', NSAudioCaptureUsageDescription: 'Rowboat needs access to system audio to transcribe meetings from other apps (Zoom, Meet, etc.)',
NSCameraUsageDescription: 'Rowboat uses your camera in video chat mode so the assistant can see you and give feedback (e.g. pitch practice).', NSCameraUsageDescription: 'Rowboat uses your camera in video chat mode so the assistant can see you and give feedback (e.g. pitch practice).',
}, },
osxSign: { ...(SKIP_CODE_SIGNING ? {} : {
batchCodesignCalls: true, osxSign: {
optionsForFile: () => ({ batchCodesignCalls: true,
entitlements: path.join(__dirname, 'entitlements.plist'), optionsForFile: () => ({
'entitlements-inherit': path.join(__dirname, 'entitlements.plist'), entitlements: path.join(__dirname, 'entitlements.plist'),
}), 'entitlements-inherit': path.join(__dirname, 'entitlements.plist'),
}, }),
osxNotarize: { },
appleId: process.env.APPLE_ID, osxNotarize: {
appleIdPassword: process.env.APPLE_PASSWORD, appleId: process.env.APPLE_ID,
teamId: process.env.APPLE_TEAM_ID appleIdPassword: process.env.APPLE_PASSWORD,
}, teamId: process.env.APPLE_TEAM_ID
},
}),
// Since we bundle the main process with esbuild, we don't need the workspace // Since we bundle the main process with esbuild, we don't need the workspace
// node_modules. These settings prevent Forge's dependency walker (flora-colossus) // node_modules. These settings prevent Forge's dependency walker (flora-colossus)
// from trying to analyze/copy node_modules, which fails with pnpm's symlinked // from trying to analyze/copy node_modules, which fails with pnpm's symlinked