fix(ci): increase test suite timeout to 45min #241
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: | |
| branches: [main, develop] | |
| pull_request: | |
| branches: [main] | |
| permissions: | |
| contents: read | |
| env: | |
| CARGO_TERM_COLOR: always | |
| RUST_BACKTRACE: 1 | |
| jobs: | |
| test: | |
| name: Test Suite | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 45 | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| - name: Install Rust toolchain | |
| uses: dtolnay/rust-toolchain@master | |
| with: | |
| toolchain: nightly-2026-02-09 | |
| components: rustfmt, clippy | |
| - name: Install protoc | |
| run: sudo apt-get update && sudo apt-get install -y protobuf-compiler | |
| - name: Cache cargo registry | |
| uses: actions/cache@v4 | |
| with: | |
| path: | | |
| ~/.cargo/registry | |
| ~/.cargo/git | |
| target | |
| key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} | |
| restore-keys: | | |
| ${{ runner.os }}-cargo- | |
| - name: Run tests | |
| run: cargo test --workspace --exclude arvak-python | |
| - name: Run tests (release mode) | |
| run: cargo test --workspace --exclude arvak-python --release | |
| fmt: | |
| name: Formatting | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 10 | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| - name: Install Rust toolchain | |
| uses: dtolnay/rust-toolchain@master | |
| with: | |
| toolchain: nightly-2026-02-09 | |
| components: rustfmt | |
| - name: Check formatting | |
| run: cargo fmt --all -- --check | |
| clippy: | |
| name: Clippy Lints | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 20 | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| - name: Install Rust toolchain | |
| uses: dtolnay/rust-toolchain@master | |
| with: | |
| toolchain: nightly-2026-02-09 | |
| components: clippy | |
| - name: Install protoc | |
| run: sudo apt-get update && sudo apt-get install -y protobuf-compiler | |
| - name: Cache cargo registry | |
| uses: actions/cache@v4 | |
| with: | |
| path: | | |
| ~/.cargo/registry | |
| ~/.cargo/git | |
| target | |
| key: ${{ runner.os }}-cargo-clippy-${{ hashFiles('**/Cargo.lock') }} | |
| restore-keys: | | |
| ${{ runner.os }}-cargo-clippy- | |
| - name: Run clippy | |
| run: > | |
| cargo clippy | |
| --workspace | |
| --exclude arvak-python | |
| --all-targets | |
| -- -D warnings -D clippy::all | |
| -W clippy::pedantic | |
| -A clippy::missing-errors-doc | |
| -A clippy::missing-panics-doc | |
| -A clippy::module-name-repetitions | |
| -A clippy::must-use-candidate | |
| -A clippy::return-self-not-must-use | |
| -A clippy::similar-names | |
| -A clippy::many-single-char-names | |
| -A clippy::cast-possible-truncation | |
| -A clippy::cast-precision-loss | |
| -A clippy::cast-sign-loss | |
| -A clippy::cast-possible-wrap | |
| -A clippy::doc-markdown | |
| -A clippy::wildcard-imports | |
| -A clippy::items-after-statements | |
| -A clippy::implicit-hasher | |
| -A clippy::unnecessary-debug-formatting | |
| -A clippy::struct-excessive-bools | |
| -A clippy::uninlined-format-args | |
| -A clippy::trivially-copy-pass-by-ref | |
| -A clippy::float-cmp | |
| -A clippy::unreadable-literal | |
| -A clippy::unused-self | |
| -A clippy::match-same-arms | |
| -A clippy::needless-pass-by-value | |
| -A clippy::format-push-string | |
| -A clippy::missing-fields-in-debug | |
| -A clippy::too-many-lines | |
| -A clippy::no-effect-underscore-binding | |
| -A clippy::unnecessary-wraps | |
| -A clippy::only-used-in-recursion | |
| -A clippy::self-only-used-in-recursion | |
| -A clippy::needless-continue | |
| -A clippy::redundant-else | |
| -A clippy::option-if-let-else | |
| -A clippy::if-not-else | |
| -A clippy::manual-let-else | |
| -A clippy::single-match-else | |
| -A clippy::used-underscore-binding | |
| -A clippy::default-trait-access | |
| -A clippy::non-std-lazy-statics | |
| -A clippy::unnecessary-sort-by | |
| -A clippy::type-complexity | |
| -A clippy::too-many-arguments | |
| -A clippy::unused-async | |
| -A clippy::ref-option | |
| -A clippy::semicolon-if-nothing-returned | |
| build: | |
| name: Build | |
| runs-on: ${{ matrix.os }} | |
| timeout-minutes: 30 | |
| strategy: | |
| matrix: | |
| os: [ubuntu-latest, macos-latest] | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| - name: Install Rust toolchain | |
| uses: dtolnay/rust-toolchain@master | |
| with: | |
| toolchain: nightly-2026-02-09 | |
| - name: Install protoc (Linux) | |
| if: runner.os == 'Linux' | |
| run: sudo apt-get update && sudo apt-get install -y protobuf-compiler | |
| - name: Install protoc (macOS) | |
| if: runner.os == 'macOS' | |
| run: brew install protobuf | |
| - name: Cache cargo registry | |
| uses: actions/cache@v4 | |
| with: | |
| path: | | |
| ~/.cargo/registry | |
| ~/.cargo/git | |
| target | |
| key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} | |
| restore-keys: | | |
| ${{ runner.os }}-cargo- | |
| - name: Build | |
| run: cargo build --workspace --exclude arvak-python | |
| - name: Build release | |
| run: cargo build --workspace --exclude arvak-python --release | |
| docs: | |
| name: Documentation | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 15 | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| - name: Install Rust toolchain | |
| uses: dtolnay/rust-toolchain@master | |
| with: | |
| toolchain: nightly-2026-02-09 | |
| - name: Install protoc | |
| run: sudo apt-get update && sudo apt-get install -y protobuf-compiler | |
| - name: Check documentation | |
| run: cargo doc --workspace --exclude arvak-python --no-deps | |
| python-bindings: | |
| name: Python Bindings | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 20 | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| - name: Install Rust toolchain | |
| uses: dtolnay/rust-toolchain@master | |
| with: | |
| toolchain: nightly-2026-02-09 | |
| components: rustfmt, clippy | |
| - name: Install protoc | |
| run: sudo apt-get update && sudo apt-get install -y protobuf-compiler | |
| - name: Set up Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: '3.11' | |
| - name: Install maturin | |
| run: pip install maturin | |
| - name: Build Python bindings | |
| run: cd crates/arvak-python && maturin build | |
| security: | |
| name: Security Audit | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 15 | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| - name: Install Rust toolchain | |
| uses: dtolnay/rust-toolchain@master | |
| with: | |
| toolchain: nightly-2026-02-09 | |
| - name: Cache cargo-audit | |
| uses: actions/cache@v4 | |
| with: | |
| path: ~/.cargo/bin/cargo-audit | |
| key: cargo-audit-0.22.1-${{ runner.os }} | |
| - name: Install cargo-audit | |
| run: | | |
| if ! command -v cargo-audit &> /dev/null; then | |
| cargo install cargo-audit --version 0.22.1 --locked | |
| fi | |
| cargo-audit --version | |
| - name: Run security audit | |
| id: audit | |
| run: | | |
| cargo audit 2>&1 | tee audit-output.txt | |
| EXIT_CODE=${PIPESTATUS[0]} | |
| if [ $EXIT_CODE -ne 0 ]; then | |
| echo "⚠️ Security audit found issues (exit code: $EXIT_CODE)" >> $GITHUB_STEP_SUMMARY | |
| echo '```' >> $GITHUB_STEP_SUMMARY | |
| cat audit-output.txt >> $GITHUB_STEP_SUMMARY | |
| echo '```' >> $GITHUB_STEP_SUMMARY | |
| fi | |
| exit $EXIT_CODE |