name: CI on: push: paths: - '**' pull_request: paths: - '**' workflow_dispatch: jobs: guard: runs-on: ubuntu-latest defaults: run: working-directory: sdk steps: - uses: actions/checkout@v4 - name: Clean-room guard run: ./scripts/cleanroom_guard.sh test: runs-on: ubuntu-latest needs: guard defaults: run: working-directory: sdk steps: - uses: actions/checkout@v4 - name: Install system deps run: | sudo apt-get update sudo apt-get install -y libudev-dev pkg-config - name: Install Rust uses: dtolnay/rust-toolchain@stable - name: Run tests run: cargo test --workspace --all-targets hardware-smoke: runs-on: [self-hosted, linux, hid-lab] if: (github.ref == 'refs/heads/main' || github.event_name == 'workflow_dispatch') && vars.HARDWARE_SMOKE_ENABLED == '1' continue-on-error: true needs: test defaults: run: working-directory: sdk steps: - uses: actions/checkout@v4 - name: Install Rust uses: dtolnay/rust-toolchain@stable - name: Hardware smoke tests run: ./scripts/run_hardware_smoke.sh - name: Upload hardware smoke report if: always() uses: actions/upload-artifact@v4 with: name: hardware-smoke-report path: harness/reports/*.json