name: Load Smoke # PR-tier liveness check. Verifies the k6 load harness still builds and a # single happy-path iteration runs against a freshly built server. # NO regression gate — that's the nightly workflow's job. on: pull_request: branches: [ main, dev ] paths: - 'tests/load/**' - 'src/**' - 'Cargo.toml' - 'Cargo.lock' - 'migrations/**' - '.github/workflows/load-smoke.yml' workflow_dispatch: env: CARGO_TERM_COLOR: always # `.cargo/config.toml` sets `-C target-cpu=native` for dev speed, but # GitHub-hosted runners are a heterogeneous pool — cached rlibs / proc- # macro dylibs baked with AVX-512 on one runner crash with SIGILL when # rustc dlopens them on a leaner one. Env RUSTFLAGS fully replaces the # config.toml value (they don't merge), so pinning to `x86-64-v3` here # (AVX2 baseline — every GHA runner has it) makes cached artifacts # portable across the pool without touching local dev. RUSTFLAGS: "-C target-cpu=x86-64-v3" jobs: smoke: name: k6 smoke (load harness) runs-on: ubuntu-latest timeout-minutes: 15 steps: - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@stable - uses: Swatinem/rust-cache@v2 with: # Bumped suffix busts any existing cache poisoned with native-CPU # ISA from a prior build (see RUSTFLAGS note above). shared-key: load-v2 - name: Install k6 uses: grafana/setup-k6-action@v1 - name: Build OxiCloud (debug) run: cargo build --bin oxicloud - name: Run smoke scenario run: bash tests/load/smoke.sh env: BUILD_TARGET: debug