Skip to content

fix(desktop): bundle slim Windows GStreamer runtime #193

fix(desktop): bundle slim Windows GStreamer runtime

fix(desktop): bundle slim Windows GStreamer runtime #193

Workflow file for this run

name: Electron CI
on:
push:
branches: ["main"]
paths:
- "apps/desktop/**"
- "apps/web/**"
- "packages/**"
- "pnpm-lock.yaml"
- ".github/workflows/electron-ci.yml"
pull_request:
branches: ["main"]
paths:
- "apps/desktop/**"
- "apps/web/**"
- "packages/**"
- "pnpm-lock.yaml"
- ".github/workflows/electron-ci.yml"
workflow_dispatch:
permissions:
contents: read
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
build:
name: Build (${{ matrix.platform }})
strategy:
fail-fast: false
matrix:
include:
- platform: macos-26
- platform: ubuntu-22.04
- platform: windows-latest
runs-on: ${{ matrix.platform }}
timeout-minutes: 45
env:
APPLE_CERTIFICATE: ${{ secrets.APPLE_CERTIFICATE }}
APPLE_CERTIFICATE_PASSWORD: ${{ secrets.APPLE_CERTIFICATE_PASSWORD }}
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v4
with:
version: 10
- uses: actions/setup-node@v4
with:
node-version: lts/*
cache: pnpm
- uses: actions/setup-go@v5
with:
go-version-file: go.mod
cache: true
- name: Install JS dependencies
run: pnpm install --frozen-lockfile
- name: Typecheck desktop
run: pnpm --filter @memohai/desktop typecheck
- name: Prepare macOS code signing
id: mac-signing
if: ${{ startsWith(matrix.platform, 'macos-') && github.event_name != 'pull_request' && env.APPLE_CERTIFICATE != '' && env.APPLE_CERTIFICATE_PASSWORD != '' }}
shell: bash
run: |
set -euo pipefail
CSC_PATH="$RUNNER_TEMP/certificate.p12"
printf '%s' "$APPLE_CERTIFICATE" | base64 --decode > "$CSC_PATH"
echo "CSC_LINK=$CSC_PATH" >> "$GITHUB_ENV"
echo "CSC_KEY_PASSWORD=$APPLE_CERTIFICATE_PASSWORD" >> "$GITHUB_ENV"
echo "has_cert=true" >> "$GITHUB_OUTPUT"
- name: Build desktop (unpacked smoke)
env:
CSC_IDENTITY_AUTO_DISCOVERY: ${{ steps.mac-signing.outputs.has_cert == 'true' && 'true' || 'false' }}
run: pnpm --filter @memohai/desktop build:dir
- name: Verify macOS signature
if: ${{ startsWith(matrix.platform, 'macos-') && steps.mac-signing.outputs.has_cert == 'true' }}
shell: bash
run: |
set -euo pipefail
app_path="$(find apps/desktop/dist -name 'Memoh.app' -type d | head -n 1)"
if [[ -z "$app_path" ]]; then
echo "Memoh.app not found in apps/desktop/dist" >&2
exit 1
fi
codesign --verify --deep --strict --verbose=2 "$app_path"
codesign -dv --verbose=4 "$app_path" 2>&1 | grep -F "Developer ID Application"