name: Rust on: pull_request: jobs: build: runs-on: ${{ matrix.os }} strategy: matrix: os: [ubuntu-latest, windows-latest, macOS-latest] defaults: run: working-directory: ./safetensors steps: - uses: actions/checkout@v3 - name: Install Rust Stable uses: actions-rs/toolchain@v1 with: toolchain: stable components: rustfmt, clippy, llvm-tools-preview override: true - uses: Swatinem/rust-cache@v2 - name: Install cargo-llvm-cov for Ubuntu if: matrix.os == 'ubuntu-latest' run: cargo install cargo-llvm-cov - name: Install cargo-readme for Ubuntu if: matrix.os == 'ubuntu-latest' run: cargo install cargo-readme - name: Build run: cargo build --all-targets --verbose - name: Lint with Clippy run: cargo clippy --all-targets --all-features -- -D warnings - name: Run Tests run: cargo test --verbose - name: Run Audit # RUSTSEC-2021-0145 is criterion so only within benchmarks run: cargo audit -D warnings --ignore RUSTSEC-2021-0145 - name: Coverage report if: matrix.os == 'ubuntu-latest' run: cargo llvm-cov --release --lcov --output-path lcov.info - name: Upload to codecov.io if: matrix.os == 'ubuntu-latest' uses: codecov/codecov-action@v3 with: token: ${{ secrets.CODECOV_TOKEN }} # not required for public repos working-directory: ./safetensors fail_ci_if_error: true # Verify that Readme.md is up to date. - name: Make sure, Readme generated from lib.rs matches actual Readme if: matrix.os == 'ubuntu-latest' shell: bash run: cargo readme > must_match_readme.md && diff must_match_readme.md README.md && diff must_match_readme.md ../README.md