# bun run ci on every push to main and every pull request into main: adapters, desktop version, tests, typecheck, # desktop i18n / typecheck / build, desktop boot check (headless Chromium), desktop Rust tests and clippy, scrub. Runs on the VDS runner (docs/desktop-release.md). # tools/ci.ts runs the steps as a task graph and the tests as parallel shards (CPU cores - 1, max 8) on the one # self-hosted runner, so a job matrix would only queue; CI=full makes it run the Rust steps on every push. # Publishes nothing: site/ is still published by Jenkins. name: ci on: push: branches: [main] pull_request: branches: [main] workflow_dispatch: env: BUN_VERSION: '1.4.0' CARGO_TERM_COLOR: never CARGO_INCREMENTAL: '0' CI: full jobs: ci: # runner label: ubuntu-22.04:docker://ghcr.io/catthehacker/ubuntu:act-22.04 runs-on: ubuntu-22.04 # the self-hosted runner only runs code from this repo: pull requests from forks are skipped if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository timeout-minutes: 60 steps: - uses: actions/checkout@v4 - name: System packages (Tauri on Linux) run: | sudo apt-get update -qq sudo apt-get install -y -qq --no-install-recommends libwebkit2gtk-4.1-dev libgtk-3-dev \ libayatana-appindicator3-dev librsvg2-dev libsoup-3.0-dev libjavascriptcoregtk-4.1-dev libssl-dev libxdo-dev \ build-essential curl unzip pkg-config >/dev/null - uses: actions/cache@v4 with: path: | ~/.bun/install/cache ~/.cargo/registry/index ~/.cargo/registry/cache ~/.cargo/git/db apps/desktop/src-tauri/target key: ci-${{ runner.os }}-${{ hashFiles('bun.lock', 'apps/desktop/src-tauri/Cargo.lock') }} restore-keys: ci-${{ runner.os }}- # recorded test durations (shard balance) and tsc's incremental build info - uses: actions/cache@v4 with: path: node_modules/.cache/storebound-ci key: ci-timings-${{ runner.os }}-${{ github.sha }} restore-keys: ci-timings-${{ runner.os }}- - name: Bun and Rust run: | P="${FORGEJO_PATH:-$GITHUB_PATH}" curl -fsSL https://bun.sh/install | bash -s "bun-v${BUN_VERSION}" >/dev/null echo "$HOME/.bun/bin" >> "$P" command -v rustup || curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --component clippy echo "$HOME/.cargo/bin" >> "$P" - name: Install run: | rustup component add clippy bun --version && cargo --version bun install --frozen-lockfile - name: Headless Chromium (desktop boot check) run: bunx playwright install --with-deps chromium - name: bun run ci run: bun run ci