Skip to content

Linux source smoke

Linux source smoke #3

name: Linux source smoke
on:
pull_request:
push:
branches: [main]
workflow_dispatch:
permissions:
contents: read
jobs:
linux-source:
name: Linux ${{ matrix.arch }} source
strategy:
fail-fast: false
matrix:
include:
- arch: x64
runner: ubuntu-22.04
- arch: arm64
runner: ubuntu-22.04-arm
runs-on: ${{ matrix.runner }}
timeout-minutes: 45
steps:
- name: Check out source
uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4
- name: Set up Node.js
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
with:
node-version: 24
cache: npm
- name: Restore verified built-in dependency cache
uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4
with:
path: |
resources/embedding-model
resources/officecli
resources/runtime/python
resources/runtime/uv
resources/runtime/node
resources/runtime/ffmpeg
resources/runtime/whisper
key: linux-source-${{ matrix.arch }}-${{ hashFiles('package-lock.json', 'resources/runtime/manifest.json', 'bin/runtime-gate.cjs', 'bin/packaged-resource-gate.cjs', 'scripts/fetch-embedding-model.mjs', 'scripts/fetch-officecli.cjs', 'scripts/fetch-ffmpeg.cjs', 'scripts/fetch-whisper.cjs') }}
- name: Install JavaScript dependencies
run: npm ci
- name: Install Xvfb when the runner image does not provide it
run: |
if ! command -v xvfb-run >/dev/null 2>&1; then
sudo apt-get update
sudo apt-get install --yes xvfb
fi
- name: Prepare and verify built-in Linux dependencies
run: node scripts/ensure-dev-dependencies.cjs
- name: Run Linux platform-native test lane
run: xvfb-run --auto-servernum npm run test:platform-native
- name: Type-check
run: node node_modules/typescript/bin/tsc --noEmit
- name: Run native inference and Electron GUI smoke
run: xvfb-run --auto-servernum npm run test:linux-source
- name: Run real Linux local transcription smoke
run: npm run test:linux-whisper
- name: Verify first-use Linux OCR runtime
run: npm run test:linux-ocr