name: CI on: pull_request: push: branches: [main] permissions: contents: read jobs: frontend: name: Frontend checks runs-on: ubuntu-22.04 steps: - uses: actions/checkout@v7 with: submodules: recursive - uses: actions/setup-node@v6 with: node-version: 22 cache: npm - run: npm ci - run: node --test scripts/*.node-test.js - run: npm test -- --run - run: npm run build desktop: name: Desktop checks (${{ matrix.target }}) strategy: fail-fast: false matrix: include: - os: macos-latest target: aarch64-apple-darwin - os: windows-latest target: x86_64-pc-windows-msvc - os: ubuntu-22.04 target: x86_64-unknown-linux-gnu runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v7 with: submodules: recursive - uses: actions/setup-node@v6 with: node-version: 22 cache: npm - uses: dtolnay/rust-toolchain@stable with: targets: ${{ matrix.target }} - name: Install Linux dependencies if: runner.os == 'Linux' run: | sudo apt-get update sudo apt-get install -y \ libwebkit2gtk-4.1-dev \ libappindicator3-dev \ librsvg2-dev \ patchelf \ libdbus-1-dev \ pkg-config - run: npm ci - name: Test Rust backend if: runner.os != 'Windows' working-directory: src-tauri run: cargo test --all-targets --target ${{ matrix.target }} - name: Test Rust backend if: runner.os == 'Windows' working-directory: src-tauri run: | cargo test --tests --target ${{ matrix.target }} cargo test --lib --no-run --target ${{ matrix.target }} - name: Provision locked engines if: runner.os != 'macOS' run: node scripts/provision-engines.js --target ${{ matrix.target }} - name: Stage and verify engines run: | node scripts/stage-engines.js --target ${{ matrix.target }} node scripts/verify-binaries.js --staged --target ${{ matrix.target }}