Merge pull request #894 from DevScoopee/Add-offline-first-AI-mode-usi… #902
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: CI | |
| on: | |
| push: | |
| pull_request: | |
| workflow_call: | |
| jobs: | |
| fmt: | |
| name: Rustfmt | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: dtolnay/rust-toolchain@stable | |
| with: | |
| components: rustfmt | |
| - name: Check formatting | |
| run: cargo fmt --all --check | |
| msrv: | |
| name: MSRV (Rust 1.80) | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: dtolnay/rust-toolchain@1.80.0 | |
| - name: Install system dependencies | |
| run: sudo apt-get update && sudo apt-get install -y libudev-dev | |
| - name: Verify compilation on Rust 1.80 MSRV | |
| run: cargo check --locked --workspace | |
| deny: | |
| name: Cargo Deny | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: dtolnay/rust-toolchain@stable | |
| - name: Install cargo-deny | |
| uses: EmbarkStudios/cargo-deny-action@v2 | |
| with: | |
| command: check | |
| arguments: --all-features | |
| doctests: | |
| name: Documentation Tests | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: dtolnay/rust-toolchain@stable | |
| - name: Install system dependencies | |
| run: sudo apt-get update && sudo apt-get install -y libudev-dev | |
| - name: Run doctests | |
| run: cargo test --doc --locked | |
| build-and-test: | |
| name: Build and Test | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: dtolnay/rust-toolchain@stable | |
| - name: Install system dependencies | |
| run: sudo apt-get update && sudo apt-get install -y libudev-dev | |
| - name: Build | |
| run: cargo build --locked | |
| - name: CLI JSON contract stability | |
| run: cargo test --test json_contract_stability --locked | |
| - name: Build and Test | |
| run: cargo test --locked -- --test-threads=1 | |
| clippy: | |
| name: Clippy Lint | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: dtolnay/rust-toolchain@stable | |
| with: | |
| components: clippy | |
| - name: Install system dependencies | |
| run: sudo apt-get update && sudo apt-get install -y libudev-dev | |
| - name: Run Clippy | |
| run: cargo clippy --all-features --locked -- -D warnings | |
| smoke: | |
| name: CLI Smoke Tests (Linux) | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: dtolnay/rust-toolchain@stable | |
| - name: Install system dependencies | |
| run: sudo apt-get update && sudo apt-get install -y libudev-dev | |
| - name: Build | |
| run: cargo build --locked | |
| - name: Cross-platform CLI Integration Tests | |
| run: cargo test --test cli_cross_platform --locked | |
| - name: Rust smoke tests | |
| run: cargo test --test cli_smoke --locked | |
| - name: Shell smoke script | |
| run: bash scripts/e2e-smoke.sh | |
| cli-macos: | |
| name: macOS CLI Tests | |
| runs-on: macos-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: dtolnay/rust-toolchain@stable | |
| - name: Build CLI | |
| run: cargo build --locked | |
| - name: Cross-platform CLI Integration Tests | |
| run: cargo test --test cli_cross_platform --locked | |
| - name: Rust smoke tests | |
| run: cargo test --test cli_smoke --locked | |
| cli-windows: | |
| name: Windows CLI Tests | |
| runs-on: windows-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: dtolnay/rust-toolchain@stable | |
| - name: Build CLI | |
| run: cargo build --locked | |
| - name: Cross-platform CLI Integration Tests | |
| run: cargo test --test cli_cross_platform --locked | |
| - name: Rust smoke tests | |
| run: cargo test --test cli_smoke --locked | |
| # Required on every push/PR: verifies the Windows binary starts and the | |
| # core --help / doctor surface behaves. Mirrors the installer-focused | |
| # release job in installer-tests.yml. | |
| - name: Windows binary startup smoke tests | |
| shell: pwsh | |
| run: pwsh -NoProfile -ExecutionPolicy Bypass -File tests/installer/windows_smoke.ps1 -Binary "target\debug\starforge.exe" | |
| - name: Upload Windows smoke logs | |
| if: failure() | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: windows-cli-smoke-logs | |
| path: windows-smoke.log | |
| retention-days: 14 | |
| if-no-files-found: ignore |