fix(runtime): wire capabilities and session telemetry #99
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Package Zeus | |
| on: | |
| workflow_dispatch: | |
| push: | |
| branches: [main] | |
| pull_request: | |
| branches: [main] | |
| jobs: | |
| package: | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| - platform: macos-latest | |
| args: "" | |
| exe_suffix: "" | |
| - platform: ubuntu-22.04 | |
| args: "" | |
| exe_suffix: "" | |
| - platform: windows-latest | |
| args: "" | |
| exe_suffix: ".exe" | |
| runs-on: ${{ matrix.platform }} | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/setup-node@v4 | |
| with: | |
| node-version: 22 | |
| cache: npm | |
| - uses: dtolnay/rust-toolchain@stable | |
| - name: Cache Rust build artifacts | |
| uses: Swatinem/rust-cache@v2 | |
| with: | |
| workspaces: src-tauri -> target | |
| shared-key: ${{ matrix.platform }} | |
| - name: Install Linux webkit dependencies | |
| if: matrix.platform == 'ubuntu-22.04' | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev patchelf | |
| - name: Install frontend dependencies | |
| run: npm ci | |
| - name: Pre-warm Rust dependency build | |
| # On a fresh clone `cargo test`/`cargo build` would otherwise spend | |
| # ~3 minutes compiling every transitive dependency before doing any | |
| # work, blowing past the default 6h job timeout on the larger | |
| # matrices and producing flaky CI. Pre-fetch + pre-build the | |
| # dependency graph once with a generous timeout so subsequent | |
| # steps reuse the warm cache. | |
| working-directory: src-tauri | |
| shell: bash | |
| timeout-minutes: 30 | |
| run: | | |
| # Tauri's `externalBin: binaries/ddgs` makes config-load fail | |
| # when the sidecar file is missing — even though we made the | |
| # sidecar opt-in via ZEUS_BUNDLE_DDGS. Create an empty stub | |
| # for the current target so config validation passes. The | |
| # real sidecar (if any) is built and copied in by the | |
| # `sidecar:build` script when ZEUS_BUNDLE_DDGS=1; the stub | |
| # is never invoked at build time and only matters at | |
| # runtime, where webSearch's fallback chain (pip ddgs → | |
| # SearXNG → raw DDG) handles a missing/broken sidecar. | |
| target=$(rustc -vV | sed -n 's|host: ||p') | |
| mkdir -p binaries | |
| touch "binaries/ddgs-${target}${{ matrix.exe_suffix }}" | |
| cargo fetch | |
| cargo build --tests --locked | |
| - name: Test | |
| timeout-minutes: 30 | |
| run: npm run test | |
| - name: Build frontend | |
| run: npm run build | |
| - name: Package desktop app | |
| timeout-minutes: 60 | |
| run: npm run tauri:build -- ${{ matrix.args }} | |
| - name: Upload installers | |
| # Ship the MSI / NSIS bundles (and the raw zeus.exe + ddgs | |
| # sidecar) as workflow artifacts so they're downloadable from | |
| # the Actions run without cutting a release. A release just | |
| # promotes the same files to a versioned URL. Skipped for | |
| # PRs (artifacts are public anyway; keeps the artifact list | |
| # clean for forks). | |
| if: github.event_name != 'pull_request' | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: zeus-installers-${{ matrix.platform }} | |
| path: | | |
| src-tauri/target/release/zeus.exe | |
| src-tauri/target/release/ddgs.exe | |
| src-tauri/target/release/bundle/msi/*.msi | |
| src-tauri/target/release/bundle/nsis/*.exe | |
| if-no-files-found: warn | |
| retention-days: 30 |